Release 10.0
10-0-stable
BEFORE CREATING We just did a security release; we need to ensure those fixes are also in master
:
-
https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/2177 - a587bf29 -
https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/2180 - f161f1ad -
https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/2183 - 79d8b716 -
https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/2128 - f4a4aa0d -
https://gitlab.com/gitlab-org/gitlab-ce/issues/29652 - Unaffected -
https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/2147 - 7014a737 -
https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/2170 - Already in master
-
Mattermost - ??? -
https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/2155 - 8649d1fc -
https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/2166 - 40ed2163 -
Nokogiri - Already in master
-
EE: https://dev.gitlab.org/gitlab/gitlab-ee/merge_requests/536 - gitlab-org/gitlab-ee@8da47a04 -
Pages: https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/2159/diffs - b01f5e85
First working day after 7th
Stable branch should be created after the 7th. The 7th is the last date to reliably get things in.
-
In #development
:``` @channel I am about to create the `10-0-stable` branch. Everything merged into `master` after this point will go into next month's release. Only regression and security fixes will be cherry-picked into `10-0-stable`. Please ensure that merge requests have the correct milestone (`10.0` for this release) and the `Pick into Stable` label. From now on, please follow the "After the 7th" process: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/PROCESS.md#after-the-7th ```
-
Create branch 10-0-stable
from CEmaster
manually -
Create branch 10-0-stable-ee
from EEmaster
manually -
In Omnibus create both 10-0-stable
and10-0-stable-ee
frommaster
manually -
Merge GitLab CE into EE on the stable branches -
Sync stable branches: CE, EE, and Omnibus to dev
, CE and Omnibus togithub
-
Sync master branches to dev
andgithub
, as the CHANGELOG will be automatically updated on master during tagging -
If needed, sync tags for dependencies ( gitlab-shell
,gitlab-workhorse
,gitlab-pages
,gitaly
) todev
andgithub
(when applicable)
RC1
-
Ensure omnibus-gitlab
is ready to build packages by asking the Omnibus maintainers in Slack (#build
) -
Follow the Creating RC1 guide:
-
Create MR on CE master updating the "Installation from Source" guide, creating the "Update" guides -
Create MR on EE master creating the "CE to EE" guides -
Create MR on CE master updating the gitignore and license templates -
Create MR on CE master updating the dependencies license list -
Ensure above MRs are merged and marked Pick into Stable
for milestone10.0
-
-
Follow steps to create a release candidate -
Create preperation MRs by following the instructions in release-tools. -
Cherry-pick changes into preparation MRs following their instructions -
Cherry-pick remaining merge requests labeled Pick into Stable
for the current milestone using thePick into Stable
10.0 merged merge requests page -
Check the following list of critical issues/MRs which are to be included in 10.0.0
. Ensure each has made both CE and EE -
Merge CE 10-0-stable
into EE10-0-stable-ee
following the Merging a CE stable branch into its EE counterpart guide -
Sync stable branches: CE, EE, and Omnibus to dev
, CE and Omnibus togithub
-
Sync master branches to dev
andgithub
, as the CHANGELOG will be automatically updated on master during tagging -
If needed, sync tags for dependencies ( gitlab-shell
,gitlab-workhorse
,gitlab-pages
,gitaly
) todev
andgithub
(when applicable) -
Check for any problematic migrations in EE (EE migrations include CE ones), and paste the diff in a snippet: git diff v10.0.0-rc1-ee..10-0-stable-ee -- db/migrate db/post_migrate
=> -
Ensure tests are green on CE stable branch -
Ensure tests are green on EE stable branch -
Ensure tests are green on Omnibus CE stable branch -
Ensure tests are green on Omnibus EE stable branch -
Make sure to announce the deployment on Twitter and GitLab.com - With downtime: 1 hour before
- Without downtime: 15 minutes before
-
In #releases
: I'm going to tag10.0.0-rc1
-
Tag the 10.0.0-rc1
version using therelease
task:```sh # In the release-tools project: bundle exec rake "release[10.0.0-rc1]" ```
-
Check progress of EE packages build and CE packages build -
In #production
: I'm going to deploy10.0.0-rc1
to staging -
Do the deploy of 10.0.0-rc1
to staging.gitlab.comsh # In the takeoff project: bundle exec rake "deploy[staging, 10.0.0-rc1.ee.0]"
-
If needed, in #production
: I'm going to deploy10.0.0-rc1
to canary -
If needed, do the deploy of 10.0.0-rc1
to canary.gitlab.comsh # In the takeoff project: bundle exec rake "deploy[canary, 10.0.0-rc1.ee.0]"
-
In #production
: I'm going to deploy10.0.0-rc1
to production -
Publicly announce the deploy on Twitter, at this point the deploy alert banner on GitLab.com should already be up. -
Do the deploy of 10.0.0-rc1
to GitLab.comsh # In the takeoff project: bundle exec rake "deploy[production, 10.0.0-rc1.ee.0]"
-
Verify that packages appear on packages.gitlab.com
: EE & CE -
Post a tweet about the 10.0.0-rc1
release:``` GitLab 10.0.0-rc1 is available: https://packages.gitlab.com/gitlab/unstable Use at your own risk. Please link regressions issues from LINK_TO_REGRESSION_ISSUE ```
-
-
Create the regression issue in the CE issue tracker using the regression_issue
task and bookmark it:```sh # In the release-tools project: bundle exec rake "regression_issue[10.0.0]" ```
RC2
-
Create preperation MRs by following the instructions in release-tools. -
Cherry-pick changes into preparation MRs following their instructions -
Cherry-pick remaining merge requests labeled Pick into Stable
for the current milestone using thePick into Stable
10.0 merged merge requests page -
Check the following list of critical issues/MRs which are to be included in 10.0.0
. Ensure each has made both CE and EE-
REFERENCE_TO_MR_TO_PICK
-
-
Follow the Creating subsequent RCs guide for
10.0.0-rc2
:-
Merge CE 10-0-stable
into EE10-0-stable-ee
following the Merging a CE stable branch into its EE counterpart guide -
Sync stable branches: CE, EE, and Omnibus to dev
, CE and Omnibus togithub
-
Sync master branches to dev
andgithub
, as the CHANGELOG will be automatically updated on master during tagging -
If needed, sync tags for dependencies ( gitlab-shell
,gitlab-workhorse
,gitlab-pages
,gitaly
) todev
andgithub
(when applicable) -
Check for any problematic migrations in EE (EE migrations include CE ones), and paste the diff in a snippet: git diff v10.0.0-rc1-ee..10-0-stable-ee -- db/migrate db/post_migrate
=> -
Ensure tests are green on CE stable branch -
Ensure tests are green on EE stable branch -
Ensure tests are green on Omnibus CE stable branch -
Ensure tests are green on Omnibus EE stable branch -
Make sure to announce the deployment on Twitter and GitLab.com - With downtime: 1 hour before
- Without downtime: 15 minutes before
-
In #releases
: I'm going to tag10.0.0-rc2
-
Tag the 10.0.0-rc2
version using therelease
task:```sh # In the release-tools project: bundle exec rake "release[10.0.0-rc2]" ```
-
-
Check progress of EE packages build and CE packages build -
In #production
: I'm going to deploy10.0.0-rc2
to staging -
On video call, deploy release 10.0.0-rc2
to staging.gitlab.comsh # In the takeoff project: bundle exec rake "deploy[staging, 10.0.0-rc2.ee.0]"
-
If needed, in #production
: I'm going to deploy10.0.0-rc2
to canary -
If needed, deploy release 10.0.0-rc2
to canary.gitlab.comsh # In the takeoff project: bundle exec rake "deploy[canary, 10.0.0-rc2.ee.0]"
-
In #production
: I'm going to deploy10.0.0-rc2
to production -
On video call, deploy release 10.0.0-rc2
to GitLab.comsh # In the takeoff project: bundle exec rake "deploy[production, 10.0.0-rc2.ee.0]"
-
Publicly announce the deploy on Twitter, at this point the deploy alert banner on GitLab.com should already be up. -
Verify that packages appear on packages.gitlab.com
: EE & CE -
Post a tweet about the 10.0.0-rc2
release:``` GitLab 10.0.0-rc2 is available: https://packages.gitlab.com/gitlab/unstable Use at your own risk. Please link regressions issues from LINK_TO_REGRESSION_ISSUE ```
RC3
Scrapped entirely -- @rspeicher
RC4
-
Create preperation MRs by following the instructions in release-tools. -
Cherry-pick changes into preparation MRs following their instructions -
Cherry-pick remaining merge requests labeled Pick into Stable
for the current milestone using thePick into Stable
10.0 merged merge requests page -
Check the following list of critical issues/MRs which are to be included in 10.0.0
. Ensure each has made both CE and EE-
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14252 -
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14273 -
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14226 -
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14300 -
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14314 -
https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/2930
-
-
Follow the Creating subsequent RCs guide for
10.0.0-rc4
:-
Merge CE 10-0-stable
into EE10-0-stable-ee
following the Merging a CE stable branch into its EE counterpart guide -
Sync stable branches: CE, EE, and Omnibus to dev
, CE and Omnibus togithub
-
Sync master branches to dev
andgithub
, as the CHANGELOG will be automatically updated on master during tagging -
If needed, sync tags for dependencies ( gitlab-shell
,gitlab-workhorse
,gitlab-pages
,gitaly
) todev
andgithub
(when applicable) -
Check for any problematic migrations in EE (EE migrations include CE ones), and paste the diff in a snippet: git diff v10.0.0-rc1-ee..10-0-stable-ee -- db/migrate db/post_migrate
=> -
Ensure tests are green on CE stable branch -
Ensure tests are green on EE stable branch -
Ensure tests are green on Omnibus CE stable branch -
Ensure tests are green on Omnibus EE stable branch -
Make sure to announce the deployment on Twitter and GitLab.com - With downtime: 1 hour before
- Without downtime: 15 minutes before
-
In #releases
: I'm going to tag10.0.0-rc4
-
Tag the 10.0.0-rc4
version using therelease
task:```sh # In the release-tools project: bundle exec rake "release[10.0.0-rc4]" ```
-
-
Check progress of EE packages build and CE packages build -
In #production
: I'm going to deploy10.0.0-rc4
to staging -
On video call, deploy release 10.0.0-rc4
to staging.gitlab.comsh # In the takeoff project: bundle exec rake "deploy[staging, 10.0.0-rc4.ee.0]"
-
If needed, in #production
: I'm going to deploy10.0.0-rc4
to canary -
If needed, deploy release 10.0.0-rc4
to canary.gitlab.comsh # In the takeoff project: bundle exec rake "deploy[canary, 10.0.0-rc4.ee.0]"
-
In #production
: I'm going to deploy10.0.0-rc4
to production -
On video call, deploy release 10.0.0-rc4
to GitLab.comsh # In the takeoff project: bundle exec rake "deploy[production, 10.0.0-rc4.ee.0]"
-
Publicly announce the deploy on Twitter, at this point the deploy alert banner on GitLab.com should already be up. -
Verify that packages appear on packages.gitlab.com
: EE & CE -
Post a tweet about the 10.0.0-rc4
release:``` GitLab 10.0.0-rc4 is available: https://packages.gitlab.com/gitlab/unstable Use at your own risk. Please link regressions issues from LINK_TO_REGRESSION_ISSUE ```
RC5
-
Create preperation MRs by following the instructions in release-tools. -
Cherry-pick changes into preparation MRs following their instructions -
Cherry-pick remaining merge requests labeled Pick into Stable
for the current milestone using thePick into Stable
10.0 merged merge requests page -
Check 9.5.5 changes and make sure they're included (below is the list of MRs that were not yet in stable and needed to be picked) -
Check the following list of critical issues/MRs which are to be included in 10.0.0
. Ensure each has made both CE and EE-
REFERENCE_TO_MR_TO_PICK
-
- Follow the Creating subsequent RCs guide for
10.0.0-rc5
:-
Merge CE 10-0-stable
into EE10-0-stable-ee
following the Merging a CE stable branch into its EE counterpart guide -
Sync stable branches: CE, EE, and Omnibus to dev
, CE and Omnibus togithub
-
Sync master branches to dev
andgithub
, as the CHANGELOG will be automatically updated on master during tagging -
If needed, sync tags for dependencies ( gitlab-shell
,gitlab-workhorse
,gitlab-pages
,gitaly
) todev
andgithub
(when applicable)
-
The final release - follow the steps for it
QA
-
Determine QA person and notify this person: MENTION_THIS_PERSON_HERE -
Do QA and fix anything coming out of it: LINK_TO_QA_ISSUE
Anytime after RC1 but before 22nd
-
Create another RC as needed.
Keep in mind that:
- After feature freeze only regression and security fixes can be
cherry-picked into
10-0-stable
. - Last RC should point to the same commit as the final release.
Copy-paste the tasks below for any other RCs (be sure to update the RC number).
#### RC2
- [ ] Create preperation MRs by following the [instructions in release-tools](https://gitlab.com/gitlab-org/release-tools/blob/master/doc/picking-into-merge-requests.md).
- [ ] Cherry-pick changes into preparation MRs following their instructions
- [ ] Cherry-pick remaining merge requests labeled `Pick into Stable` for the current
milestone using the
[`Pick into Stable` 10.0 merged merge requests] page
- [ ] Check the following list of critical issues/MRs which are to be included in `10.0.0`. Ensure each has made both CE and EE
- [ ] REFERENCE_TO_MR_TO_PICK
- Follow the [Creating subsequent RCs] guide for `10.0.0-rc2`:
- [ ] Merge CE `10-0-stable` into EE `10-0-stable-ee` following the [Merging a CE stable branch into its EE counterpart] guide
- [ ] Sync stable branches: CE, EE, and Omnibus to `dev`, CE and Omnibus to `github`
- [ ] Sync master branches to `dev` and `github`, as the CHANGELOG will be automatically updated on master during tagging
- [ ] If needed, sync tags for dependencies (`gitlab-shell`, `gitlab-workhorse`, `gitlab-pages`, `gitaly`) to `dev` and `github` (when applicable)
- [ ] Check for any problematic migrations in EE (EE migrations include CE ones), and paste the diff in a snippet: `git diff v10.0.0-rc2-ee..10-0-stable-ee -- db/migrate db/post_migrate` =>
- [ ] Ensure builds are green on [CE stable branch] and [EE stable branch]
- [ ] Ensure builds are green on [Omnibus CE stable branch] and [Omnibus EE stable branch]
- [ ] Make sure to [announce the deployment] on Twitter and GitLab.com
* With downtime: 1 hour before
* Without downtime: 15 minutes before
- [ ] In `#releases`: I'm going to tag `10.0.0-rc2`
- [ ] Tag the `10.0.0-rc2` version using the [`release` task]:
```sh
# In the release-tools project:
bundle exec rake "release[10.0.0-rc2]"
```
- [ ] Check progress of [EE packages build] and [CE packages build]
- [ ] In `#production`: I'm going to deploy `10.0.0-rc2` to staging
- [ ] On video call, [deploy] release [`10.0.0-rc2`](https://packages.gitlab.com/gitlab/unstable/packages/ubuntu/xenial/gitlab-ee_10.0.0-rc2.ee.0_amd64.deb) to [staging.gitlab.com]
```sh
# In the takeoff project:
bundle exec rake "deploy[staging, 10.0.0-rc2.ee.0]"
```
- [ ] If needed, in `#production`: I'm going to deploy `10.0.0-rc2` to canary
- [ ] If needed, [deploy] release [`10.0.0-rc2`](https://packages.gitlab.com/gitlab/unstable/packages/ubuntu/xenial/gitlab-ee_10.0.0-rc2.ee.0_amd64.deb) to [canary.gitlab.com]
```sh
# In the takeoff project:
bundle exec rake "deploy[canary, 10.0.0-rc2.ee.0]"
```
- [ ] In `#production`: I'm going to deploy `10.0.0-rc2` to production
- [ ] On video call, [deploy] release [`10.0.0-rc2`](https://packages.gitlab.com/gitlab/unstable/packages/ubuntu/xenial/gitlab-ee_10.0.0-rc2.ee.0_amd64.deb) to GitLab.com
```sh
# In the takeoff project:
bundle exec rake "deploy[production, 10.0.0-rc2.ee.0]"
```
- [ ] Publicly [announce the deploy on Twitter], at this point the deploy alert banner on GitLab.com should already be up.
- [ ] From the [build pipeline], [manually publish public packages]
- [ ] Verify that packages appear on `packages.gitlab.com`: [EE & CE](https://packages.gitlab.com/app/gitlab/unstable/search?q=10.0.0-rc2)
- [ ] Verify that Docker images appear on `hub.docker.com`: [EE](https://hub.docker.com/r/gitlab/gitlab-ee/tags) / [CE](https://hub.docker.com/r/gitlab/gitlab-ce/tags)
- [ ] Post a [tweet about] the `10.0.0-rc2` release:
```
GitLab 10.0.0-rc2 is available: https://packages.gitlab.com/gitlab/unstable
Use at your own risk. Please link regressions issues from
LINK_TO_REGRESSION_ISSUE
```
RC5
- Before 13:00 UTC:
- Final RC is ready for tagging. Including changes at this stage requires signoff from VP of Eng.
-
Ensure tests are green on CE stable branch -
Ensure tests are green on EE stable branch -
Ensure tests are green on Omnibus CE stable branch -
Ensure tests are green on Omnibus EE stable branch -
In #releases
: I'm going to tag final RC release -
Replace XX in the tasks below with the RC version number: -
Tag the final RC version using the release
task,```sh # In the release-tools project: bundle exec rake "release[10.0.0-rc5]" ```
-
Check progress of EE packages build and CE packages build -
In #production
: I'm going to deploy10.0.0-rc5
to staging -
On video call, deploy release 10.0.0-rc5
to staging.gitlab.com# In the takeoff project: bundle exec rake "deploy[staging, 10.0.0-rc5.ee.0]"
-
If needed, in #production
: I'm going to deploy10.0.0-rc5
to canary -
If needed, deploy release 10.0.0-rc5
to canary.gitlab.com# In the takeoff project: bundle exec rake "deploy[canary, 10.0.0-rc5.ee.0]"
-
In #production
: I'm going to deploy10.0.0-rc5
to production -
On video call, deploy release 10.0.0-rc5
to GitLab.com# In the takeoff project: bundle exec rake "deploy[production, 10.0.0-rc5.ee.0]"
-
Publicly announce the deploy on Twitter, at this point the deploy alert banner on GitLab.com should already be up. -
Verify that packages appear on packages.gitlab.com
: EE & CE -
Post a tweet about the 10.0.0-rc5
release:GitLab 10.0.0-rc5 is available: https://packages.gitlab.com/gitlab/unstable Use at your own risk. Please link regressions issues from LINK_TO_REGRESSION_ISSUE
-
- Final RC is ready for tagging. Including changes at this stage requires signoff from VP of Eng.
RC6
-
Create preperation MRs by following the instructions in release-tools. -
Cherry-pick changes into preparation MRs following their instructions -
Cherry-pick remaining merge requests labeled Pick into Stable
for the current milestone using thePick into Stable
10.0 merged merge requests page -
Check the following list of critical issues/MRs which are to be included in 10.0.0
. Ensure each has made both CE and EE -
Follow the Creating subsequent RCs guide for
10.0.0-rc6
:-
Merge CE 10-0-stable
into EE10-0-stable-ee
following the Merging a CE stable branch into its EE counterpart guide -
Sync stable branches: CE, EE, and Omnibus to dev
, CE and Omnibus togithub
-
Sync master branches to dev
andgithub
, as the CHANGELOG will be automatically updated on master during tagging -
If needed, sync tags for dependencies ( gitlab-shell
,gitlab-workhorse
,gitlab-pages
,gitaly
) todev
andgithub
(when applicable) -
Check for any problematic migrations in EE (EE migrations include CE ones), and paste the diff in a snippet: git diff v10.0.0-rc6-ee..10-0-stable-ee -- db/migrate db/post_migrate
=> -
Ensure builds are green on CE stable branch and EE stable branch -
Ensure builds are green on Omnibus CE stable branch and Omnibus EE stable branch -
Make sure to announce the deployment on Twitter and GitLab.com - With downtime: 1 hour before
- Without downtime: 15 minutes before
-
In #releases
: I'm going to tag10.0.0-rc6
-
Tag the 10.0.0-rc6
version using therelease
task:```sh # In the release-tools project: bundle exec rake "release[10.0.0-rc6]" ```
-
-
Check progress of EE packages build and CE packages build -
In #production
: I'm going to deploy10.0.0-rc6
to staging -
On video call, deploy release 10.0.0-rc6
to staging.gitlab.comsh # In the takeoff project: bundle exec rake "deploy[staging, 10.0.0-rc6.ee.0]"
-
If needed, in #production
: I'm going to deploy10.0.0-rc6
to canary -
If needed, deploy release 10.0.0-rc6
to canary.gitlab.comsh # In the takeoff project: bundle exec rake "deploy[canary, 10.0.0-rc6.ee.0]"
-
In #production
: I'm going to deploy10.0.0-rc6
to production -
On video call, deploy release 10.0.0-rc6
to GitLab.comsh # In the takeoff project: bundle exec rake "deploy[production, 10.0.0-rc6.ee.0]"
-
Publicly announce the deploy on Twitter, at this point the deploy alert banner on GitLab.com should already be up. -
Verify that packages appear on packages.gitlab.com
: EE & CE -
Post a tweet about the 10.0.0-rc6
release:``` GitLab 10.0.0-rc6 is available: https://packages.gitlab.com/gitlab/unstable Use at your own risk. Please link regressions issues from LINK_TO_REGRESSION_ISSUE ```
-
At 15:00 UTC:
-
If the final RC is not tagged and deployed by this time, notify the Build Lead
-
-
At 20:00 UTC:
-
If the final RC is not tagged and deployed by this time, notify the VP of Engineering
-
22nd, the release day:
No new code is added to release that was not included in the last RC. This way we ensure the release does not introduce new regressions.
-
At 6:00 UTC, final release is ready for tagging (Including changes at this stage requires signoff from VP of Eng.):
-
Sync stable branches: CE, EE, and Omnibus to dev
, CE and Omnibus togithub
-
Sync master branches to dev
andgithub
, as the CHANGELOG will be automatically updated on master during tagging -
If needed, sync tags for dependencies ( gitlab-shell
,gitlab-workhorse
,gitlab-pages
,gitaly
) todev
andgithub
(when applicable) -
Ensure tests are green on CE stable branch -
Ensure tests are green on EE stable branch -
Ensure tests are green on Omnibus CE stable branch -
Ensure tests are green on Omnibus EE stable branch -
If at this time final release is not ready for tagging, notify the CTO
-
-
Before 8:00 UTC:
-
In #releases
: I'm going to tag10.0.0
-
Tag the 10.0.0
version using therelease
task:```sh # In the release-tools project: bundle exec rake "release[10.0.0]" ```
-
Check progress of EE packages build and CE packages build
-
-
Before 10:00 UTC:
-
In #production
: I'm going to deploy10.0.0
to staging -
Do the deploy of 10.0.0
to staging.gitlab.com -
In #production
: I'm going to deploy10.0.0
to production -
Publicly announce the deploy on Twitter, at this point the deploy alert banner on GitLab.com should already be up. -
Create the first patch issue using the patch_issue
task:# In the release-tools project: bundle exec rake "patch_issue[10.0.1]"
-
If at this point final release is not ready for public, notify the CEO
-
-
At 13:00 UTC:
-
From the build pipeline, manually publish public packages -
Verify that packages appear on packages.gitlab.com
: EE / CE -
Verify that Docker images appear on hub.docker.com
: EE / CE -
Create the 10.0.0
version on https://version.gitlab.com -
Ensure someone tweets about the 10.0.0
release
-