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
814release, create a new issue from that template and work through it item by
915item, 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
120113Pushing 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
179170The 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
203210git 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
2232305 . ** 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
230237git 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+
241250The 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