From 41f5406211e558dfa8ec81a644e5582c445891be Mon Sep 17 00:00:00 2001 From: Derek McGowan Date: Mon, 4 Feb 2019 11:22:44 -0800 Subject: [PATCH] Add release documentation Signed-off-by: Derek McGowan --- releases/README.md | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 releases/README.md diff --git a/releases/README.md b/releases/README.md new file mode 100644 index 000000000..93b49371b --- /dev/null +++ b/releases/README.md @@ -0,0 +1,57 @@ +## containerd release process + +1. Create release pull request with release notes and updated versions. + + 1. Compile release notes detailing features added since the last release and + add release template file to `releases/` directory. The template is defined + by containerd's release tool but refer to previous release files for style + and format help. Name the file using the version, for rc add an `-rc` suffix. + When moving from rc to final, the rc file may just be renamed and updated. + See [release-tool](https://github.com/containerd/project/tree/master/cmd/release-tool) + + 2. Update the version file at `https://github.com/containerd/containerd/blob/master/version/version.go` + + 3. Update RELEASES.md to refer to the new release and dates. + + 4. Update the `.mailmap` files for commit authors which have multiple email addresses in the commit log. + If it is not clear which email or name the contributor might want used in the release notes, reach + out to the contributor for feedback. NOTE: real names should be used whenever possible. The file is + maintained by manually adding entries to the file. + - e.g. `Real Name Other Name ` + + 5. Before opening the pull request, run the release tool using the new release notes. + Ensure the output matches what is expected, including contributors, change log, + dependencies, and visual elements such as spacing. If a contributor is duplicated, + use the emails outputted by the release tool to update the mailmap then re-run. The + goal of the release tool is that is generates release notes that need no + alterations after it is generated. + +2. Create tag + + 1. Choose tag for the next release, containerd uses semantic versioning and + expects tags to be formatted as `vx.y.z[-rc.n]`. + + 2. Generate release notes (using a temp file may be helpful). + - e.g. `release-tool -l -d -n -t v1.0.0 ./releases/v1.0.0.toml > /tmp/v1.0.0-notes` + + 3. Create tag using the generated release notes. + - e.g. `git tag --cleanup=whitespace -s v1.0.0 -F /tmp/v1.0.0-notes` + + 4. Verify tag (e.g. `git show v1.0.0`), it may help to compare the new tag against previous. + +3. Push tag and Github release + + 1. Push the tag to `git@github.com:containerd/containerd.git`. + NOTE: this will kick off CI building of the release binaries. + + 2. Create the Github release using the `Tag version` which was just pushed. Use the first + line outputted from the release tool as the `Release title` and the remainder of the + output for the description. No alteration of the release output should be needed. + Ensure `pre-release` is checked if an `-rc`. + NOTE: This should be done immediately after pushing the tag, otherwise CI may create the release + when the binaries are pushed. + + 3. Check CI has completed and uploaded the binaries. Remove any binaries which get + uploaded but are not intended as part of the release (e.g. Darwin binaries). + +4. Promote on Slack, Twitter, mailing lists, etc