Files
kata-containers/release/release.md
Archana Shinde 7c26509a72 doc: Fixes for release.md
Add requirement for the user to be added to the docker group.
Observed firecracker failing due to this.
Add fixes for typos and missing spaces.

Fixes #754

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2019-10-11 10:26:53 -07:00

5.3 KiB

How to do a Kata Containers Release

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. To simplify this process, we have created a 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

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.

$ cd ${GOPATH}/src/github.com/kata-containers/packaging
# make sure you are up-to-date.
$ git pull
  1. Bump repositories

    $ cd ${GOPATH}/src/github.com/kata-containers/packaging/release
    $ export NEW_VERSION=X.Y.Z
    $ export BRANCH="master"
    $ ./update-repository-version.sh -p "$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 no 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.

    $ 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:

    $ cd ${GOPATH}/src/github.com/kata-containers/packaging/obs-packaging
    $ ./gen_versions_txt.sh ${BRANCH}
    $ 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::

    $ cd ${GOPATH}/src/github.com/kata-containers/packaging/release
    $ ./kata-deploy-binaries.sh -p ${NEW_VERSION}
    
  5. Create Kata packages:

    $ cd ${GOPATH}/src/github.com/kata-containers/packaging/obs-packaging
    # Optional, if release is a new stable branch ./create-repo-branch.sh ${BRANCH}
    $ ./gen_versions_txt.sh ${BRANCH}
    $ PUSH=1 OBS_SUBPROJECT="releases:$(uname -m):${BRANCH}" ./build_from_docker.sh ${NEW_VERSION}
    
  6. Test packages After all the packages have built successfully (see status in OBS web page: https://build.opensuse.org/project/subprojects/home:katacontainers), make sure the packages install and work. To help with this you can use the package test job

  7. Create release notes:

    $ 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 "${NEW_VERSION}"
    
  8. Announce release:

    Publish in Slack and Kata mailing list that new release is ready.

  9. Send changes to upstream. If you found any issue during the release process and you fix it, please send it back. After your changes are merged, tag Kata packaging with ${NEW_VERSION} to identify the code used for the release.