Test rollout of Ruby 3.1 package to gstg-cny and gstg-ref
Proposal
Deploy a Ruby 3.1 package to gstg-cny and gstg-ref before the planned production rollout.
Reasoning for performing this test deployment:
-
gstg-cny
is a good testbed with 0 risk. -
Because Ruby upgrades touch every part of the GitLab installation, it would be good to do an experimental deployment before the actual production deployment. This is similar to what we would do if we had the capability to create an experimental cluster and deploy a package to it.
-
If we directly do a production deployment on the first week of Dec, and find issues when the package is deployed to staging canary or production canary, there might not be enough time for engineering to fix the issues before 16.7 release.
-
Running QA on the Omnibus and CNG packages separately does help, but those are a bit different from live environments like staging-canary.
Deploy to gstg-cny and gstg-ref
-
Pause auto deploys with/chatops run auto_deploy pause
-
Prepare a Ruby 3.1 package by settingUSE_NEXT_RUBY_VERSION_IN_AUTODEPLOY
totrue
andNEXT_RUBY_VERSION
to3.1.4
in the project CI/CD variables of https://dev.gitlab.org/gitlab/omnibus-gitlab and https://dev.gitlab.org/gitlab/charts/components/images/. -
Run git commit --allow-empty -m "Empty commit to trigger a new auto-deploy pkg"
to add an extra commit to the Omnibus or CNG auto deploy branch. If that doesn't work, you can merge and use gitlab-org/release-tools!2754 (closed). -
Trigger a deployment pipeline by running the "MANUAL auto-deploy pick&tag" inactive manual scheduled pipeline: https://ops.gitlab.net/gitlab-org/release/tools/-/pipeline_schedules/. -
Cancel the packager pipelines created in the previous step and manually start new pipelines on the same tags. Set the following variables when starting the pipeline: USE_NEXT_RUBY_VERSION_IN_AUTODEPLOY
totrue
andNEXT_RUBY_VERSION
to3.1.4
. -
Notify Slack channels #development
,#backend
,#frontend
and#staging-ref
that the deployment has started. -
Cancel the validate_ownership:gstg-cny
job so that the package does not get deployed to gprd-cny. -
Notify @igor.drozdov, @mkaeppler and @niskhakova when the deployment is done so they can proceed with Monitor experimental Ruby 3.1 package roll out to staging.
Continue auto deploys
-
Allow the package to bake for 2 hours on gstg-cny. -
RemoveUSE_NEXT_RUBY_VERSION_IN_AUTODEPLOY
from the project CI/CD variables of https://dev.gitlab.org/gitlab/omnibus-gitlab and https://dev.gitlab.org/gitlab/charts/components/images/. -
Unpause auto deploys with/chatops run auto_deploy unpause
-
Once a new package is deployed to gstg-cny and gstg-ref, notify the Slack channels that the Ruby 3.1 package is no longer on those environments.