[docs-only] Add release process guide and update release checklist#1683
[docs-only] Add release process guide and update release checklist#1683Andy-Jost wants to merge 2 commits intoNVIDIA:mainfrom
Conversation
Add .github/RELEASE.md with step-by-step guidance for each item in the release checklist, based on lessons learned from the cuda.core v0.6.0 release. Remove obsolete checklist items (RC tag, pre-release QA, nvidia conda channel upload). Co-authored-by: Cursor <cursoragent@cursor.com>
|
/ok to test 98cc331 |
|
| @@ -0,0 +1,267 @@ | |||
| <!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. --> | |||
There was a problem hiding this comment.
This is specific to cuda-core, which is great, but it's currently not reflected in the filename. How about:
RELEASE-core.md
Ideally, the ISSUE_TEMPLATE would also have core in the name, e.g. release-core-checklist.yml (or with underscores instead of dashes).
There was a problem hiding this comment.
My thought was that we should unify the release documentation. So, for this document we could just add sections. To me it's simpler than keeping separate RELEASE-*.md docs.
I think the bar should be quite low for this change. It puts something in place that we can improve in any way we like.
.github/RELEASE.md
Outdated
| To find the template, search for a previous release's nvbug (e.g. by | ||
| title "Release of cuda.core") and create a new bug from the same template. | ||
|
|
||
| Example (from the cuda.core v0.6.0 release, |
There was a problem hiding this comment.
I think we're meant to avoid such URLs. I don't think we really need an example. Your instructions above are clear without.
.github/RELEASE.md
Outdated
| - `requires-python` — supported Python version range | ||
| - `dependencies` — runtime dependencies (e.g. `numpy`) | ||
| - `[project.optional-dependencies]` — `cuda-bindings` version pins for | ||
| `cu12` / `cu13` extras | ||
| - `[build-system] requires` — Cython and setuptools version pins | ||
| - `[dependency-groups]` — test dependencies (`ml-dtypes`, `cupy`, | ||
| `cuda-toolkit` version pins) | ||
| - Python version classifiers in `[project]` |
There was a problem hiding this comment.
Too much detail? Especially because they are likely to bit-rot quickly. I think it'll be fully sufficient to write:
Review cuda_core/pyproject.toml and verify that all dependency requirements are current.
.github/RELEASE.md
Outdated
| - **The docs build is expected to fail** on tag-triggered runs. This is | ||
| normal — docs are built during the release workflow instead. |
There was a problem hiding this comment.
This is not true anymore. It was fixed by #1662
.github/RELEASE.md
Outdated
| 2. Wait for the workflow to complete. The docs build step will fail on | ||
| forks — this is expected and does not block the wheel upload. |
There was a problem hiding this comment.
The second sentence should be deleted.
.github/RELEASE.md
Outdated
| 2. Wait for the workflow to complete. The docs build step will fail on | ||
| forks — this is expected and does not block the wheel upload. | ||
|
|
||
| 3. Verify the TestPyPI upload by installing and running tests locally: |
There was a problem hiding this comment.
It'd be helpful to clarify that cuda_core/tests is a directory in a checked-out repo.
.github/RELEASE.md
Outdated
| ### Fork and clone the feedstock | ||
|
|
||
| ```bash | ||
| gh repo fork conda-forge/cuda-core-feedstock --clone | ||
| cd cuda-core-feedstock | ||
| ``` | ||
|
|
||
| Optional: Set up remotes so your fork is named after your GitHub username: | ||
|
|
||
| ```bash | ||
| git remote rename origin <your-github-username> | ||
| git remote add origin https://github.com/conda-forge/cuda-core-feedstock.git | ||
| git fetch origin | ||
| ``` | ||
|
|
||
| ### Update `recipe/meta.yaml` | ||
|
|
||
| Create a branch and edit `recipe/meta.yaml`: | ||
|
|
||
| ```bash | ||
| git checkout -b update-v0.6.0 origin/main | ||
| ``` | ||
|
|
||
| Update the following fields: | ||
|
|
||
| 1. **`version`**: Set to the new version (e.g. `0.6.0`). | ||
| 2. **`number`** (build number): Reset to `0` for a new version. | ||
| 3. **`sha256`**: The SHA-256 of the source archive from the GitHub | ||
| Release. Download it and compute the hash: | ||
|
|
||
| ```bash | ||
| curl -sL https://github.com/NVIDIA/cuda-python/releases/download/cuda-core-v0.6.0/cuda-python-cuda-core-v0.6.0.tar.gz \ | ||
| | sha256sum | ||
| ``` | ||
|
|
||
| 4. **Host dependencies**: Ensure all headers needed at build time are | ||
| listed. For example, v0.6.0 added a Cython C++ dependency on | ||
| `nvrtc.h`, requiring `cuda-nvrtc-dev` to be added to both `host` | ||
| requirements and `ignore_run_exports_from`. | ||
|
|
||
| 5. **Test commands and descriptions**: Update any import paths or | ||
| descriptions that changed (e.g. `cuda.core.experimental` -> | ||
| `cuda.core`). | ||
|
|
||
| ### Open a PR | ||
|
|
||
| ```bash | ||
| git add recipe/meta.yaml | ||
| git commit -m "Update cuda-core to 0.6.0" | ||
| git push <your-github-username> update-v0.6.0 | ||
|
|
||
| gh pr create \ | ||
| --repo conda-forge/cuda-core-feedstock \ | ||
| --head <your-github-username>:update-v0.6.0 \ | ||
| --title "Update cuda-core to 0.6.0" \ | ||
| --body "Update cuda-core to version 0.6.0." | ||
| ``` | ||
|
|
||
| The feedstock CI (Azure Pipelines) triggers automatically on the PR. | ||
| Monitor it for build failures — common issues include missing | ||
| build-time header dependencies (see host dependencies above). |
There was a problem hiding this comment.
For pathfinder, it's usually much simpler:
https://github.com/conda-forge/cuda-pathfinder-feedstock/issues
[New issue] → Bot commands
Title: @conda-forge-admin, please update version
Leave message empty
[Create]
That automatically creates the PR. Usually I only have to click a few buttons. Did you already try this for the cuda-core-feedstock?
Occasionally I had to git clone and add manual fixes/workarounds, but I never had to specify remotes or branches manually.
There was a problem hiding this comment.
The bot created a PR, but it was missing dependency and other updates and I could not push to it, so I had to make my own.
- 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>
8d9ae97 to
31e7c73
Compare
|
/ok to test 31e7c73 |
Summary
.github/RELEASE.mdwith step-by-step guidance for each item in the release checklist, based on lessons learned from thecuda.core v0.6.0release..github/ISSUE_TEMPLATE/release_checklist.ymlto remove obsolete items (RC tag, pre-release QA, nvidia conda channel upload) and add a link to the new guide.Changes
.github/RELEASE.md(new): Detailed guidance covering nvbug filing, dependency checks, release notes, doc versioning, tagging, CI verification, TestPyPI/PyPI publishing, and conda-forge feedstock updates..github/ISSUE_TEMPLATE/release_checklist.yml: Removed 4 obsolete checklist items, added link to RELEASE.md, updated copyright year.Test plan
Made with Cursor