Skip to content

Commit 925f399

Browse files
Address review feedback on RELEASE.md
- Remove internal nvbug link, keep example text - Condense dependency check guidance - Remove stale note about docs build failing on tag push - Clarify test verification uses checked-out repo - Document three conda-forge approaches (bot auto, bot request, manual) Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 98cc331 commit 925f399

File tree

2 files changed

+72
-53
lines changed

2 files changed

+72
-53
lines changed

.github/ISSUE_TEMPLATE/release_checklist.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ body:
1010
- type: markdown
1111
attributes:
1212
value: |
13-
This checklist is for cuda-core releases as well as cuda-bindings patches. Please go through this checklist and ensure all tasks are completed. See [RELEASE.md](../RELEASE.md) for detailed guidance on each step.
13+
This checklist is for cuda-core releases as well as cuda-bindings patches. Please go through this checklist and ensure all tasks are completed. See [RELEASE-core.md](../RELEASE-core.md) for detailed guidance on each step (cuda.core).
1414
1515
- type: checkboxes
1616
id: subpackage-tasks
Lines changed: 71 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
<!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -->
22
<!-- SPDX-License-Identifier: Apache-2.0 -->
33

4-
# Release Process
4+
# cuda.core Release Process
55

6-
This document provides detailed guidance for each step of the
6+
This document covers the `cuda.core` release process. For other packages:
7+
`cuda-bindings` and `cuda-python` involve a private repository and are not
8+
documented here; `cuda-pathfinder` is largely automated by the
9+
[release-cuda-pathfinder.yml](workflows/release-cuda-pathfinder.yml)
10+
workflow.
11+
12+
Each section below provides detailed guidance for a step in the
713
[Release Checklist](ISSUE_TEMPLATE/release_checklist.yml). To start a
814
release, create a new issue from that template and work through it item by
915
item, referring back here as needed.
@@ -12,12 +18,12 @@ item, referring back here as needed.
1218

1319
## File an internal nvbug
1420

15-
Create an nvbug from the SWQA template to request pre-release validation.
16-
To find the template, search for a previous release's nvbug (e.g. by
17-
title "Release of cuda.core") and create a new bug from the same template.
21+
Create an nvbug to request that SWQA begin post-release validation. Issues
22+
identified by that process are typically addressed in a patch release. To find
23+
the template, search for a previous release's nvbug (e.g. by title "Release of
24+
cuda.core") and create a new bug from the same template.
1825

