Browse Source

Allow for building pre-releases/rcs/betas

pull/4245/head
Matt Keeler 7 years ago
parent
commit
12d14f6c54
  1. 8
      GNUmakefile
  2. 53
      build-support/functions/10-util.sh
  3. 12
      build-support/functions/30-release.sh
  4. 11
      build-support/scripts/release.sh

8
GNUmakefile

@ -63,6 +63,12 @@ else
DIST_DATE_ARG=
endif
ifdef DIST_PRERELEASE
DIST_REL_ARG=-r "$(DIST_PRERELEASE)"
else
DIST_REL_ARG=
endif
PUB_GIT?=1
PUB_WEBSITE?=1
@ -117,7 +123,7 @@ linux:
# dist builds binaries for all platforms and packages them for distribution
dist:
@$(SHELL) $(CURDIR)/build-support/scripts/release.sh -t '$(DIST_TAG)' -b '$(DIST_BUILD)' -S '$(DIST_SIGN)' $(DIST_VERSION_ARG) $(DIST_DATE_ARG)
@$(SHELL) $(CURDIR)/build-support/scripts/release.sh -t '$(DIST_TAG)' -b '$(DIST_BUILD)' -S '$(DIST_SIGN)' $(DIST_VERSION_ARG) $(DIST_DATE_ARG) $(DIST_REL_ARG)
publish:
@$(SHELL) $(CURDIR)/build-support/scripts/publish.sh $(PUB_GIT_ARG) $(PUB_WEBSITE_ARG)

53
build-support/functions/10-util.sh

@ -94,6 +94,7 @@ function parse_version {
# $1 - Path to the top level Consul source
# $2 - boolean value for whether the release version should be parsed from the source
# $3 - boolean whether to use GIT_DESCRIBE and GIT_COMMIT environment variables
# $4 - boolean whether to omit the version part of the version string. (optional)
#
# Return:
# 0 - success (will write the version to stdout)
@ -114,6 +115,7 @@ function parse_version {
local include_release="$2"
local use_git_env="$3"
local omit_version="$4"
local git_version=""
local git_commit=""
@ -152,18 +154,17 @@ function parse_version {
done
done
local version="${version_main}"
# override the version from source with the value of the GIT_DESCRIBE env var if present
if test -n "${git_version}"
then
version="${git_version}"
else
version="${version_main}"
fi
local rel_ver=""
if is_set "${include_release}"
then
# Get the release version out of the source file
# Default to pre-release from the source
rel_ver="${release_main}"
# When no GIT_DESCRIBE env var is present and no release is in the source then we
@ -174,21 +175,28 @@ function parse_version {
fi
# Add the release to the version
if test -n "${rel_ver}"
if test -n "${rel_ver}" -a -n "${git_commit}"
then
version="${version}-${rel_ver}"
# add the git commit to the version
if test -n "${git_commit}"
then
version="${version} (${git_commit})"
fi
rel_ver="${rel_ver} (${git_commit})"
fi
fi
# Output the version
echo "$version" | tr -d "'"
return 0
if test -n "${rel_ver}"
then
if is_set "${omit_version}"
then
echo "${rel_ver}" | tr -d "'"
else
echo "${version}-${rel_ver}" | tr -d "'"
fi
return 0
elif ! is_set "${omit_version}"
then
echo "${version}" | tr -d "'"
return 0
else
return 1
fi
}
function get_version {
@ -624,6 +632,7 @@ function set_release_mode {
# $1 - Path to top level Consul source
# $2 - The version of the release
# $3 - The release date
# $4 - The pre-release version
#
#
# Returns:
@ -651,11 +660,17 @@ function set_release_mode {
rel_date="$3"
fi
status_stage "==> Updating CHANGELOG.md with release info: ${vers} (${rel_date})"
set_changelog_version "${sdir}" "${vers}" "${rel_date}" || return 1
local changelog_vers="${vers}"
if test -n "$4"
then
changelog_vers="${vers}-$4"
fi
status_stage "==> Updating CHANGELOG.md with release info: ${changelog_vers} (${rel_date})"
set_changelog_version "${sdir}" "${changelog_vers}" "${rel_date}" || return 1
status_stage "==> Updating version/version.go"
if ! update_version "${sdir}/version/version.go" "${vers}"
if ! update_version "${sdir}/version/version.go" "${vers}" "$4"
then
unset_changelog_version "${sdir}"
return 1

12
build-support/functions/30-release.sh

@ -349,7 +349,8 @@ function build_release {
# $4 - boolean whether to generate the sha256 sums
# $5 - version to set within version.go and the changelog
# $6 - release date to set within the changelog
# $7 - alternative gpg key to use for signing operations (optional)
# $7 - release version to set
# $8 - alternative gpg key to use for signing operations (optional)
#
# Returns:
# 0 - success
@ -361,7 +362,8 @@ function build_release {
debug "Sign Release: $4"
debug "Version: $5"
debug "Release Date: $6"
debug "GPG Key: $7"
debug "Release Vers: $7"
debug "GPG Key: $8"
if ! test -d "$1"
then
@ -379,7 +381,7 @@ function build_release {
local do_tag="$2"
local do_build="$3"
local do_sha256="$4"
local gpg_key="$7"
local gpg_key="$8"
if test -z "${gpg_key}"
then
@ -403,13 +405,15 @@ function build_release {
local set_vers="$5"
local set_date="$6"
local set_release="$7"
if test -z "${set_vers}"
then
set_vers=$(get_version "${sdir}" false false)
set_release=$(parse_version "${sdir}" true false true)
fi
if is_set "${do_tag}" && ! set_release_mode "${sdir}" "${set_vers}" "${set_date}"
if is_set "${do_tag}" && ! set_release_mode "${sdir}" "${set_vers}" "${set_date}" "${set_release}"
then
err "ERROR: Failed to put source into release mode"
return 1

11
build-support/scripts/release.sh

@ -53,6 +53,8 @@ Options:
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
@ -81,6 +83,7 @@ function main {
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
@ -128,11 +131,15 @@ function main {
shift 2
;;
-d | --date)
echo "$2"
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
@ -140,7 +147,7 @@ function main {
esac
done
build_release "${sdir}" "${do_tag}" "${do_build}" "${do_sign}" "${version}" "${release_date}" "${gpg_key}"
build_release "${sdir}" "${do_tag}" "${do_build}" "${do_sign}" "${version}" "${release_date}" "${release_ver}" "${gpg_key}"
return $?
}

Loading…
Cancel
Save