diff --git a/docs/release_process/how_to_release_runner.md b/docs/release_process/how_to_release_runner.md new file mode 100644 index 0000000000000000000000000000000000000000..8285a0a792eaa34937eac0b54fc30ac3dddd9ceb --- /dev/null +++ b/docs/release_process/how_to_release_runner.md @@ -0,0 +1,116 @@ +# How to release GitLab Runner + +Permission to push to `master` branch at https://gitlab.com/gitlab-org/gitlab-ci-multi-runner.git +are required to release the Runner. + +## Release stable version + +1. Make sure that all required changes are merged in and that the recent CI/CD pipeline + for `master` branch is passing. The easiest way is to check https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/commits/master. + +1. Run `./scripts/prepare-changelog-entries.rb` to list merge requests merged since last + tag, e.g.: + + ```bash + $ ./scripts/prepare-changelog-entries.rb + STARTING_POINT variable not set, using autodiscovered: v9.3.0 + + - Warn on archiving git directory !591 + - Use Go 1.8 for CI !620 + - Add CacheClient with timeout configuration for cache operations !608 + - Remove '.git/hooks/post-checkout' hooks when using fetch strategy !603 + - Update linux-repository.md !624 + - Fix VirtualBox and Parallels executors registration bugs !589 + - Support Kubernetes PVCs !606 + - Support cache policies in .gitlab-ci.yml !621 + - Improve kubernetes volumes support !625 + - Fix incorrect substitute example in hostname in docker.md !627 + - Fix typo in debug !630 + - Adds an option `--all` to unregister command !622 + ``` + +1. Chose entries that should be added to the changelog. Sometimes in one release + were creating few merge requests that are related. If one MR only fixes another + MR that was added in the same release and that added the main part of the change, + there is no need to add them both. Just add the main entry. + +1. Fix the grammar and language in entries - they are taken from MR titles and sometimes + they could be not fixed during MR's review. + +1. Add entries to the `CHANGELOG.md` file, e.g.: + + ```markdown + v 9.4.0 (2017-07-22 + - Warn on archiving git directory !591 + - Use Go 1.8 for CI !620 + - Add CacheClient with timeout configuration for cache operations !608 + - Remove '.git/hooks/post-checkout' hooks when using fetch strategy !603 + - Update linux-repository.md !624 + - Fix VirtualBox and Parallels executors registration bugs !589 + - Support Kubernetes PVCs !606 + - Support cache policies in .gitlab-ci.yml !621 + - Improve kubernetes volumes support !625 + - Fix incorrect substitute example in hostname in docker.md !627 + - Fix typo in debug !630 + - Adds an option `--all` to unregister command !622 + ``` + +1. Commit the change in `CHANGELOG.md`: + + ```bash + $ git add CHANGELOG.md + $ git commit -m "Update CHANGELOG for v9.4.0" + ``` + +1. Make sure that `VERSION` file contains a valid version number. If no, update + the file: + + ```bash + $ cat VERSION + 9.3.0 + $ echo "9.4.0" > VERSION + $ cat VERSION + 9.4.0 + $ git add VERSION + $ git commit -m "Bump version to 9.4.0" + ``` + +1. Create the `x-y-stable` branch: + + ```bash + $ git checkout -b 9-4-stable + ``` + +1. Tag the version. Use the annotated tag. If you've set up the GPG configuration + for your git environment - please use the signed tag: + + ```bash + # if you haven't configured GPG for git + $ git config user.signingkey >/dev/null || git tag -a v9.4.0 -m "Version v9.4.0" + # if you've configured GPG for git + $ git config user.signingkey >/dev/null && git tag -s v9.4.0 -m "Version v9.4.0" + ``` + +1. Push stable branch and tag to `origin` + + ```bash + $ git push -u origin 9-4-stable + $ git push origin v9.4.0 + ``` + +1. Switch to `master` branch and bump version + + ```bash + $ git checkout master + $ echo "9.5.0" > VERSION + $ git add VERSION + $ git commit -m "Bump version to 9.5.0" + $ git push + ``` + +1. Go to https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/pipelines and wait until + the CI/CD Pipeline for tag will pass. If the latest Pipeline for `master` was passing + then following the process above there should be not changes that could fail the pipeline + at this time. Any failures should be a temoprary failures related to CI infrastructure + and GitLab stability. In that case just retry te failing job. +