You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The version number follows the format `major.minor.patch` for stable, or `major.minor.patchrcN` for release candidates.
88
93
89
-
## 3. Release PR
94
+
## 3. Tag and publish a release candidate
95
+
96
+
RC tags are pushed **directly from the release branch** — no PR to `main` required.
97
+
98
+
```bash
99
+
git tag -a vX.Y.ZrcN -m "Release candidate vX.Y.ZrcN"
100
+
git push origin vX.Y.ZrcN
101
+
```
102
+
103
+
This triggers `publish-testpypi.yml`, which publishes to **TestPyPI** and creates a GitHub pre-release.
104
+
105
+
If issues are found, fix them on the release branch, bump to the next RC (`rcN+1`), and repeat.
106
+
107
+
## 4. Release PR (stable only)
108
+
109
+
Once all RCs are approved, open a PR from `release/vX.Y.Z` to `main`:
90
110
91
-
- Open a PR from `release/vX.Y.Z` to `main`
92
111
- After review and approval, merge the PR
93
112
-**Merging to `main` does NOT trigger a PyPI release**
94
113
95
114
> **Promoting a model from experimental to stable?** Verify the [Model Promotion Policy](model_promotion_policy.md) checklist is complete before merging a release PR that includes a promotion.
96
115
97
-
## 4. Create and push the Git tag
116
+
## 5. Create and push the stable tag
98
117
99
-
After the release PR is merged, the maintainer creates the release tag:
118
+
After the release PR is merged:
100
119
101
120
```bash
102
121
git checkout main && git pull
103
122
git tag -a vX.Y.Z -m "Release vX.Y.Z"
104
123
git push origin vX.Y.Z
105
124
```
106
125
107
-
For a release candidate:
108
-
109
-
```bash
110
-
git tag -a vX.Y.Zrc1 -m "Release candidate vX.Y.Zrc1"
111
-
git push origin vX.Y.Zrc1
112
-
```
113
-
114
-
## 5. Publish package to PyPI
126
+
## 6. Publish package to PyPI
115
127
116
128
The tag push automatically triggers the appropriate workflow in GitHub Actions:
117
129
118
130
- Stable tag (`vX.Y.Z`) → `publish-pypi.yml` → publishes to **PyPI** + creates GitHub Release
119
-
- RC tag (`vX.Y.Zrc1`) → `publish-testpypi.yml` → publishes to **TestPyPI** + creates GitHub pre-release
131
+
- RC tag (`vX.Y.ZrcN`) → `publish-testpypi.yml` → publishes to **TestPyPI** + creates GitHub pre-release
120
132
121
133
Both workflows:
122
134
@@ -127,6 +139,6 @@ Both workflows:
127
139
128
140
> **Note:** A `pypi-publish` GitHub Environment (for stable) and `testpypi-publish` environment (for RCs) must be configured with tag-based deployment protection rules.
129
141
130
-
## 6. GitHub Release
142
+
## 7. GitHub Release
131
143
132
144
The GitHub Release is created automatically by the publish workflow. Verify the release notes are correct and add any manual context if needed.
0 commit comments