Release 16.10
First steps
-
Change #f_upcoming_release
topic with/topic 16.10.0: <link_to_this_issue>
-
Check whether the auto-deploy branch schedule fits the Release Managers' working hours. Adjust if needed and make sure any changes are updated in the handbook. -
Check for any holiday, Family & Friends day or planned PCLs scheduled for this release: -
Adjust the release preparation days if necessary -
If there are Family and Friends day add notes for pausing deployments before the day starts and unpausing them before the next business day, see the auto-deploy documentation for details. -
Only for 16.10: The preparation dates prior to the release are discussed in https://gitlab.com/gitlab-com/gl-infra/delivery/-/issues/20001 and will be updated in this issue accordingly.
-
-
Update this issue with two planned dates for recurring Staging rollback practice and a planned date for Hot Patching Production practice. Consider spreading these across timezones to share the knowledge. -
Set Due Date for this Issue to the first practice session
-
-
Check for any deprecations -
Confirm the due date set in the upcoming security release is achievable. Work with AppSec if the date needs to change
First Staging Rollback Practice
Date to be Completed: 2024-02-26
-
Perform Staging Rollback Practice -
Set Due date for this issue to the date of the next practice session. If none, set it to the release date.
Second Staging Rollback Practice
Date to be Completed: 2024-03-04
-
Perform Staging Rollback Practice -
Set Due date for this issue to the date of the next practice session. If none, set it to the release date.
Hot patching production practice
Date to be Completed: 2024-03-08
The work here is to be done by the next release managers. Please tag them to the item below.
-
@jennykim-gitlab @rpereira2 -
Perform hot patching Practice -
Hot Patching practice is documented: -
Unsuccessful run #8673 (comment 1796116070)
-
-
Set Due date for this issue to the date of the next practice session. If none, set it to the release date.
Check Pre environment
Date to be Completed: Friday, Mar 8
We decided to introduce a Pre environment check ahead of the monthly release steps. This task should be completed by someone who is not currently a release manager to reduce pressure in the lead-up to the release.
-
@dat.tang.gitlab -
Performed as a part of gitlab-org/release-tools!2799 (merged)
Up until Friday, Mar 8
- Ensure any deploys that do not make it to canary are investigated. Disable canary if necessary.
- Push any successful deploy to canary into production after some time has passed (preferably 1h).
- Should any deployment blockers prevent automatic promotions to production, this requires approval by the SRE On-Call.
- Ask for permission to promote the release in #production - provide the necessary context to the Engineer
- If permission is granted, set the
OVERRIDE_PRODUCTION_CHECKS_REASON
as a variable in the manualpromote
job. The value of the variable should be the reason why production checks are being overridden. See gitlab-com-deployer.md#skipping-production-promotion-checks for more info. - This will post a comment into this issue and begin the deployment
- Ask the SRE On-Call to respond to the comment with their approval for auditing purposes
Release Preparation
Reminders of the 16.10 Release Timelines:
-
Friday 2024-02-23 -
Monday 2024-03-04
/chatops run notify "Reminder of the 16.10 Release Timelines:
Highlights:
* A Hard PCL, starting on 2024-03-08 at 23:00 UTC, will be in force for the Summit period
* Deployments will be paused during the Hard PCL
* The Guaranteed `sha` for release will be identified `2024-03-08`
* GitLab 16.10 will be released `2024-03-21`
For more information please refer to https://gitlab.com/gitlab-com/gl-infra/delivery/-/issues/19995"
Initial preparation day: Friday, Mar 8
-
Find the latest sha
that made it into production successfully: <code data-sourcepos="80:183-80:193">42eb7a5a4f0</code> -
Make sure to execute the post-deploy migration pipeline to ensure that all post-deploy migrations have been executed: /chatops run post_deploy_migrations execute
. -
Manually create the pipeline to update monthly release status to announced
. (https://ops.gitlab.net/gitlab-org/release/tools/-/jobs/13132974)-
Ensure that the release information dashboard reflects the accurate status "announced" for the active release version (16.10). -
I don't see the dashboard updated. @jennykim-gitlab please check.
-
-
-
Notify Engineering Managers and developers that this is the sha
that is guaranteed to be released on the 21st:/chatops run notify ":mega: This is the most recent commit running on GitLab.com and this is guaranteed to be released on the 21st. https://gitlab.com/gitlab-org/security/gitlab/-/commits/42eb7a5a4f0. You can check if an MR made the cut by using the following ChatOps command: `/chatops run release check [MR_URL] 16.10` Please see the following documentation on what this means: * `https://about.gitlab.com/handbook/engineering/releases/#how-can-i-determine-if-my-merge-request-will-make-it-into-the-monthly-release` * `https://about.gitlab.com/handbook/engineering/releases/#when-do-i-need-to-have-my-mr-merged-in-order-for-it-to-be-included-into-the-monthly-release` * Documentation about `release check` chatops command: `https://gitlab.com/gitlab-org/release/docs/-/blob/master/general/deploy/auto-deploy.md#status-of-a-merged-mr-with-respect-to-monthly-releases` * Release information dashboard: https://dashboards.gitlab.net/d/delivery-release_info/delivery3a-release-information?orgId=1"
Candidate announcement day: Monday, Mar 18
Selected sha
from the 8th has been advertised. Reference: #8673 (comment 1819892794)
Abandoned Steps
-
Execute a PDM - Note we'll do this below, but we want to do this first thing in the morning to ensure a smooth start of the week. Perform this during EMEA time. -
Log latest auto-deploy branch: BRANCH_NAME -
Ensure this build makes it through into production -
Make sure to execute the post-deploy migration pipeline to ensure that all post-deploy migrations have been executed: /chatops run post_deploy_migrations execute
. -
Grab the sha
from this new auto-deploy branch and notify Engineering Managers and developers that this is the candidatesha
for the release:/chatops run notify ":mega: This is the _candidate_ commit to be released on the 21st. https://gitlab.com/gitlab-org/security/gitlab/-/commits/<SHA> You can check if an MR made the cut by using the following ChatOps command: `/chatops run release check [MR_URL] 16.10` Further deployments may result in the final commit being different from the candidate. Please see the following documentation on what this means: * `https://about.gitlab.com/handbook/engineering/releases/#how-can-i-determine-if-my-merge-request-will-make-it-into-the-monthly-release` * `https://about.gitlab.com/handbook/engineering/releases/#when-do-i-need-to-have-my-mr-merged-in-order-for-it-to-be-included-into-the-monthly-release` * Documentation about `release check` chatops command: `https://gitlab.com/gitlab-org/release/docs/-/blob/master/general/deploy/auto-deploy.md#status-of-a-merged-mr-with-respect-to-monthly-releases` * Release information dashboard: https://dashboards.gitlab.net/d/delivery-release_info/delivery3a-release-information?orgId=1"
RC tag day: Tuesday, Mar 19
-
Determine what is the last auto deploy branch to have deployed to production and add it here: 16-10-auto-deploy-2024031818
-
If you plan to use the latest commit deployed to production for the various components to create the RC, make sure: -
To execute the post-deploy migration pipeline to ensure that all post-deploy migrations have been executed:
/chatops run post_deploy_migrations execute
-
To verify if there are production incidents blocking deployments
-
-
Create a RC version to ensure that the final version builds correctly # In Slack: /chatops run release tag 16.10.0-rc42
This will use the latest commit deployed to production for the various components that we release. If a different commit is necessary for a component, such as GitLab, you should run the following instead:
/chatops run release tag 16.10.0-rc42 --gitlab-sha=XXX
This will then use XXX
as the SHA to create the GitLab stable branches.
NOTE: this SHA is only used if the stable branch has yet to be created. If it already exists, the branch is left as-is.
-
Verify that the CE stable branch contains the right commits - There should be at least two commits: the last commit from the previous stable branch (usually a version update), and the sync commit created by the merge train.
- The sync commit will have the message "Add latest changes from gitlab-org/gitlab@16-10-stable-ee"
-
Verify that the pipelines are green # In Slack: /chatops run release status 16.10.0-rc42
-
Ensure that the release information dashboard reflects the accurate status "RC Tagged" for the active release version (16.10). -
Notify Engineering Managers and developers that final candidate has been created: /chatops run notify ":mega: The stable branch has been created and the release candidate is tagged. Barring any show-stopping issues, this is the final commit to be released on the 21st. https://gitlab.com/gitlab-org/security/gitlab/-/commits/16-10-stable-ee You can check if an MR made the cut by using the following ChatOps command: `/chatops run release check [MR_URL] 16.10` * Documentation about `release check` chatops command: `https://gitlab.com/gitlab-org/release/docs/-/blob/master/general/deploy/auto-deploy.md#status-of-a-merged-mr-with-respect-to-monthly-releases` * Release information dashboard: https://dashboards.gitlab.net/d/delivery-release_info/delivery3a-release-information?orgId=1"
-
Verify that the RC has been deployed to the pre environment - Deployment to pre will start automatically. It can take 2 hours to start once the RC is tagged. A notification will be sent to the
#announcements
channel in Slack when it starts. - If required to deploy manually, follow the steps in pre-and-release-environments.md#manual-deployments.
- Deployment to pre will start automatically. It can take 2 hours to start once the RC is tagged. A notification will be sent to the
Tag day: Wednesday, Mar 20
-
Confirm that final RC version has passed automated tests -
Ensure tests are green on CE stable branch -
Ensure tests are green on EE stable branch -
Ensure tests are green on Omnibus -
Ensure default and stable branches are synced: /chatops run mirror status
-
-
Tag 16.10.0
:# In Slack: /chatops run release tag 16.10.0
-
Check progress of EE packages build and CE packages build
-
-
Validate 16.10.0
has been deployed to the release environment
Instructions for manual deploy
```sh
# In Slack:
/chatops run deploy 16.10.0-ee.0 release
```
-
Validate 16.10.0
has been passed automated QA by ensuring therelease-gitlab-qa-smoke
job from the release deploy pipeline is green.
Past this point, no new code can be added to the release that was not included in the final RC.
Release day: Thursday, Mar 21
Final release is tagged, so any changes will have to initiate a patch release. Reminder: We have a soft PCL today, coordinate with the EOC before deploying to production. Consider not running the post-deploy migration pipeline to keep rollback options available.
-
At 13:00 UTC, post an update about the package building status in #f_upcoming_release
:mega: Packages for 16.10.0 are built and will be published at 13:10UTC
-
At 13:10 UTC: -
⚠ Make sure that neither packages nor the blog post get published earlier than 13:10UTC without approval by the messaging lead of the release post. Mind that you don't need their approval if you're on time⚠ -
Publish the packages via ChatOps: # In Slack: /chatops run publish 16.10.0
-
If anything goes wrong and the release is delayed, ping the release post manager on Slack to make them aware of the issue. Cross-post the slack message to the #marketing channel to notify them too
-
At 14:10 UTC:
-
Verify the check-packages
job completes successfully on the EE Pipeline -
Verify the check-packages
job completes successfully on the CE Pipeline -
Verify that Docker images appear on hub.docker.com
: EE / CE -
Post an update about the status in #f_upcoming_release
:mega: 16.10.0 is published and publicly available
-
Once all packages are available publicly and GitLab.com is up and running on the release version, ping the release post manager on Slack (#release-post channel) to give them a go to merge the release post at ~14:20 UTC, so that it will be live at 15:00 UTC -
Start the monthly_release_finalize:start
job in the monthly release pipeline: https://ops.gitlab.net/gitlab-org/release/tools/-/pipelines/2920178 -
Wait for the pipeline to complete before creating the version on the next step. -
Create the 16.10.0
version on version.gitlab.com -
Create a new release environment for the stable branch in the release environments repository. This is done by opening a merge request to create a file at environments/16-10-stable
with contents the same as the previous monthly release environment. The next time someone merges to the stable branch, that environment will be updated. Make sure another release manager reviews and merges the MR.
-
-
Release Certification
The release certification process may apply to this release. cc @gitlab-com/gl-security/federal-application-security