|
1 | 1 | All dates should align with VS Code's [iteration](https://github.com/microsoft/vscode/labels/iteration-plan) and [endgame](https://github.com/microsoft/vscode/labels/endgame-plan) plans.
|
2 | 2 |
|
3 |
| -# Feature freeze (Monday @ 17:00 America/Vancouver, XXX XX) |
| 3 | +Feature freeze is Monday @ 17:00 America/Vancouver, XXX XX. |
| 4 | + |
| 5 | + |
| 6 | +NOTE: the number of this release is in the issue title and can be substituted in wherever you see [YYYY.minor]. |
4 | 7 |
|
5 |
| -- [ ] Announce the feature freeze on both Teams and e-mail, leave enough time for teams to surface any last minute issues that need to get in before freeze. Make sure debugger and Language Server teams are looped in as well. |
6 | 8 |
|
7 | 9 | # Release candidate (Monday, XXX XX)
|
8 | 10 |
|
9 |
| -NOTE: Third Party Notices are automatically added by our build pipelines using https://tools.opensource.microsoft.com/notice. |
10 |
| - |
11 |
| -- [ ] Update `main` for the release |
12 |
| - - [ ] Change the version in [`package.json`](https://github.com/Microsoft/vscode-python/blob/main/package.json) to the next **even** number and switch the `-dev` to `-rc` (🤖) |
13 |
| - - [ ] Run `npm install` to make sure [`package-lock.json`](https://github.com/Microsoft/vscode-python/blob/main/package.json) is up-to-date, you should now see changes to the`package.json` and `package-lock.json` (🤖) |
14 |
| - - [ ] Check [`pypi.org`](https://pypi.org/search/?q=debugpy) and update the version of `debugpy` in `install_debugpy.py` if necessary. |
15 |
| - - [ ] Update [`ThirdPartyNotices-Repository.txt`](https://github.com/Microsoft/vscode-python/blob/main/ThirdPartyNotices-Repository.txt) as appropriate. This file is manually edited so you can check with the teams if anything needs to be added here. |
16 |
| - - [ ] Get approval on PR then merge pull request into `main` |
17 |
| -- [ ] Create the [`release` branch](https://github.com/microsoft/vscode-python/branches) |
18 |
| - - [ ] If there are `release` branches that are two versions old you can delete them at this time |
19 |
| - - [ ] Click `draft new release` then create a tag for this release matching the `release/YYYY.XX` format |
20 |
| - - [ ] Click `generate release notes` |
21 |
| - - [ ] Create a new `release/YYYY.XX` branch from `main` |
22 |
| -- [ ] Create a draft [GitHub release](https://github.com/microsoft/vscode-python/releases) for the release notes (🤖) |
23 |
| -- [ ] Update `main` post-release (🤖) |
24 |
| - - [ ] Bump the minor version number to the next ("YYYY.[minor+1]") release in the `main` branch to an **odd** number and switch the `-rc` to `-dev`(🤖) |
25 |
| - - [ ] Run `npm install` to make sure [`package-lock.json`](https://github.com/Microsoft/vscode-python/blob/main/package.json) is up-to-date, you should now see changes to the`package.json` and `package-lock.json` (🤖) |
26 |
| - - [ ] Create a pull request against `main` |
27 |
| - - [ ] Get approval on PR then merge pull request into `main` |
28 |
| -- [ ] Announce the code freeze is over on the same channels, not required if this occurs on normal release cadence |
29 |
| -- [ ] Update Component Governance (Notes are in the team OneNote under Python VS Code → Dev Process → Component Governance). |
30 |
| - - [ ] Check pipeline on Azure DevOps under [`monacotools/Monaco/Compliance/Component Governance`](https://dev.azure.com/monacotools/Monaco/_componentGovernance/192726?_a=alerts&typeId=11825783&alerts-view-option=active) |
31 |
| - - [ ] Make sure there are no active alerts |
32 |
| - - [ ] Manually add any repository/embedded/CG-incompatible dependencies |
33 |
| -- [ ] Open appropriate [documentation issues](https://github.com/microsoft/vscode-docs/issues?q=is%3Aissue+is%3Aopen+label%3Apython) |
34 |
| -- [ ] Begin drafting a [blog](http://aka.ms/pythonblog) post. Contact the PM team for this. |
| 11 | +NOTE: Third Party Notices are automatically added by our build pipelines using https://tools.opensource.microsoft.com/notice. |
| 12 | + |
| 13 | +### Step 1: |
| 14 | +##### Bump the version of `main` to be a release candidate (also updating debugpy dependences, third party notices, and package-lock.json).❄️ (steps with ❄️ will dictate this step happens while main is frozen 🥶) |
| 15 | + |
| 16 | +- [ ] checkout to `main` on your local machine and run `git fetch` to ensure your local is up to date with the remote repo. |
| 17 | +- [ ] Create a new branch called **`bump-release-[YYYY.minor]`**. |
| 18 | +- [ ] Change the version in `package.json` to the next **even** number and switch the `-dev` to `-rc`. (🤖) |
| 19 | +- [ ] Run `npm install` to make sure `package-lock.json` is up-to-date _(you should now see changes to the `package.json` and `package-lock.json` at this point which update the version number **only**)_. (🤖) |
| 20 | +- [ ] Check [debugpy on PyPI](https://pypi.org/project/debugpy/) for a new release and update the version of debugpy in [`install_debugpy.py`](https://github.com/microsoft/vscode-python/blob/main/pythonFiles/install_debugpy.py) if necessary. |
| 21 | +- [ ] Update `ThirdPartyNotices-Repository.txt` as appropriate. You can check by looking at the [commit history](https://github.com/microsoft/vscode-python/commits/main) and scrolling through to see if there's anything listed there which might have pulled in some code directly into the repository from somewhere else. If you are still unsure you can check with the team. |
| 22 | +- [ ] Create a PR from your branch **`bump-release-[YYYY.minor]`** to `main`. Add the `"no change-log"` tag to the PR so it does not show up on the release notes before merging it. |
| 23 | + |
| 24 | +NOTE: this PR will fail the test in our internal release pipeline called `VS Code (pre-release)` because the version specified in `main` is (temporarily) an invalid pre-release version. This is expected as this will be resolved below. |
| 25 | + |
| 26 | + |
| 27 | +### Step 2: Creating your release branch ❄️ |
| 28 | +- [ ] Create a release branch by creating a new branch called **`release/YYYY.minor`** branch from `main`. This branch is now the candidate for our release which will be the base from which we will release. |
| 29 | + |
| 30 | +NOTE: If there are release branches that are two versions old you can delete them at this time. |
| 31 | + |
| 32 | +### Step 3 Create a draft GitHub release for the release notes (🤖) ❄️ |
| 33 | + |
| 34 | +- [ ] Create a new [GitHub release](https://github.com/microsoft/vscode-python/releases/new). |
| 35 | +- [ ] Specify a new tag called `YYYY.minor.0`. |
| 36 | +- [ ] Have the `target` for the github release be your release branch called **`release/YYYY.minor`**. |
| 37 | +- [ ] Create the release notes by specifying the previous tag for the last stable release and click `Generate release notes`. Quickly check that it only contain notes from what is new in this release. |
| 38 | +- [ ] Click `Save draft`. |
| 39 | + |
| 40 | +### Step 4: Return `main` to dev and unfreeze (❄️ ➡ 💧) |
| 41 | +NOTE: The purpose of this step is ensuring that main always is on a dev version number for every night's 🌃 pre-release. Therefore it is imperative that you do this directly after the previous steps to reset the version in main to a dev version **before** a pre-release goes out. |
| 42 | +- [ ] Create a branch called **`bump-dev-version-YYYY.[minor+1]`**. |
| 43 | +- [ ] Bump the minor version number in the `package.json` to the next `YYYY.[minor+1]` which will be an odd number, and switch the `-rc` to `-dev`.(🤖) |
| 44 | +- [ ] Run `npm install` to make sure `package-lock.json` is up-to-date _(you should now see changes to the `package.json` and `package-lock.json` only relating to the new version number)_ . (🤖) |
| 45 | +- [ ] Create a PR from this branch against `main` and merge it. |
| 46 | + |
| 47 | +NOTE: this PR should make all CI relating to `main` be passing again (such as the failures stemming from step 1). |
| 48 | + |
| 49 | +### Step 5: Notifications and Checks on External Release Factors |
| 50 | +- [ ] Check [Component Governance](https://dev.azure.com/monacotools/Monaco/_componentGovernance/192726?_a=alerts&typeId=11825783&alerts-view-option=active) to make sure there are no active alerts. |
| 51 | +- [ ] Manually add/fix any 3rd-party licenses as appropriate based on what the internal build pipeline detects. |
| 52 | +- [ ] Open appropriate [documentation issues](https://github.com/microsoft/vscode-docs/issues?q=is%3Aissue+is%3Aopen+label%3Apython). |
| 53 | +- [ ] Contact the PM team to begin drafting a blog post. |
| 54 | + |
35 | 55 |
|
36 | 56 | # Release (Wednesday, XXX XX)
|
37 | 57 |
|
38 |
| -## Preparation |
39 |
| - |
40 |
| -- [ ] Make sure the [appropriate pull requests](https://github.com/microsoft/vscode-docs/pulls) for the [documentation](https://code.visualstudio.com/docs/python/python-tutorial) -- including the [WOW](https://code.visualstudio.com/docs/languages/python) page -- are ready |
41 |
| -- [ ] Final updates to the `release-YYYY.minor` branch |
42 |
| - - [ ] Create a branch against `release-YYYY.minor` for a pull request |
43 |
| - - [ ] Update the version in [`package.json`](https://github.com/Microsoft/vscode-python/blob/main/package.json) to remove the `-rc` (🤖) |
44 |
| - - [ ] Run `npm install` to make sure [`package-lock.json`](https://github.com/Microsoft/vscode-python/blob/main/package.json) is up-to-date (the only update should be the version number if `package-lock.json` has been kept up-to-date) (🤖) |
45 |
| - - [ ] Update [`ThirdPartyNotices-Repository.txt`](https://github.com/Microsoft/vscode-python/blob/main/ThirdPartyNotices-Repository.txt) manually if necessary |
46 |
| - - [ ] Create pull request against `release/YYYY.minor` (🤖) |
47 |
| - - [ ] Merge pull request into `release/YYYY.minor` |
48 |
| - |
49 |
| -## Release |
50 |
| - |
51 |
| -- [ ] Make sure [CI](https://github.com/microsoft/vscode-python/actions?query=workflow:%22Build%22) is passing for Release branch (🤖). |
52 |
| -- [ ] Run the [CD](https://dev.azure.com/monacotools/Monaco/_build?definitionId=299) pipeline on the `release/yyyy.minor` branch. |
53 |
| -- [ ] Check to ensure VS Code release has gone out before moving onto publishing the python extension |
54 |
| - - [ ] Press the approve button if everything looks good to publish to market place. |
55 |
| -- [ ] Create a [GitHub release](https://github.com/microsoft/vscode-python/releases) (🤖) |
56 |
| - - [ ] Update the release notes |
57 |
| - - [ ] Take the release out of draft |
58 |
| -- [ ] Publish [documentation changes](https://github.com/Microsoft/vscode-docs/pulls?q=is%3Apr+is%3Aopen+label%3Apython) |
59 |
| -- [ ] Publish the [blog](http://aka.ms/pythonblog) post |
60 |
| -- [ ] Determine if a hotfix is needed |
61 |
| -- [ ] Merge the release branch back into `main`. Don't overwrite the main branch version. (🤖) |
| 58 | +### Step 6: Take the release branch from a candidate to the finalized release |
| 59 | +- [ ] Make sure the [appropriate pull requests](https://github.com/microsoft/vscode-docs/pulls) for the [documentation](https://code.visualstudio.com/docs/python/python-tutorial) -- including the [WOW](https://code.visualstudio.com/docs/languages/python) page -- are ready. |
| 60 | +- [ ] Check to make sure any final updates to the **`release/YYYY.minor`** branch have been merged. |
| 61 | +- [ ] Create a branch against **`release/YYYY.minor`** called **`finalized-release-[YYYY.minor]`**. |
| 62 | +- [ ] Update the version in `package.json` to remove the `-rc` (🤖) from the version. |
| 63 | +- [ ] Run `npm install` to make sure `package-lock.json` is up-to-date _(the only update should be the version number if `package-lock.json` has been kept up-to-date)_. (🤖) |
| 64 | +- [ ] Update `ThirdPartyNotices-Repository.txt` manually if necessary. |
| 65 | +- [ ] Create a PR from **`finalized-release-[YYYY.minor]`** against `release/YYYY.minor` and merge it. |
| 66 | + |
| 67 | + |
| 68 | +### Step 7: Execute the Release |
| 69 | +- [ ] Make sure CI is passing for **`release/YYYY.minor`** release branch (🤖). |
| 70 | +- [ ] Run the [CD](https://dev.azure.com/monacotools/Monaco/_build?definitionId=299) pipeline on the **`release/YYYY.minor`** branch. |
| 71 | + - [ ] Click `run pipeline`. |
| 72 | + - [ ] for `branch/tag` select the release branch which is **`release/YYYY.minor`**. |
| 73 | + - NOTE: Please opt to release the python extension close to when VS Code is released to align when release notes go out. When we bump the VS Code engine number, our extension will not go out to stable until the VS Code stable release but this only occurs when we bump the engine number. |
| 74 | +- [ ] 🧍🧍 Get approval on the release on the [CD](https://dev.azure.com/monacotools/Monaco/_build?definitionId=299). |
| 75 | +- [ ] Click "approve" in the publish step of [CD](https://dev.azure.com/monacotools/Monaco/_build?definitionId=299) to publish the release to the marketplace. 🎉 |
| 76 | +- [ ] Take the Github release out of draft. |
| 77 | +- [ ] Publish documentation changes. |
| 78 | +- [ ] Contact the PM team to publish the blog post. |
| 79 | +- [ ] Determine if a hotfix is needed. |
| 80 | +- [ ] Merge the release branch **`release/YYYY.minor`** back into `main`. (This step is only required if changes were merged into the release branch. If the only change made on the release branch is the version, this is not necessary. Overall you need to ensure you DO NOT overwrite the version on the `main` branch.) |
62 | 81 |
|
63 | 82 | ## Prep for the _next_ release
|
64 | 83 |
|
65 |
| -- [ ] Create a new [release plan](https://raw.githubusercontent.com/microsoft/vscode-python/main/.github/release_plan.md) (🤖) |
| 84 | +- [ ] Create a new [release plan](https://raw.githubusercontent.com/microsoft/vscode-python/main/.github/release_plan.md). (🤖) |
66 | 85 | - [ ] [(Un-)pin](https://help.github.com/en/articles/pinning-an-issue-to-your-repository) [release plan issues](https://github.com/Microsoft/vscode-python/labels/release%20plan) (🤖)
|
0 commit comments