You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2020/12/03 19:41:05 UTC
[hbase] 01/02: Release script changes
This is an automated email from the ASF dual-hosted git repository.
stack pushed a commit to branch HBASE-25354
in repository https://gitbox.apache.org/repos/asf/hbase.git
commit 178f668d730d7b61311f8300d2d395f387652ad9
Author: stack <st...@apache.org>
AuthorDate: Tue Dec 1 17:42:46 2020 -0800
Release script changes
---
dev-support/create-release/do-release.sh | 13 +++++++----
dev-support/create-release/release-util.sh | 35 +++++++++++++++++++++++-------
2 files changed, 36 insertions(+), 12 deletions(-)
diff --git a/dev-support/create-release/do-release.sh b/dev-support/create-release/do-release.sh
index 9500801..4f332ce 100755
--- a/dev-support/create-release/do-release.sh
+++ b/dev-support/create-release/do-release.sh
@@ -17,6 +17,10 @@
# limitations under the License.
#
+# Make a tmp dir into which we put files cleaned-up on exit.
+TMPDIR=$(mktemp -d)
+trap "rm -rf $TMPDIR" EXIT
+
set -e
# Use the adjacent do-release-docker.sh instead, if you can.
# Otherwise, this runs core of the release creation.
@@ -88,13 +92,14 @@ fi
GPG_TTY="$(tty)"
export GPG_TTY
-echo "Testing gpg signing."
-echo "foo" > gpg_test.txt
-if ! "${GPG}" "${GPG_ARGS[@]}" --detach --armor --sign gpg_test.txt ; then
+gpg_test_file="${TMPDIR}/gpg_test.$$.txt"
+echo "Testing gpg signing ${GPG} ${GPG_ARGS[@]} --detach --armor --sign ${gpg_test_file}"
+echo "foo" > "${gpg_test_file}"
+if ! "${GPG}" "${GPG_ARGS[@]}" --detach --armor --sign "${gpg_test_file}" ; then
gpg_agent_help
fi
# In --batch mode we have to be explicit about what we are verifying
-if ! "${GPG}" "${GPG_ARGS[@]}" --verify gpg_test.txt.asc gpg_test.txt ; then
+if ! "${GPG}" "${GPG_ARGS[@]}" --verify "${gpg_test_file}.asc" "${gpg_test_file}" ; then
gpg_agent_help
fi
diff --git a/dev-support/create-release/release-util.sh b/dev-support/create-release/release-util.sh
index 64654bb..b3cd408 100755
--- a/dev-support/create-release/release-util.sh
+++ b/dev-support/create-release/release-util.sh
@@ -26,7 +26,7 @@ fi
# Maven Profiles for publishing snapshots and release to Maven Central and Dist
PUBLISH_PROFILES=("-P" "apache-release,release")
-set -e
+set -xe
function error {
echo "Error: $*" >&2
@@ -501,6 +501,14 @@ function update_releasenotes {
local jira_project
local timing_token
timing_token="$(start_step)"
+ changelog="CHANGELOG.${jira_fix_version}.md"
+ releasenotes="RELEASENOTES.${jira_fix_version}.md"
+ if [ -f ${changelog} ]; then
+ rm ${changelog}
+ fi
+ if [ -f ${releasenotes} ]; then
+ rm ${releasenotes}
+ fi
jira_project="$(get_jira_name "$(basename "$project_dir")")"
"${YETUS_HOME}/bin/releasedocmaker" -p "${jira_project}" --fileversions -v "${jira_fix_version}" \
-l --sortorder=newer --skip-credits
@@ -517,24 +525,35 @@ function update_releasenotes {
"${project_dir}/RELEASENOTES.md" || true
fi
+ # Yetus will not generate CHANGES if no JIRAs fixed against the release version
+ # (Could happen if a release were bungled such that we had to make a new one
+ # without changes)
+ if [ ! -f "${changelog}" ]; then
+ echo -e "## Release ${jira_fix_version} - Unreleased (as of `date`)\nNo changes\n" > "${changelog}"
+ fi
+ if [ ! -f "${releasenotes}" ]; then
+ echo -e "# hbase ${jira_fix_version} Release Notes\nNo changes\n" > "${releasenotes}"
+ fi
+
# The releasedocmaker call above generates RELEASENOTES.X.X.X.md and CHANGELOG.X.X.X.md.
if [ -f "${project_dir}/CHANGES.md" ]; then
# To insert into project's CHANGES.md...need to cut the top off the
# CHANGELOG.X.X.X.md file removing license and first line and then
# insert it after the license comment closing where we have a
# DO NOT REMOVE marker text!
- sed -i -e '/## Release/,$!d' "CHANGELOG.${jira_fix_version}.md"
- sed -i -e "/DO NOT REMOVE/r CHANGELOG.${jira_fix_version}.md" "${project_dir}/CHANGES.md"
+ sed -i -e '/## Release/,$!d' "${changelog}"
+ sed -i -e '2,${/^# HBASE Changelog/d;}' "${project_dir}/CHANGES.md"
+ sed -i -e "/DO NOT REMOVE/r ${changelog}" "${project_dir}/CHANGES.md"
else
- mv "CHANGELOG.${jira_fix_version}.md" "${project_dir}/CHANGES.md"
+ mv "${changelog}" "${project_dir}/CHANGES.md"
fi
if [ -f "${project_dir}/RELEASENOTES.md" ]; then
# Similar for RELEASENOTES but slightly different.
- sed -i -e '/Release Notes/,$!d' "RELEASENOTES.${jira_fix_version}.md"
- sed -i -e "/DO NOT REMOVE/r RELEASENOTES.${jira_fix_version}.md" \
- "${project_dir}/RELEASENOTES.md"
+ sed -i -e '/Release Notes/,$!d' "${releasenotes}"
+ sed -i -e '2,${/^# RELEASENOTES/d;}' "${project_dir}/RELEASENOTES.md"
+ sed -i -e "/DO NOT REMOVE/r ${releasenotes}" "${project_dir}/RELEASENOTES.md"
else
- mv "RELEASENOTES.${jira_fix_version}.md" "${project_dir}/RELEASENOTES.md"
+ mv "${releasenotes}" "${project_dir}/RELEASENOTES.md"
fi
stop_step "${timing_token}"
}