Skip to content

Add managed versioning to GitlabPages release

What does this MR do and why?

We are moving gitlab-pages to managed versioning. gitlab-com/gl-infra/delivery#2580 (closed) covers some of the last tasks needed in release-tools to finish this transition. When a release is tagged, release-tools will automatically do the following for components enrolled in managed versioning:

  • create a new stable branch
  • compile a changelog
  • update the version file
  • create a tag
  • update the release metadata
  • notify slack

This MR adds that functionality for GitlabPages in PublicRelease::GitlabPages. Much of the logic is the same as what Gitaly is doing, which is also enrolled in managed versioning, so I've moved this to a shared module.

The update to the Pages release is behind a feature flag :pages_managed_versioning so it can be enabled at the same time as other changes implemented in gitlab-com/gl-infra/delivery#2580 (closed).

This is related to !2085 (merged) and !2086 (merged)

Screenshots

Dry run running the release:tag rake task:

Click to expand
~/workspace/gitlab-org/release-tools (delivery2580-pages-managed-versioning-release ✔) TEST='true' RELEASE_BOT_PRODUCTION_TOKEN=$TOKEN RELEASE_BOT_OPS_TOKEN=$OPS_TOKEN be rake release:tag\[15.8.0\]
2022-12-08 15:42:50.069623 D [dry-run] ReleaseTools::GitlabClient -- [HTTParty] [2022-12-08 15:42:50 -0700] 200 "GET https://gitlab.com/api/v4/projects/gitlab-org%2Fcharts%2Fgitlab/repository/tags" -
2022-12-08 15:42:50.517127 D [dry-run] ReleaseTools::GitlabClient -- [HTTParty] [2022-12-08 15:42:50 -0700] 200 "GET https://gitlab.com/api/v4/projects/gitlab-org%2Fcharts%2Fgitlab/repository/tags?id=gitlab-org%2Fcharts%2Fgitlab&order_by=updated&page=2&per_page=100&search=%5Ev&sort=desc" -
2022-12-08 15:42:51.035576 D [dry-run] ReleaseTools::GitlabClient -- [HTTParty] [2022-12-08 15:42:51 -0700] 200 "GET https://gitlab.com/api/v4/projects/gitlab-org%2Fcharts%2Fgitlab/repository/tags?id=gitlab-org%2Fcharts%2Fgitlab&order_by=updated&page=3&per_page=100&search=%5Ev&sort=desc" -
2022-12-08 15:42:51.509969 D [dry-run] ReleaseTools::GitlabClient -- [HTTParty] [2022-12-08 15:42:51 -0700] 200 "GET https://gitlab.com/api/v4/projects/gitlab-org%2Fcharts%2Fgitlab/repository/tags?id=gitlab-org%2Fcharts%2Fgitlab&order_by=updated&page=4&per_page=100&search=%5Ev&sort=desc" -
📦 Gitaly release
2022-12-08 15:42:51.901794 D [dry-run] ReleaseTools::GitlabClient -- [HTTParty] [2022-12-08 15:42:51 -0700] 200 "GET https://gitlab.com/api/v4/projects/gitlab-org%2Fcharts%2Fgitlab/repository/tags?id=gitlab-org%2Fcharts%2Fgitlab&order_by=updated&page=5&per_page=100&search=%5Ev&sort=desc" -
2022-12-08 15:42:51.909303 I [dry-run] ReleaseTools::PublicRelease::GitalyMonthlyRelease -- Starting release of gitaly -- {:version=>"15.8.0"}
2022-12-08 15:42:52.171741 D [dry-run] ReleaseTools::GitlabClient -- [HTTParty] [2022-12-08 15:42:52 -0700] 200 "GET https://gitlab.com/api/v4/projects/gitlab-org%2Fgitaly/deployments" -
2022-12-08 15:42:52.173794 I [dry-run] ReleaseTools::PublicRelease::GitalyMonthlyRelease -- Last production commit via project deployments -- {:project=>"gitlab-org/gitaly", :sha=>"5c143379d62a9489c5c24e42fb177bb5b7f09318"}
2022-12-08 15:42:52.173987 I [dry-run] ReleaseTools::PublicRelease::GitalyMonthlyRelease -- Creating target branch -- {:project=>"gitlab-org/gitaly", :source=>"5c143379d62a9489c5c24e42fb177bb5b7f09318", :branch=>"15-8-stable"}

