Skip to content

Commit ac4980e

Browse files
eleanorjboydCopilot
andcommitted
Document stable and point release process
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent cc26348 commit ac4980e

2 files changed

Lines changed: 80 additions & 0 deletions

File tree

‎CONTRIBUTING.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ This project has adopted the [Microsoft Open Source Code of Conduct](https://ope
9898
## Additional Resources
9999

100100
- [Development Process](https://github.com/Microsoft/vscode-python/blob/main/CONTRIBUTING.md#development-process)
101+
- [Release Process](./docs/releasing.md)
101102
- [API Documentation](./src/api.ts)
102103
- [Project Documentation](./docs/projects-api-reference.md)
103104

‎docs/releasing.md‎

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# Release process
2+
3+
Python Environments uses even minor versions for stable releases and odd minor
4+
versions for pre-release development. For example, `1.38.0` is a stable release
5+
and `1.39.0` starts the next pre-release cycle.
6+
7+
## Prepare the release branch
8+
9+
Complete these steps before release day:
10+
11+
1. Create a pull request against `main` that updates the version in
12+
`package.json` and `package-lock.json` to the next even minor version:
13+
14+
```bash
15+
npm version 1.38.0 --no-git-tag-version
16+
```
17+
18+
2. Merge the version-bump pull request into `main`.
19+
3. Create the release branch from the updated `main` branch. Name it
20+
`release/1.<even minor>.0`, for example `release/1.38.0`, and push it to the
21+
upstream repository.
22+
4. Create a second pull request against `main` that updates `package.json` and
23+
`package-lock.json` to the next odd minor version:
24+
25+
```bash
26+
npm version 1.39.0 --no-git-tag-version
27+
```
28+
29+
5. Merge the pre-release version-bump pull request into `main`. Do not merge
30+
this change into the release branch.
31+
32+
The release branch must therefore retain the even version while `main` moves
33+
back to an odd pre-release version.
34+
35+
## Publish on release day
36+
37+
1. Run the stable Azure Pipelines build defined by
38+
`build/azure-pipeline.stable.yml`.
39+
2. Select the prepared release branch, for example `release/1.38.0`.
40+
3. Set the **Publish Extension** parameter to `true`.
41+
4. Monitor the build until publishing completes.
42+
5. Verify that the extension is available in the Marketplace and that the
43+
corresponding GitHub tag and release were created. The stable pipeline
44+
automatically generates and publishes the GitHub release notes.
45+
46+
## Publish a point release
47+
48+
Use the existing release branch for a patch to a stable release. For example,
49+
release `1.38.1` from `release/1.38.0`; do not create a
50+
`release/1.38.1` branch.
51+
52+
1. Apply the required fixes to the existing release branch. If a fix was first
53+
merged into `main`, cherry-pick the relevant commit onto a branch created
54+
from the release branch.
55+
2. On that branch, update the version in `package.json` and
56+
`package-lock.json` to the new patch version:
57+
58+
```bash
59+
npm version 1.38.1 --no-git-tag-version
60+
```
61+
62+
3. Create and merge a pull request targeting the existing release branch, for
63+
example `release/1.38.0`.
64+
4. On release day, run the stable Azure Pipelines build from that release
65+
branch with **Publish Extension** set to `true`.
66+
5. Verify the Marketplace publication and the automatically generated GitHub
67+
tag and release notes for the point release.
68+
69+
Do not change the version on `main` as part of the point release. It should
70+
remain on the odd minor version for the current pre-release development cycle.
71+
72+
## Python environment tools dependency
73+
74+
The branch named in the stable pipeline's `DownloadPipelineArtifact` step, such
75+
as `refs/heads/release/2026.12`, belongs to the external Python environment
76+
tools build. It is separate from this repository's `release/1.<even minor>.0`
77+
branch. Before a stable release, verify that the configured tools branch is the
78+
one intended for that release; update it in a separate pull request when the
79+
tools release changes.

0 commit comments

Comments
 (0)