Skip to content

Commit 90401b2

Browse files
docs: document the release process (#1753)
## Summary - document the stable release workflow, including even and odd version bumps - describe release branch naming and stable pipeline publication - add point release instructions that reuse the existing release branch - clarify that the external Python environment tools release branch is separate ## Validation - `npm run lint` - `npm run compile-tests` - `npm run unittest` - `git diff --check` --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent b893232 commit 90401b2

2 files changed

Lines changed: 65 additions & 0 deletions

File tree

‎CONTRIBUTING.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ The npm package under [`api/`](./api) is the public API facade other extensions
107107
## Additional Resources
108108

109109
- [Development Process](https://github.com/Microsoft/vscode-python/blob/main/CONTRIBUTING.md#development-process)
110+
- [Release Process](./docs/releasing.md)
110111
- [API Documentation](./src/api.ts)
111112
- [Project Documentation](./docs/projects-api-reference.md)
112113

‎docs/releasing.md‎

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
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. Change the version in `package.json` to the next even minor version, for
12+
example `1.38.0`.
13+
2. Run `npm i` to update `package-lock.json`.
14+
3. Create and merge a pull request against `main`.
15+
4. Create the release branch from the updated `main` branch. Name it
16+
`release/1.<even minor>.0`, for example `release/1.38.0`, and push it to the
17+
upstream repository.
18+
5. Change the version in `package.json` to the next odd minor version, for
19+
example `1.39.0`.
20+
6. Run `npm i` to update `package-lock.json`.
21+
7. Create and merge a second pull request against `main`. Do not merge this
22+
change into the release branch.
23+
24+
The release branch must therefore retain the even version while `main` moves
25+
back to an odd pre-release version.
26+
27+
## Publish on release day
28+
29+
1. Run the stable Azure Pipelines build defined by
30+
`build/azure-pipeline.stable.yml`.
31+
2. Select the prepared release branch, for example `release/1.38.0`.
32+
3. Set the **Publish Extension** parameter to `true`.
33+
4. Monitor the build until publishing completes.
34+
5. Verify that the extension is available in the Marketplace and that the
35+
corresponding GitHub tag and release were created. The stable pipeline
36+
automatically generates and publishes the GitHub release notes.
37+
38+
## Publish a point release
39+
40+
Use the existing release branch for a patch to a stable release. For example,
41+
release `1.38.1` from `release/1.38.0`; do not create a
42+
`release/1.38.1` branch.
43+
44+
1. Change the version in `package.json` to the new patch version, for example
45+
`1.38.1`.
46+
2. Run `npm i` to update `package-lock.json`.
47+
3. Create and merge a pull request against the existing release branch, for
48+
example `release/1.38.0`.
49+
4. On release day, run the stable Azure Pipelines build from that release
50+
branch with **Publish Extension** set to `true`.
51+
5. Verify the Marketplace publication and the automatically generated GitHub
52+
tag and release notes for the point release.
53+
54+
Do not change the version on `main` as part of the point release. It should
55+
remain on the odd minor version for the current pre-release development cycle.
56+
57+
## Python environment tools dependency
58+
59+
The branch named in the stable pipeline's `DownloadPipelineArtifact` step, such
60+
as `refs/heads/release/2026.12`, belongs to the external Python environment
61+
tools build. It is separate from this repository's `release/1.<even minor>.0`
62+
branch. Before a stable release, verify that the configured tools branch is the
63+
one intended for that release; update it in a separate pull request when the
64+
tools release changes.

0 commit comments

Comments
 (0)