Compare the list of commits between stable and unstable
execute the following command to make sure that good commits (low risk fixes + docs fixes) got cherry-picked into stable branch.
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative <stable>..<unstable>
Generate release notes
git log master..map3 --pretty=format:'[%H]%s' --reverse -v <new version> <base branch> | grep -v Merge > changes.md
- Review the generated file and manually fix typos, group and reorder stuff if needed.
- Move the content into CHANGELOG.md add release code-names to headers.
- Push the changes to your private github repo and review.
- cherry-pick the release notes commit to the appropriate branches.
Pick a commit to release (for this version)
Usually this will be the commit containing the release notes, but it may also be in the past.
Update GitHub milestones
Create the next milestone if it doesn't exist yet-giving ita due date.
Move all open issues and PRs for the current milestone to the next milestone
You can do this by filtering the current milestone, selecting via checklist, and moving to the next milestone within the GH issues page.
Close the current milestone click the milestones tab and close from there.
Create a new holding milestone for the release after next-but don't give it a due date otherwise that will mess up the dashboard.
Announce the release (via official Google accounts)
- Collect a list of contributors
git log --format='%aN' v1.2.12..v1.2.13 | sort -u
- Write a blog post (for minor releases, not patch releases) and publish it with the "release" tag
Major Release Tasks
- Update docker images and push to docker.io.
- Update installation dependency files and push to s3..
- Write up a migration document.
- Create a new git branch for the version that has been released (e.g. 1.2.x).
- Check that node service still work.
- Write a blog post.