2023-04-05: GitLab.com deployments during Hard PCL
Production Change
Change Summary
This CR is to plan and document approvals for a limited number of deployments and post-deployment migrations to take place during the ongoing Hard PCL.
GitLab.com typically receives between 100-200 changes per day. With our normal deployment schedule, we're able to deploy around 5 times per day. This keeps deployment sizes manageable to help with debugging if there are any problems.
During the multi-day PCL, we'd like to run a small number of deployments through to Production to ease the current commit pressure and avoid a large number of commits accumulating into a single deployment immediately following the PCL. A single post-deployment migration run will do the same for migrations while also keeping rollback options available.
Planned deployments:
-
✅ 2023-04-05 - 1 deployment through to Production -
✅ 2023-04-06 - 1 deployment through to Production plus a post-deploy migration execution -
✅ 2023-04-07 - 1 deployment through to Production -
✅ 2023-04-10 - 1 deployment through to Production
Change Details
- Services Impacted - ServiceGitLab Rails ServiceGitaly
- Change Technician - @mayra-cabrera, @vglafirov
- Change Reviewer - @marin
- Time tracking - ~2hr per deployment
- Downtime Component - None expected
Detailed steps for the change
Change Steps - steps to take to execute the change
2023-04-05
Estimated Time to Complete (mins) - 250
-
Set label changein-progress /label ~change::in-progress -
Find the last successfully deployed with passing tests on staging canary environment: 15.11.202304051520-17b1975b750.3e22491cff5--
gstg-cny deployment https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/1843271
-
-
Package deployed and tested on Production canary - with approval from EOC - -
Request EOC approval to deploy to production canary https://gitlab.slack.com/archives/C101F3796/p1680720706964959 -
Unlock the gprd-cnydeployment:/chatops run deploy unlock gprd-cny -
Restart the gprd-preparejob https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/jobs/9703240 -
Wait for the gprd-preparejob to finish -
Lock gprd-cny/chatops run deploy unlock gprd-cny -
gprd-cny deployment: https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/1843397 -
QA pipelines: https://ops.gitlab.net/gitlab-org/quality/production/-/pipelines/1843681 https://ops.gitlab.net/gitlab-org/quality/canary/-/pipelines/1843682
-
-
Baking time completed and Production canary remains stable -
EOC approval recorded on this issue, package promoted to staging and Production -
EOC approval: #8677 (comment 1342921490) -
gstg deployment: https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/1843810 -
gprd deployment: https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/1843877
-
-
Set label changecomplete /label ~change::complete
2023-04-06 - Deployment to gprd
Estimated Time to Complete (mins) - 250
-
Set label changein-progress /label ~change::in-progress -
Find the last package successfully deployed with passing tests on staging canary environment: auto-deploy package - Link to the gstg-cny deployment: https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/1845154
-
Package deployed and tested on Production canary - with approval from EOC - -
Request EOC approval to deploy to production canary https://gitlab.slack.com/archives/C03QC5KNW5N/p1680777735231719 -
Unlock the gprd-cnydeployment:/chatops run deploy unlock gprd-cny -
Restart the gprd-preparejob -
Wait for the gprd-preparejob to finish -
Lock gprd-cny/chatops run deploy unlock gprd-cny -
Link to the gprd-cny deployment: https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/1845394 -
QA pipelines:
-
-
Baking time completed and Production canary remains stable -
EOC approval recorded on this issue, package promoted to staging and Production -
To unblock the promotejob, re run the job and add theOVERRIDE_PRODUCTION_CHECKS_REASONenvironment variable -
EOC approval: #8677 (comment 1343723877) -
gstg-deployment: https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/1845569 -
gprd-deployment: https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/1845655
-
-
Set label changecomplete /label ~change::complete
2023-04-06 - PDM
Estimated Time to Complete (mins) - 250
-
EOC approval recorded in this issue. #8677 (comment 1344380970) -
Set label changein-progress /label ~change::in-progress -
execute the PDM /chatops run post_deploy_migrations executehttps://ops.gitlab.net/gitlab-org/release/tools/-/pipelines/1846238 -
Package for which PDM was executed: 15.11.202304060820-e5872a49e20.1223ad29aa3 -
Remove changein-progress and add changecomplete
2023-04-07
Estimated Time to Complete (mins) - 250
-
Set label changein-progress /label ~change::in-progress -
Find the last successfully deployed with passing tests on staging canary environment: 15.11.202304071320-683bd64f34b.7a3fb6ea2a3 -
gstg-cny deployment: https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/1848084
-
-
Package deployed and tested on Production canary - with approval from EOC - -
Request EOC approval to deploy to production canary -
Unlock the gprd-cnydeployment:/chatops run deploy unlock gprd-cny -
Restart the gprd-preparejob -
Wait for the gprd-preparejob to finish -
Lock gprd-cny/chatops run deploy unlock gprd-cny -
gprd-cny deployment: https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/1848150 -
QA pipelines: https://ops.gitlab.net/gitlab-org/quality/production/-/pipelines/1848273, https://ops.gitlab.net/gitlab-org/quality/canary/-/pipelines/1848272
-
-
Baking time completed and Production canary remains stable -
EOC approval recorded on this issue, package promoted to staging and Production -
EOC approval: #8677 (comment 1345461553) -
gstg deployment: https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/1848369 -
gprd deployment: https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/1848480
-
-
Set label changecomplete /label ~change::complete
2023-04-10
Estimated Time to Complete (mins) - 250
-
Set label changein-progress /label ~change::in-progress -
Find the last successfully deployed with passing tests on staging canary environment: 15.11.202304101320-9d8d077a5ad.f4dfa95390a-
gstg-cny deployment: https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/1852901
-
-
Package deployed and tested on Production canary - with approval from EOC - -
Request EOC approval to deploy to production canary -
Unlock the gprd-cnydeployment:/chatops run deploy unlock gprd-cny -
Restart the gprd-preparejob -
Wait for the gprd-preparejob to finish -
Lock gprd-cny/chatops run deploy unlock gprd-cny -
gprd-cny deployment: https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/1852980 -
QA pipelines: https://ops.gitlab.net/gitlab-org/quality/production/-/pipelines/1853191, https://ops.gitlab.net/gitlab-org/quality/canary/-/pipelines/1853190
-
-
Baking time completed and Production canary remains stable -
EOC approval recorded on this issue, package promoted to staging and Production -
EOC approval: #8677 (comment 1347045984) -
gstg deployment: https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/1853245 -
gprd deployment: https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/1853305
-
-
Set label changecomplete /label ~change::complete
Rollback
Rollback steps - steps to be taken in the event of a need to rollback this change
Estimated Time to Complete (mins) - Estimated Time to Complete in Minutes
-
Deployment rolled back - https://gitlab.com/gitlab-org/release/docs/-/blob/master/runbooks/rollback-a-deployment.md
Monitoring
Key metrics to observe
- Metric: Metric Name
- Location: Dashboard URL
- What changes to this metric should prompt a rollback: Describe Changes
Change Reviewer checklist
-
Check if the following applies: - The scheduled day and time of execution of the change is appropriate.
- The change plan is technically accurate.
- The change plan includes estimated timing values based on previous testing.
- The change plan includes a viable rollback plan.
- The specified metrics/monitoring dashboards provide sufficient visibility for the change.
-
Check if the following applies: - The complexity of the plan is appropriate for the corresponding risk of the change. (i.e. the plan contains clear details).
- The change plan includes success measures for all steps/milestones during the execution.
- The change adequately minimizes risk within the environment/service.
- The performance implications of executing the change are well-understood and documented.
- The specified metrics/monitoring dashboards provide sufficient visibility for the change.
- If not, is it possible (or necessary) to make changes to observability platforms for added visibility?
- The change has a primary and secondary SRE with knowledge of the details available during the change window.
- The labels blocks deployments and/or blocks feature-flags are applied as necessary
Change Technician checklist
-
Check if all items below are complete: - The change plan is technically accurate.
- This Change Issue is linked to the appropriate Issue and/or Epic
- Change has been tested in staging and results noted in a comment on this issue.
- A dry-run has been conducted and results noted in a comment on this issue.
- The change execution window respects the Production Change Lock periods.
- For C1 and C2 change issues, the change event is added to the GitLab Production calendar.
- For C1 and C2 change issues, the SRE on-call has been informed prior to change being rolled out. (In #production channel, mention
@sre-oncalland this issue and await their acknowledgement.) - For C1 and C2 change issues, the SRE on-call provided approval with the eoc_approved label on the issue.
- For C1 and C2 change issues, the Infrastructure Manager provided approval with the manager_approved label on the issue.
- Release managers have been informed (If needed! Cases include DB change) prior to change being rolled out. (In #production channel, mention
@release-managersand this issue and await their acknowledgment.) - There are currently no active incidents that are severity1 or severity2
- If the change involves doing maintenance on a database host, an appropriate silence targeting the host(s) should be added for the duration of the change.