From ffb6c80cf7ee3e87179fbc011090fb4152bbcd9b Mon Sep 17 00:00:00 2001 From: Archana Shinde Date: Fri, 28 Feb 2020 10:22:05 -0800 Subject: [PATCH] release: Add a document to describe steps for making a release Much of the information is from the release docs from packaging repo. Plan is to maintain all the release information in this repo. Fixes #600 Signed-off-by: Archana Shinde --- Release-Process.md | 107 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 Release-Process.md diff --git a/Release-Process.md b/Release-Process.md new file mode 100644 index 000000000..f89586287 --- /dev/null +++ b/Release-Process.md @@ -0,0 +1,107 @@ + +# How to do a Kata Containers Release + This document lists the tasks required to create a Kata Release. + + +- [How to do a Kata Containers Release](#how-to-do-a-kata-containers-release) + - [Requirements](#requirements) + - [Release Process](#release-process) + - [Bump all Kata repositories](#bump-all-kata-repositories) + - [Merge all bump version Pull requests](#merge-all-bump-version-pull-requests) + - [Tag all Kata repositories](#tag-all-kata-repositories) + - [Check Git-hub Actions](#check-git-hub-actions) + - [Create OBS Packages](#create-obs-packages) + - [Create release notes](#create-release-notes) + - [Announce the release](#announce-the-release) + + + +## Requirements + +- [hub](https://github.com/github/hub) + +- OBS account with permissions on [`/home:katacontainers`](https://build.opensuse.org/project/subprojects/home:katacontainers) + +- GitHub permissions to push tags and create releases in Kata repositories. + +- GPG configured to sign git tags. https://help.github.com/articles/generating-a-new-gpg-key/ + +- You should configure your GitHub to use your ssh keys (to push to branches). See https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/. + * As an alternative, configure hub to push and fork with HTTPS, `git config --global hub.protocol https` (Not tested yet) * + +## Release Process + +### Bump all Kata repositories + + - We have set up a Jenkins job to bump the version in the `VERSION` file in all Kata repositories. Go to the [Jenkins bump-job page](http://jenkins.katacontainers.io/job/release/build) to trigger a new job. + - Start a new job with variables for the job passed as: + - `BRANCH=` + - `NEW_VERSION=` + + For example, in the case where you want to make a patch release `1.10.2`, the variable `NEW_VERSION` should be `1.10.2` and `BRANCH` should point to `stable-1.10`. In case of an alpha or release candidate release, `BRANCH` should point to `master` branch. + + Alternatively, you can also bump the repositories using a script in the Kata packaging repo + ``` + $ cd ${GOPATH}/src/github.com/kata-containers/packaging/release + $ export NEW_VERSION= + $ export BRANCH= + $ ./update-repository-version.sh -p "$NEW_VERSION" "$BRANCH" + ``` + +### Merge all bump version Pull requests + + - The above step will create a GitHub pull request in the Kata projects. Trigger the CI using `/test` command on each bump Pull request. + - Check any failures and fix if needed. + - Work with the Kata approvers to verify that the CI works and the pull requests are merged. + +### Tag all Kata repositories + + Once all the pull requests to bump versions in all Kata repositories are merged, + tag all the repositories as shown below. + ``` + $ cd ${GOPATH}/src/github.com/kata-containers/packaging/release + $ git checkout + $ git pull + $ ./tag_repos.sh -p -b "$BRANCH" tag + ``` + +### Check Git-hub Actions + + We make use of [GitHub actions](https://github.com/features/actions) in this [file](https://github.com/kata-containers/kata-containers/blob/master/.github/workflows/main.yaml) in the `kata-containers/kata-containers` repository to build and upload release artifacts. This action is auto triggered with the above step when a new tag is pushed to the `kata-containers/kata-conatiners` repository. + + Check the [actions status page](https://github.com/kata-containers/kata-containers/actions) to verify all steps in the actions workflow have completed successfully. On success, a static tarball containing Kata release artifacts will be uploaded to the [Release page](https://github.com/kata-containers/runtime/releases). + +### Create OBS Packages + + - We have set up an [Azure Pipelines](https://azure.microsoft.com/en-us/services/devops/pipelines/) job + to trigger generation of Kata packages in [OBS](https://build.opensuse.org/). + Go to the [Azure Pipelines job that creates OBS packages](https://dev.azure.com/kata-containers/release-process/_release?_a=releases&view=mine&definitionId=1). + - Click on "Create release" (blue button, at top right corner). + It should prompt you for variables to be passed to the release job. They should look like: + + ``` + BRANCH="the-kata-branch-that-is-release" + BUILD_HEAD=false + OBS_BRANCH="the-kata-branch-that-is-release" + ``` + The above step shall create OBS packages for Kata for various distributions that Kata supports and test them as well. + - Verify that the packages have built successfully by checking the [Kata OBS project page](https://build.opensuse.org/project/subprojects/home:katacontainers). + +### Create release notes + + We have a script in place in the packaging repository to create release notes that include a short-log of the commits across Kata components. + + Run the script as shown below: + + ``` + $ cd ${GOPATH}/src/github.com/kata-containers/packaging/release + # Note: OLD_VERSION is where the script should start to get changes. + $ ./runtime-release-notes.sh ${OLD_VERSION} ${NEW_VERSION} > notes.md + # Edit the `notes.md` file to review and make any changes to the release notes. + # Add the release notes in GitHub runtime. + $ hub -C "${GOPATH}/src/github.com/kata-containers/runtime" release edit -F notes.md "${NEW_VERSION}" + ``` + +### Announce the release + + Publish in [Slack and Kata mailing list](https://github.com/kata-containers/community#join-us) that new release is ready.