aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts/release/release.sh
diff options
context:
space:
mode:
authorGravatar Damien Martin-Guillerez <dmarting@google.com>2016-12-02 13:48:14 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-12-02 19:08:31 +0000
commit0d35261db8d4ddc43b770d5228bfd74813ad6f5f (patch)
tree18ad56fe46dbf1c63f7ff8f9cb1973509c494132 /scripts/release/release.sh
parent4a9654045a9528386f790592b7fe038a2a91e429 (diff)
Release: refactor the way we keep track of release notes
Now the release branch does not contains the release commit anymore. Instead, we regenerate the full release notes each time we have to (release candidate creation and final release). Two side effects: - The date is now showing the date of the operation and no longer the date of the release candidate (so release will be correctly dated) - The release notes show the release candidate number :) Tested: bazel test //scripts/release/... + build README.md -- Change-Id: Ia249bbdc0d6ed240bd969f24aa013f709f9a0a74 Reviewed-on: https://cr.bazel.build/7338 PiperOrigin-RevId: 140841432 MOS_MIGRATED_REVID=140841432
Diffstat (limited to 'scripts/release/release.sh')
-rwxr-xr-xscripts/release/release.sh53
1 files changed, 15 insertions, 38 deletions
diff --git a/scripts/release/release.sh b/scripts/release/release.sh
index 2dbb35fe29..06d1294ecf 100755
--- a/scripts/release/release.sh
+++ b/scripts/release/release.sh
@@ -97,48 +97,24 @@ function release_note_editor() {
# Create the release commit by changing the CHANGELOG file
function create_release_commit() {
- local release_title="$1"
- local release_name="$2"
- local relnotes="$3"
- local tmpfile="$4"
- local baseline="$5"
- shift 5
- local cherrypicks=$@
+ local infos=$(generate_release_message "${1}")
local changelog_path="$PWD/CHANGELOG.md"
- version_info=$(create_revision_information $baseline $cherrypicks)
# CHANGELOG.md
- cat >${tmpfile} <<EOF
-## ${release_title}
-
-EOF
- if [ -n "${version_info}" ]; then
- cat >>${tmpfile} <<EOF
-\`\`\`
-${version_info}
-\`\`\`
-EOF
- fi
- cat >>${tmpfile} <<EOF
-
-${relnotes}
-EOF
-
+ local tmpfile="$(mktemp ${TMPDIR:-/tmp}/relnotes-XXXXXXXX)"
+ trap "rm -f ${tmpfile}" EXIT
+ echo -n "## ${infos}" >${tmpfile}
if [ -f "${changelog_path}" ]; then
echo >>${tmpfile}
cat "${changelog_path}" >>${tmpfile}
fi
- cat ${tmpfile} > ${changelog_path}
+ cat "${tmpfile}" > ${changelog_path}
git add ${changelog_path}
- # Commit message
- cat >${tmpfile} <<EOF
-${release_title}
-
-${version_info}
+ rm -f "${tmpfile}"
+ trap - EXIT
-${relnotes}
-EOF
- git commit --no-verify -F ${tmpfile} --no-edit --author "${RELEASE_AUTHOR}"
+ # Commit
+ git commit --no-verify -m "${infos}" --no-edit --author "${RELEASE_AUTHOR}"
}
function apply_cherry_picks() {
@@ -174,7 +150,6 @@ function create_release() {
shift 2
local origin_branch=$(git_get_branch)
local branch_name="release-${release_name}"
- local release_title="Release ${release_name} ($(date +%Y-%m-%d))"
local tmpfile=$(mktemp ${TMPDIR:-/tmp}/relnotes-XXXXXXXX)
local tmpfile2=$(mktemp ${TMPDIR:-/tmp}/relnotes-XXXXXXXX)
trap 'rm -f ${tmpfile} ${tmpfile2}' EXIT
@@ -204,20 +179,21 @@ function create_release() {
echo "Creating release notes"
echo "${RELEASE_NOTE_MESSAGE}" > ${tmpfile}
- echo "# ${release_title}" >> ${tmpfile}
+ echo "# $(get_release_title "${release_name}rc${rc}")" >> ${tmpfile}
echo >> ${tmpfile}
create_release_notes "${tmpfile2}" >> ${tmpfile}
release_note_editor ${tmpfile} "${origin_branch}" "${branch_name}"
local relnotes="$(cat ${tmpfile})"
- create_release_commit "${release_title}" "${release_name}" \
- "${relnotes}" "${tmpfile}" "${baseline}" $@
release_name=$(set_release_name "${release_name}" "${rc}")
# Add the release notes
git notes --ref=release-notes add -f -m "${relnotes}"
+
+ # Return to the original branch
git checkout ${origin_branch} &> /dev/null
echo "Created ${release_name} on branch ${branch_name}."
+ # Clean-up
rm -f ${tmpfile} ${tmpfile2}
trap - EXIT
}
@@ -256,7 +232,8 @@ function do_release() {
echo -n "You are about to release branch ${branch} in tag ${tag_name}, confirm? [y/N] "
read answer
if [ "$answer" = "y" -o "$answer" = "Y" ]; then
- # Remove release "candidate"
+ echo "Creating the release commit"
+ create_release_commit "${tag_name}"
set_release_name "${tag_name}"
echo "Creating the tag"
git tag ${tag_name}