19-
Example (from the cuda.core v0.6.0 release,
20-
[nvbug 5910741](https://nvbugspro.nvidia.com/bug/5910741)):
26+
Example:
2127

2228
> **Title:** Release of cuda.core v0.6.0
2329
>
@@ -48,28 +54,15 @@ Example (from the cuda.core v0.6.0 release,
4854
> - PyPI wheel upload
4955
> - Post-release validation
5056
51-
**How to determine the SW combinations:**
52-
53-
- **cuda.core version**: The version being released.
54-
- **cuda.bindings, CTK, and CUDA driver versions**: Check with the release owner.
55-
56-
Update the version, SW combinations, and platforms as appropriate for each
57-
release.
57+
Update the version, SW combinations (check with the release owner), and
58+
platforms as appropriate for each release.
5859

5960
---
6061

6162
## Check (or update if needed) the dependency requirements
6263

63-
Review `cuda_core/pyproject.toml` and verify the following are current:
64-
65-
- `requires-python` — supported Python version range
66-
- `dependencies` — runtime dependencies (e.g. `numpy`)
67-
- `[project.optional-dependencies]``cuda-bindings` version pins for
68-
`cu12` / `cu13` extras
69-
- `[build-system] requires` — Cython and setuptools version pins
70-
- `[dependency-groups]` — test dependencies (`ml-dtypes`, `cupy`,
71-
`cuda-toolkit` version pins)
72-
- Python version classifiers in `[project]`
64+
Review `cuda_core/pyproject.toml` and verify that all dependency
65+
requirements are current.
7366

7467
---
7568

@@ -120,8 +113,6 @@ git push origin cuda-core-v0.6.0
120113
Pushing the tag triggers a CI run automatically. Monitor it in the
121114
**Actions** tab on GitHub.
122115

123-
- **The docs build is expected to fail** on tag-triggered runs. This is
124-
normal — docs are built during the release workflow instead.
125116
- **All CI tests should succeed.** If any fail, investigate and rerun as
126117
needed.
127118
- Note the **run ID** of the successful tag-triggered run. The release
@@ -149,10 +140,10 @@ publish to PyPI.
149140
[`ci/versions.yml`](../ci/versions.yml) (e.g. `13.1.1`)
150141
- **Which wheel index to publish to**: `testpypi`
151142

152-
2. Wait for the workflow to complete. The docs build step will fail on
153-
forks — this is expected and does not block the wheel upload.
143+
2. Wait for the workflow to complete.
154144

155-
3. Verify the TestPyPI upload by installing and running tests locally:
145+
3. Verify the TestPyPI upload by installing and running tests from a
146+
checked-out copy of the repository:
156147

157148
```bash
158149
pip install -i https://test.pypi.org/simple/ \
@@ -177,27 +168,43 @@ pip install cuda-core==0.6.0
177168
## Update the conda recipe & release conda packages
178169

179170
The conda-forge feedstock builds from the GitHub Release source archive
180-
(not from PyPI). The bot (`regro-cf-autotick-bot`) does not always pick up
181-
new releases automatically, so you may need to open the PR manually.
171+
(not from PyPI). There are three approaches to updating the feedstock,
172+
from least effort to most control.
182173

183-
### Fork and clone the feedstock
174+
### Approach A: Wait for the bot
184175

185-
```bash
186-
gh repo fork conda-forge/cuda-core-feedstock --clone
187-
cd cuda-core-feedstock
188-
```
176+
The `regro-cf-autotick-bot` periodically scans for new releases and opens
177+
a PR automatically. If nothing has changed in the build requirements, the
178+
bot's PR may be sufficient — review it and ask a feedstock maintainer
179+
to merge. However, the bot only
180+
updates the version and sha256. If build dependencies, import paths, or
181+
other recipe fields have changed, the bot's PR will be incomplete and CI
182+
will fail.
183+
184+
### Approach B: Request a bot update
185+
186+
If the bot hasn't opened a PR, you can request one explicitly. Go to the
187+
feedstock's Issues tab and create a new "Bot commands" issue:
188+
189+
- **Title**: `@conda-forge-admin, please update version`
190+
- **Body**: (leave empty)
189191

190-
Optional: Set up remotes so your fork is named after your GitHub username:
192+
This triggers the bot to create a version-bump PR. As with approach A,
193+
review the PR and push additional fixes if needed.
194+
195+
### Approach C: Manual PR
196+
197+
For full control — or when the bot's PR needs extensive fixes — open a
198+
PR manually from a fork.
199+
200+
**Fork and clone** (one-time setup):
191201

192202
```bash
193-
git remote rename origin <your-github-username>
194-
git remote add origin https://github.com/conda-forge/cuda-core-feedstock.git
195-
git fetch origin
203+
gh repo fork conda-forge/cuda-core-feedstock --clone
204+
cd cuda-core-feedstock
196205
```
197206

198-
### Update `recipe/meta.yaml`
199-
200-
Create a branch and edit `recipe/meta.yaml`:
207+
**Create a branch and edit `recipe/meta.yaml`:**
201208

202209
```bash
203210
git checkout -b update-v0.6.0 origin/main
@@ -215,16 +222,16 @@ Update the following fields:
215222
| sha256sum
216223
```
217224

218-
4. **Host dependencies**: Ensure all headers needed at build time are
219-
listed. For example, v0.6.0 added a Cython C++ dependency on
220-
`nvrtc.h`, requiring `cuda-nvrtc-dev` to be added to both `host`
221-
requirements and `ignore_run_exports_from`.
225+
4. **Host dependencies**: Ensure all build-time dependencies are listed.
226+
For example, v0.6.0 added a Cython C++ dependency on `nvrtc.h`,
227+
requiring `cuda-nvrtc-dev` in both `host` requirements and
228+
`ignore_run_exports_from`.
222229

223230
5. **Test commands and descriptions**: Update any import paths or
224231
descriptions that changed (e.g. `cuda.core.experimental` ->
225232
`cuda.core`).
226233

227-
### Open a PR
234+
**Open a PR:**
228235

229236
```bash
230237
git add recipe/meta.yaml
@@ -238,9 +245,12 @@ gh pr create \
238245
--body "Update cuda-core to version 0.6.0."
239246
```
240247

248+
### Notes
249+
241250
The feedstock CI (Azure Pipelines) triggers automatically on the PR.
242-
Monitor it for build failures — common issues include missing
243-
build-time header dependencies (see host dependencies above).
251+
Monitor it for build failures — common issues include missing build-time
252+
header dependencies. Feedstock maintainers (listed in
253+
`recipe/meta.yaml` under `extra.recipe-maintainers`) can merge the PR.
244254

245255
---
246256

@@ -252,13 +262,22 @@ build-time header dependencies (see host dependencies above).
252262

253263
## Finalize the announcement update
254264

255-
*TBD*
265+
The release workflow creates a draft GitHub Release. To publish it:
266+
267+
1. Go to the repository on GitHub, click **Tags**, then switch to the
268+
**Releases** tab.
269+
2. Find the draft release for the new tag and click **Edit**.
270+
3. Copy the body from a previous release as a starting point. It
271+
typically links to the release notes in the documentation (e.g.
272+
`https://nvidia.github.io/cuda-python/cuda-core/latest/release/0.6.0-notes.html`).
273+
4. Update the link and any version references, then click
274+
**Publish release**.
256275

257276
---
258277

259278
## Send out the announcement internally
260279

261-
*TBD*
280+
The release owner will prepare and send the announcement.
262281

263282
---
264283

0 commit comments

Comments
 (0)