Merge pull request #209 from jcvenegas/release-process-md

docs: Document release process - tools.
This commit is contained in:
Julio Montes 2019-02-14 09:28:41 -06:00 committed by GitHub
commit 2b382fdfec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

123
release/release.md Normal file
View File

@ -0,0 +1,123 @@
# How to do a Kata Containers Release
* [Introduction](#Introduction)
* [Requirements](#Requirements)
* [Release process](#release-process)
# Introduction
If you are reading this document, you might want to create a Kata Containers
Release.
The Kata Containers Release Process is defined in the following
[document][release-process-definition]. To simplify this process, we have
created a [Release Checklist][release-checklist]. Finally, to simplify the
Release Checklist process we have automated most of the process, this document
guides on how to use release scripts instead of do all the checklist manually.
## Requirements
- It is recommended to have at least 2 GB of free disk space to perform these tasks.
- [Go][install-go-kata]
- [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 creates 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) *
- [Docker](https://docs.docker.com/install/)
- Get the [Packaging](https://github.com/kata-containers/packaging) Kata repository
```bash
$ go get -d github.com/kata-containers/packaging
```
## Release process
Notes:
- The steps described here are safe to repeat more than one time, it is safe to
repeat in case of unexpected issues. And is it not required start from the
beginning.
- It is "safe" to run this process on any machine. It creates all assets in
sub-directories and should not modify the entire system.
```bash
$ cd ${GOPATH}/src/github.com/kata-containers/packaging
# make sure you are up-to-date.
$ git pull
```
1. Bump repositories
```bash
$ cd ${GOPATH}/src/github.com/kata-containers/packaging/release
$ export NEW_VERSION=X.Y.Z
$ export BRANCH="master"
$ ./update-repository-version.sh -p ksm-throttler "$NEW_VERSION" "$BRANCH"
$ ./update-repository-version.sh -p proxy "$NEW_VERSION" "$BRANCH"
$ ./update-repository-version.sh -p shim "$NEW_VERSION" "$BRANCH"
$ ./update-repository-version.sh -p runtime "$NEW_VERSION" "$BRANCH"
$ ./update-repository-version.sh -p osbuilder "$NEW_VERSION" "$BRANCH"
$ ./update-repository-version.sh -p agent "$NEW_VERSION" "$BRANCH"
```
The commands from above will create a github pull request in the Kata projects.
Work with the Kata approvers to verify that the CI works and the PR are merged.
Note: There is not `VERSION` file in some repositories like `tests`. They are
tagged with the version that was used to test Kata Containers.
2. Create GitHub tags:
After all the PRs from the previous step are complete, create GitHub tags.
```bash
$ cd ${GOPATH}/src/github.com/kata-containers/packaging/release
$ ./tag_repos.sh -p -b "$BRANCH" tag
```
This creates tags for all the Kata repos.
3. Create the Kata Containers image and upload it to GitHub:
```bash
$ cd ${GOPATH}/src/github.com/kata-containers/packaging/release
$ ./publish-kata-image.sh -p ${NEW_VERSION}
```
4. Create the Kata static binaries tarball and upload it to GitHub::
```bash
$ cd ${GOPATH}/src/github.com/kata-containers/packaging/release
$ ./kata-deploy-binaries.sh -p ${NEW_VERSION}
```
5. Create Kata packages:
```bash
$ cd ${GOPATH}/src/github.com/kata-containers/packaging/obs-packaging
# Optional, if release is a new stable branch ./create-pkg-branch.sh ${BRANCH}
$./gen_versions_txt.sh ${BRANCH}
$PUSH=1 OBS_SUBPROJECT="releases:$(uname -m):${BRANCH}" ./build_from_docker.sh ${NEW_VERSION}
```
6. Create release notes:
```bash
$ 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
# Add the release notes in GitHub runtime.
$ hub -C "${GOPATH}/src/github.com/kata-containers/runtime" release edit -F notes.md
```
7. Announce release:
Publish in [Slack and Kata mailing list][join-us-kata] that new release is ready.
[release-process-definition]: https://github.com/kata-containers/documentation/blob/master/Releases.md
[release-checklist]: https://github.com/kata-containers/documentation/blob/master/Release-Checklist.md
[join-us-kata]: https://github.com/kata-containers/community#join-us
[install-go-kata]: https://github.com/kata-containers/documentation/blob/master/Developer-Guide.md#requirements-to-build-individual-components