Enable and test API releases for all components combined
All components that we release for self-managed releases now have code merged in
master
to run those releases using the API. While these components have been
tested in isolation, and some of them together (e.g. Gitaly and Omnibus
releases), we have yet to test all of them combined (including CE and EE).
I would like to test two types of releases: an RC, and a patch release; starting with an RC. The details are listed below.
Testing RCs
Testing RCs comes with no risk, as RCs can just be ignored by customers; nor do they come with any kind of public announcement. By releasing an RC we can test if tags/commits/etc are created properly. RCs do come with some limitations:
- Changelogs are not compiled when releasing RCs
- Helm releases are not run for RCs
- GitalyMonthlyRelease does not run for RCs
To address these limitations we will also be testing a patch release.
Testing patch releases
These are a little more risky/annoying to deal with, as failures in the release process may require that we tag another patch release. Components such as Gitaly and Omnibus have already been tested quite extensively, but Helm, GitLab CE, and GitLab EE have not yet.
Since patch releases trigger the full release process (compiling changelogs, releasing Helm, etc), they serve as a nice addition to testing RCs.
Proposed plan
The rough plan for testing RCs is as follows:
- Determine a date on which to test the RCs. This can be any date outside of the security release window, and doesn't need the involvement of release managers other than running the tag command in Slack.
- Enable the feature flags for running API releases
- Run the release
- Check if release succeeded without anything funny happening
- Disable the feature flags for running API releases
For patch releases, it's a little more involved:
- Determine if/when we want to perform a patch release using the API
- Enable the feature flags for running API releases
- Run the release together with the release managers
- Verify if the release went OK
- Disable the feature flags for running API releases
Feature flags
- cng_api_release
- gitaly_api_release
- gitlab_api_release
- helm_api_release
- omnibus_api_release
Testing steps
RC release
-
Determine a testing date: October 5, 2020 -
Determine the version of the release: 13.5.0-rc32 - RC42 is usually created during the release process, so I picked RC32 to not conflict with that
- Enable feature flags
-
cng_api_release -
gitaly_api_release -
gitlab_api_release -
helm_api_release -
omnibus_api_release
-
-
Ask a release manager to run the /chatops run release tag XXX
command for the RC version - Verify the results of the release
- Gitaly
-
Nothing happened
-
- Omnibus
-
Stable branch exists -
Component version files have been updated -
Changelog left as-is -
CE tag exists -
EE tag exists -
EE tag exists -
Slack notified -
CI pipeline passes
-
- CNG
-
Stable branch exists -
Component versions have been updated -
CE tag exists -
EE tag exists -
EE UBI8 tag exists -
Slack notified -
CI pipeline passes
-
- GitLab
-
EE stable branch exists -
CE stable branch exists -
GITALY_SERVER_VERSION updated -
CE version file updated -
EE version file updated -
Changelog left as-is -
EE code synced to the CE stable branch -
EE tag exists -
CE tag exists -
Slack notified for CE -
Slack notified for EE -
CI pipeline passes
-
- Helm
-
Nothing happened
-
- Gitaly
- Disable feature flags
-
cng_api_release -
gitaly_api_release -
gitlab_api_release -
helm_api_release -
omnibus_api_release
-
- Delete stable branches
-
https://gitlab.com/gitlab-org/gitlab -
https://gitlab.com/gitlab-org/gitlab-foss -
https://gitlab.com/gitlab-org/omnibus-gitlab -
https://gitlab.com/gitlab-org/gitaly -
https://gitlab.com/gitlab-org/build/CNG/ -
https://gitlab.com/gitlab-org/security/gitlab -
https://gitlab.com/gitlab-org/security/gitlab-foss -
https://gitlab.com/gitlab-org/security/omnibus-gitlab -
https://gitlab.com/gitlab-org/security/gitaly -
https://gitlab.com/gitlab-org/security/charts/components/images -
https://dev.gitlab.org/gitlab/gitlab-ee -
https://dev.gitlab.org/gitlab/gitlabhq -
https://dev.gitlab.org/gitlab/omnibus -
https://dev.gitlab.org/gitlab/gitaly -
https://dev.gitlab.org/gitlab/charts/gitlab
-
Patch release
-
Determine a testing date: October 6, 2020 -
Determine the version of the release: 13.4.3 - Enable feature flags
-
cng_api_release -
gitaly_api_release -
gitlab_api_release -
helm_api_release -
omnibus_api_release
-
-
Ask a release manager to run the /chatops run release tag XXX
command for the patch version - Verify the results of the release
- Gitaly
-
Stable branch exists -
Changelog updated -
VERSION updated -
Tag exists -
Slack notified -
CI pipeline passes
-
- Omnibus
-
Stable branch exists -
Component version files have been updated -
Changelog updated -
CE tag exists -
EE tag exists -
EE tag exists -
Slack notified -
CI pipeline passes
-
- CNG
-
Stable branch exists -
Component versions have been updated -
CE tag exists -
EE tag exists -
EE UBI8 tag exists -
Slack notified -
CI pipeline passes
-
- GitLab
-
EE stable branch exists -
CE stable branch exists -
GITALY_SERVER_VERSION updated -
CE version file updated -
EE version file updated -
Changelog updated -
EE code synced to the CE stable branch -
EE tag exists -
CE tag exists -
Slack notified for CE -
Slack notified for EE -
CI pipeline passes
-
- Helm
-
Stable branch exists -
Changelog updated -
Chart versions updated on the stable branch -
Chart versions updated on the master branch -
Chart version mapping updated on the stable branch -
Chart version mapping updated on the master branch -
Tag exists -
Slack notified -
CI pipeline passes
-
- Gitaly