docs/releasing.md
This document describes the steps to make a LinuxKit release. A LinuxKit release consists of:
YAML files updated to use the release packageslinuxkit binaries for all supported architectures.Note, we explicitly do not tag kernel images with LinuxKit release
tags as we encourage users to stay current with the kernel
releases. We also do not tag test and mkimage packages as these are
not end-user facing.
Releases can be done by any maintainer. Maintainers need to have access to build machines for all architectures support by LinuxKit and signing keys set up to sign Docker hub images.
The release preparation is by far the most time consuming task as it involves updating all packages and YAML files.
The release preparation is performed on a branch of your up-to-date
LinuxKit clone. This document assumes that your clone of the LinuxKit
repository is available as the origin remote in your local git
clone (in my setup the official LinuxKit repository is available as
upstream remote). If your setup is different, you may have to adjust
some of the commands below.
As a starting point you have to be on the update to date master branch and be in the root directory of your local git clone. You should also have the same setup on all build machines used.
linuxkit/alpineThis step is not necessarily required if the alpine base image has recently been updated, but it is good to pick up any recent bug fixes. Follow the process in alpine-base-update.md
There are several important notes to consider when updating alpine base:
LK_BRANCH is set to rel_$LK_RELEASE, when cutting a release, for e.g. LK_BRANCH=rel_v0.9./scripts/generate-authors.shVERSION variable in the top-level MakefileCHANGELOG.md. Take a look at git log v0.3..HEAD and pick interesting updates (of course adjust v0.3 to the previous version).Once the PR is merged we can do the actual release.
upstream in my case):git tag $LK_RELEASE master
git push upstream $LK_RELEASE
Then head over to GitHub and look at the Releases tab. You should see the new tag. Edit it:
README.md)sha256 sums to the release notes on the release pageHit the Publish release button.
This completes the release, but you are not done, one more step is required.
Create a PR which bumps the version number in the top-level Makefile
to $LK_RELEASE+ to make sure that the version reported by linuxkit version gets updated.