ea1e4aa52d
Replace bindata packages with stdlib go:embed. Modernize some uiserver code with newer interfaces introduced in go 1.16 (mainly working with fs.File instead of http.File. Remove steps that are no longer used from our build files. Add Github Action to detect differences in agent/uiserver/dist and verify that the files are correct (by compiling UI assets and comparing contents).
152 lines
4.4 KiB
Bash
Executable file
152 lines
4.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
readonly SCRIPT_NAME="$(basename ${BASH_SOURCE[0]})"
|
|
readonly SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")"
|
|
readonly SOURCE_DIR="$(dirname "$(dirname "${SCRIPT_DIR}")")"
|
|
readonly FN_DIR="$(dirname "${SCRIPT_DIR}")/functions"
|
|
|
|
source "${SCRIPT_DIR}/functions.sh"
|
|
|
|
function usage {
|
|
cat <<-EOF
|
|
Usage: ${SCRIPT_NAME} [<options ...>]
|
|
|
|
Description:
|
|
|
|
This script will do a full release build of Consul. Building each component
|
|
is done within a docker container. In addition to building Consul this
|
|
script will do a few more things.
|
|
|
|
* Update version/version*.go files
|
|
* Update CHANGELOG.md to put things into release mode
|
|
* Create a release commit. It changes in the commit include the CHANGELOG.md
|
|
version files.
|
|
* Tag the release
|
|
* Generate the SHA256SUMS file for the binaries
|
|
* Sign the SHA256SUMS file with a GPG key
|
|
|
|
|
|
Options:
|
|
-s | --source DIR Path to source to build.
|
|
Defaults to "${SOURCE_DIR}"
|
|
|
|
-t | --tag BOOL Whether to add a release commit and tag the build.
|
|
This also controls whether we put the tree into
|
|
release mode
|
|
Defaults to 1.
|
|
|
|
-b | --build BOOL Whether to perform the build of the ui's and
|
|
binaries. Defaults to 1.
|
|
|
|
-S | --sign BOOL Whether to sign the generated SHA256SUMS file.
|
|
Defaults to 1.
|
|
|
|
-g | --gpg-key KEY Alternative GPG key to use for signing operations.
|
|
Defaults to ${HASHICORP_GPG_KEY}
|
|
|
|
-v | --version VERSION The version of Consul to be built. If not specified
|
|
the version will be parsed from the source.
|
|
|
|
-d | --date DATE The release date. Defaults to today.
|
|
|
|
-r | --release STRING The prerelease version. Defaults to an empty pre-release.
|
|
|
|
-h | --help Print this help text.
|
|
EOF
|
|
}
|
|
|
|
function err_usage {
|
|
err "$1"
|
|
err ""
|
|
err "$(usage)"
|
|
}
|
|
|
|
function ensure_arg {
|
|
if test -z "$2"
|
|
then
|
|
err_usage "ERROR: option $1 requires an argument"
|
|
return 1
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
function main {
|
|
declare sdir="${SOURCE_DIR}"
|
|
declare -i do_tag=1
|
|
declare -i do_build=1
|
|
declare -i do_sign=1
|
|
declare gpg_key="${HASHICORP_GPG_KEY}"
|
|
declare version=""
|
|
declare release_ver=""
|
|
declare release_date=$(date +"%B %d, %Y")
|
|
|
|
while test $# -gt 0
|
|
do
|
|
case "$1" in
|
|
-h | --help )
|
|
usage
|
|
return 0
|
|
;;
|
|
-s | --source )
|
|
ensure_arg "-s/--source" "$2" || return 1
|
|
|
|
if ! test -d "$2"
|
|
then
|
|
err_usage "ERROR: '$2' is not a directory and not suitable for the value of -s/--source"
|
|
return 1
|
|
fi
|
|
|
|
sdir="$2"
|
|
shift 2
|
|
;;
|
|
-t | --tag )
|
|
ensure_arg "-t/--tag" "$2" || return 1
|
|
do_tag="$2"
|
|
shift 2
|
|
;;
|
|
-b | --build )
|
|
ensure_arg "-b/--build" "$2" || return 1
|
|
do_build="$2"
|
|
shift 2
|
|
;;
|
|
-S | --sign )
|
|
ensure_arg "-s/--sign" "$2" || return 1
|
|
do_sign="$2"
|
|
shift 2
|
|
;;
|
|
-g | --gpg-key )
|
|
ensure_arg "-g/--gpg-key" "$2" || return 1
|
|
gpg_key="$2"
|
|
shift 2
|
|
;;
|
|
-v | --version )
|
|
ensure_arg "-v/--version" "$2" || return 1
|
|
version="$2"
|
|
shift 2
|
|
;;
|
|
-d | --date)
|
|
ensure_arg "-d/--date" "$2" || return 1
|
|
release_date="$2"
|
|
shift 2
|
|
;;
|
|
-r | --release)
|
|
ensure_arg "-r/--release" "$2" || return 1
|
|
release_ver="$2"
|
|
shift 2
|
|
;;
|
|
*)
|
|
err_usage "ERROR: Unknown argument: '$1'"
|
|
return 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
build_release "${sdir}" "${do_tag}" "${do_build}" "${do_sign}" "${version}" "${release_date}" "${release_ver}" "${gpg_key}"
|
|
return $?
|
|
}
|
|
|
|
main "$@"
|
|
exit $?
|
|
|