Skip to content

Make release.sh rerunnable, and ask before each publishing step - #239

Merged
wu-sheng merged 1 commit into
masterfrom
release-script-clear-ending
Oct 20, 2026
Merged

wu-sheng merged 1 commit into
masterfrom
release-script-clear-ending

Conversation

@wu-sheng

@wu-sheng wu-sheng commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

Running scripts/release.sh for 0.15.0 ended like this, and it was not clear what to do next or in which order:

+ echo 'Make sure you have released the GitHub release, updated the events, download links and menus?'
Make sure you have released the GitHub release, updated the events, download links and menus?
+ read -r _

Run the script from the skywalking-cli checkout of the release tag. It now:

  1. Runs the svn mv to dist/release, or skips it when the packages are already there, so you can rerun the script to finish the other steps.
  2. Asks Publish the GitHub release <v> ...? [y/N], then runs gh release create. The notes are the version's section of CHANGES.md, read from the tag. It skips this step when the release already exists.
  3. Asks Build and push docker.io/apache/skywalking-cli:<v> and :latest ...? [y/N], then runs make docker.push. It skips this step when the image is already on Docker Hub, or when the checkout is not at the tag.
  4. Lists each step as done, already done, skipped or failed. If any step was skipped or failed, it says to rerun the script.
  5. Reminds you to update the website and add the release on reporter.apache.org. It prints the announcement email with its subject and recipients, and fixes the dev@skywalkiing.apache.org typo.
  6. Asks Remove the older releases 0.13.0 0.14.0 from dist/release? [y/N], then runs svn rm.

The script no longer traces every command (set -x). It prints each command just before running it. The Publish section of the release guide describes the new flow.

Tests

The tests stub svn, gh, docker, make and git.

  • They pass on macOS (sh, bash, dash: 66 of 66) and on Linux golang:1.26 (dash with mawk, and bash: 44 of 44). They cover:
    • all answers yes;
    • packages already in dist/release (no svn mv);
    • all answers no;
    • stdin closed;
    • GitHub release and image already published (neither is asked);
    • checkout not at the tag (no Docker question);
    • gh or make docker.push failing (the rest still runs, and the summary says to rerun);
    • svn mv failing (the script stops);
    • no CHANGES.md section, svn ls failing, no older releases, svn rm failing, and VERSION unset.
  • With real git at tag 0.15.0, on macOS and Linux, the GitHub release notes match the 0.15.0 section of CHANGES.md exactly, and the Docker step runs because the checkout is at the tag.
  • shellcheck reports nothing.

@wu-sheng wu-sheng added this to the 0.16.0 milestone Oct 19, 2026
After the svn mv, the script traced its own `echo` and `read` and stopped on a
one-line question, so it was not clear what to do next or in which order.

- Skip the svn mv when the packages are already in dist/release, so the script
  can be rerun to finish the other steps.
- Ask before publishing the GitHub release, with the version's section of
  CHANGES.md at the tag as its notes. Skip it when the release exists.
- Ask before `make docker.push`. Skip it when the image is already on Docker
  Hub, or when the working tree is not the release tag.
- List what is done, skipped or failed, remind to update the website, and print
  the announcement email with its subject and recipients. Fix the
  `dev@skywalkiing.apache.org` typo.
- Ask before removing the older releases from dist/release.
- Print each command before running it instead of tracing the whole script.
@wu-sheng
wu-sheng force-pushed the release-script-clear-ending branch from 7b23fb1 to 8654250 Compare October 19, 2026 13:32
@wu-sheng wu-sheng changed the title Make the end of release.sh a clear checklist Make release.sh rerunnable, and ask before each publishing step Oct 19, 2026
@wu-sheng
wu-sheng requested a review from kezhenxu94 October 19, 2026 13:37
@wu-sheng
wu-sheng merged commit f331de9 into master Oct 20, 2026
7 checks passed
@wu-sheng
wu-sheng deleted the release-script-clear-ending branch October 20, 2026 00:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants