driftctl/scripts/build.sh

56 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# This script builds the application from source for multiple platforms.
# Inspired from hashicorp/terraform build script
# https://github.com/hashicorp/terraform/blob/83e6703bf77f60660db4465ef50d30c633f800f1/scripts/build.sh
set -eo pipefail
if ! which goreleaser >/dev/null; then
echo "+ Installing goreleaser..."
go install github.com/goreleaser/goreleaser@v1.1.0
fi
export ENV="${ENV:-dev}"
SINGLE_TARGET="${SINGLE_TARGET:-false}"
# Check configuration
goreleaser check
FLAGS=""
FLAGS+="--rm-dist "
FLAGS+="--parallelism 2 "
CMD="release"
if [ "$SINGLE_TARGET" == "true" ]; then
CMD="build"
FLAGS+="--single-target "
fi
# Only CI system should publish artifacts
# We may not want to sign artifacts in dev environments
if [ "$CI" != true ] && [ "$CMD" == "release" ]; then
FLAGS+="--skip-announce "
FLAGS+="--skip-publish "
FLAGS+="--skip-sign "
fi
if [ "$CI" != true ]; then
FLAGS+="--snapshot "
fi
if [ "$CI" == true ] && [ "$CMD" == "release" ]; then
echo "Generating changelog..."
./scripts/changelog.sh > CHANGELOG.md
cat CHANGELOG.md
FLAGS+="--release-notes CHANGELOG.md "
fi
CMD="goreleaser ${CMD} ${FLAGS}"
echo "+ Building using goreleaser"
echo "+ ENV=${ENV}"
echo "+ CMD=${CMD}"
$CMD