Skip to content

Reorder RC steps on monthly template

Mayra Cabrera requested to merge re-order-rc-steps-on-monthly-template into master

What does this MR do and why?

Reorder RC steps on the monthly template

Moves stable branch announcement to be the last step of the RC. The pre deployment and the dashboard check should be done before announcing the stable branch creation.

Test

Click to expand

Release 17.1

First steps

First Staging Rollback Practice

Date to be Completed:

Second Staging Rollback Practice

Date to be Completed:

Hot patching production practice

Date to be Completed:

The work here is to be done by the next release managers. Please tag them to the item below.

  • @name
  • Perform hot patching Practice
  • Hot Patching practice is documented: <link to comment>
  • 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, Jun 14

Up until Friday, Jun 14

  • 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.
    1. Ask for permission to promote the release in #production - provide the necessary context to the Engineer
    2. If permission is granted, set the OVERRIDE_PRODUCTION_CHECKS_REASON as a variable in the manual promote 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.
    3. This will post a comment into this issue and begin the deployment
    4. Ask the SRE On-Call to respond to the comment with their approval for auditing purposes

Release Preparation

Initial preparation day: Friday, Jun 14

  • Find the latest sha that made it into production successfully: sha
  • 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.
  • Notify Engineering Managers and developers that this is the sha that is guaranteed to be released on the 20th:
    /chatops run notify ":mega: This is the most recent commit running on GitLab.com and this is guaranteed to be released on the 20th.
    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] 17.1`
    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
  • Verify that the release information dashboard reflects the accurate status "announced" for the active release version (17.1).
    • The updated status can take up to 15 minutes to display on the dashboard once the pipeline to create the metric is finished.

Candidate announcement day: Monday, Jun 17

  • 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 candidate sha for the release:
    /chatops run notify ":mega: This is the _candidate_ commit to be released on the 20th.
    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] 17.1`
    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, Jun 18

  • Determine what is the last auto deploy branch to have deployed to production and add it here: BRANCH

  • If you plan to use the latest commit deployed to production for the various components to create the RC, make sure:

  • Create a RC version to ensure that the final version builds correctly

    # In Slack:
    /chatops run release tag 17.1.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 17.1.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@17-1-stable-ee"
  • Verify that the pipelines are green

    # In Slack:
    /chatops run release status 17.1.0-rc42
  • 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.
  • Verify that the release information dashboard reflects the accurate status "RC Tagged" for the active release version (17.1).

    • The updated status can take up to 15 minutes to display on the dashboard once the RC is tagged.
  • 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 20th.
    https://gitlab.com/gitlab-org/security/gitlab/-/commits/17-1-stable-ee
    You can check if an MR made the cut by using the following ChatOps command: `/chatops run release check [MR_URL] 17.1`
      * 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

Tag day: Wednesday, Jun 19

Instructions for manual deploy
    ```sh
    # In Slack:
    /chatops run deploy 17.1.0-ee.0 release
    ```
  • Validate 17.1.0 has been passed automated QA by ensuring the release-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, Jun 20

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 17.1.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 17.1.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: 17.1.0 is published and publicly available

Author Check-list

  • [-] Has documentation been updated?
Edited by Mayra Cabrera

Merge request reports