forked from kata-containers/packaging
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: Document release process - tools.
Document flow to create a release based in the tools from this repository. Fixes: kata-containers#207 Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
- Loading branch information
Showing
1 changed file
with
122 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
# 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](https://golang.org/doc/install#) | ||
|
||
- [hub](https://github.com/github/hub) | ||
If you use GitHub 2FA, configure the hub manually to create a file ~/.config/hub | ||
```yaml | ||
github.com: | ||
- user: YOUR_USER | ||
oauth_token: TOKEN | ||
protocol: https | ||
``` | ||
- 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 | ||
|
||
The steps described here are safe to repeat more than one time, it is safe to | ||
repeat in case of unexpected issue. And is it not required start from the | ||
begging. | ||
|
||
|
||
Note: 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. | ||
|
||
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 kata-dev@lists.katacontainers.io 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 |