📦 GitLab Pages release
2022-12-08 15:42:52.176534 I [dry-run] ReleaseTools::PublicRelease::GitlabPagesRelease -- Starting release of gitlab-pages -- {:version=>"15.8.0"}
2022-12-08 15:42:52.448727 D [dry-run] ReleaseTools::GitlabOpsClient -- [HTTParty] [2022-12-08 15:42:52 -0700] 200 "GET https://ops.gitlab.net/api/v4/projects/gitlab-org%2Frelease%2Fmetadata/deployments" -
2022-12-08 15:42:52.450796 I [dry-run] ReleaseTools::ProductVersion -- Fetching release metadata commit -- {:sha=>"e667b5f3fe2c7b3e182dd7534a6be1c29c6f1acd"}
2022-12-08 15:42:52.692789 D [dry-run] ReleaseTools::GitlabOpsClient -- [HTTParty] [2022-12-08 15:42:52 -0700] 200 "GET https://ops.gitlab.net/api/v4/projects/gitlab-org%2Frelease%2Fmetadata/repository/commits/e667b5f3fe2c7b3e182dd7534a6be1c29c6f1acd/diff" -
2022-12-08 15:42:52.694147 I [dry-run] ReleaseTools::ProductVersion -- Fetching release metadata -- {:version=>"15.7.202212081351"}
2022-12-08 15:42:52.944974 D [dry-run] ReleaseTools::GitlabOpsClient -- [HTTParty] [2022-12-08 15:42:52 -0700] 200 "GET https://ops.gitlab.net/api/v4/projects/gitlab-org%2Frelease%2Fmetadata/repository/files/releases%2F15%2F15.7.202212081351.json" -
2022-12-08 15:42:52.945798 I [dry-run] ReleaseTools::PublicRelease::GitlabPagesRelease -- Last production commit via metadata -- {:project=>"gitlab-org/gitlab-pages", :sha=>"c47edc13a5c4ceb1bc0eca0e9361e2d883d1106c"}
2022-12-08 15:42:52.945927 I [dry-run] ReleaseTools::PublicRelease::GitlabPagesRelease -- Creating target branch -- {:project=>"gitlab-org/gitlab-pages", :source=>"c47edc13a5c4ceb1bc0eca0e9361e2d883d1106c", :branch=>"15-8-stable"}

📦 GitLab release
2022-12-08 15:42:52.946838 I [dry-run] ReleaseTools::PublicRelease::GitlabRelease -- Starting release of GitLab CE and EE -- {:ee_version=>"15.8.0-ee", :ce_version=>"15.8.0"}
2022-12-08 15:42:52.947073 I [dry-run] ReleaseTools::PublicRelease::GitlabRelease -- Creating CE target branch -- {:project=>"gitlab-org/gitlab-foss", :source=>"15-7-stable", :branch=>"15-8-stable"}
2022-12-08 15:42:53.237751 D [dry-run] ReleaseTools::GitlabClient -- [HTTParty] [2022-12-08 15:42:53 -0700] 200 "GET https://gitlab.com/api/v4/projects/gitlab-org%2Fgitlab/deployments" -
2022-12-08 15:42:53.239358 I [dry-run] ReleaseTools::PublicRelease::GitlabRelease -- Last production commit via project deployments -- {:project=>"gitlab-org/gitlab", :sha=>"ecc512d9b54212ae3cd6bdc4dde1386d4e4046a2"}
2022-12-08 15:42:53.239458 I [dry-run] ReleaseTools::PublicRelease::GitlabRelease -- Creating EE target branch -- {:project=>"gitlab-org/gitlab", :source=>"ecc512d9b54212ae3cd6bdc4dde1386d4e4046a2", :branch=>"15-8-stable-ee"}

📦 Omnibus release
2022-12-08 15:42:53.241244 I [dry-run] ReleaseTools::PublicRelease::OmnibusGitlabRelease -- Starting release of Omnibus GitLab -- {:ee_version=>"15.8.0+ee.0", :ce_version=>"15.8.0+ce.0"}
2022-12-08 15:42:54.808862 D [dry-run] ReleaseTools::GitlabClient -- [HTTParty] [2022-12-08 15:42:54 -0700] 200 "GET https://gitlab.com/api/v4/projects/gitlab-org%2Fomnibus-gitlab/deployments" -
2022-12-08 15:42:54.810720 I [dry-run] ReleaseTools::PublicRelease::OmnibusGitlabRelease -- Last production commit via project deployments -- {:project=>"gitlab-org/omnibus-gitlab", :sha=>"c456b04471a259052273c0e146a416eb80bbd245"}
2022-12-08 15:42:54.811041 I [dry-run] ReleaseTools::PublicRelease::OmnibusGitlabRelease -- Creating target branch -- {:project=>"gitlab-org/omnibus-gitlab", :source=>"c456b04471a259052273c0e146a416eb80bbd245", :branch=>"15-8-stable"}

📦 CNG release
2022-12-08 15:42:54.822110 I [dry-run] ReleaseTools::PublicRelease::CNGImageRelease -- Starting release of CNG -- {:version=>"15.8.0-ee"}
2022-12-08 15:42:54.822273 I [dry-run] ReleaseTools::PublicRelease::CNGImageRelease -- Creating target branch -- {:project=>"gitlab-org/build/CNG", :source=>"master", :branch=>"15-8-stable"}

📦 Helm release
2022-12-08 15:42:54.832508 I [dry-run] ReleaseTools::PublicRelease::HelmGitlabRelease -- Starting release of Helm -- {:version=>"6.7.0", :gitlab_version=>"15.8.0-ee"}
2022-12-08 15:42:54.832582 I [dry-run] ReleaseTools::PublicRelease::HelmGitlabRelease -- Creating target branch -- {:project=>"gitlab-org/charts/gitlab", :source=>"master", :branch=>"6-7-stable"}

Note: if you want to run this locally, you'll need to enable the :pages_managed_versioning feature flag (or just comment out the surrounding code in GitlabPagesRelease).

Author Check-list

  • [-] Has documentation been updated?
Edited by Steve Abrams

Merge request reports