Skip to content
Merged
Changes from 2 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
743fd97
Initial plan
Copilot Aug 28, 2025
c119422
Add CI infrastructure overview section to CONTRIBUTING.md
Copilot Aug 28, 2025
2816809
Address CI infrastructure feedback: update flowchart, fix footnotes, …
Copilot Aug 28, 2025
730b872
Update SVG diagram with requested changes and move to ci/ directory
Copilot Aug 28, 2025
dcc83bd
Remove nv-gha-runners implementation detail and improve SVG diagram l…
Copilot Aug 28, 2025
ec0cd1e
Convert SVG diagram to hand-drawn Excalidraw-like style
Copilot Aug 28, 2025
b748d3a
Remove pull-request/* branches section from CONTRIBUTING.md
Copilot Aug 28, 2025
144e722
Add artifact flow arrows and regeneration reference file
Copilot Aug 28, 2025
c0b6476
Fix SVG arrow styling and add parallel execution documentation
Copilot Sep 7, 2025
a6cd1cf
Fix SVG arrow styling and restructure CONTRIBUTING.md
Copilot Sep 7, 2025
8633610
Fix SVG arrow styling, move footnote to bottom, and add Mermaid diagram
Copilot Sep 7, 2025
3ad9bfd
Fix SVG arrow positioning to prevent overlap with boxes and remove un…
Copilot Sep 7, 2025
81f4543
Manually adjust SVG marker sizes and text positions
leofang Sep 7, 2025
7e1d094
Replace duplicated Mermaid content with file reference and update reg…
Copilot Sep 7, 2025
dbda910
Rename ci-pipeline.mmd to ci-pipeline.md
leofang Sep 7, 2025
9a2f1af
try this
leofang Sep 7, 2025
0190272
Inline Mermaid diagram in CONTRIBUTING.md instead of file reference
Copilot Sep 7, 2025
2334bcf
Delete ci/ci-pipeline.md
leofang Sep 7, 2025
376f571
[pre-commit.ci] auto code formatting
pre-commit-ci[bot] Sep 7, 2025
d02a546
Add SPDX headers to CI pipeline files
Copilot Sep 7, 2025
b72d10b
Fix footnote formatting and convert .txt to .md for pipeline regenera…
Copilot Sep 7, 2025
91724fe
md files don't need spdx
leofang Sep 7, 2025
9ce239a
Remove pull-request/* branches trigger event references from CI docum…
Copilot Sep 8, 2025
9b86fb6
Update ci/ci-pipeline.svg
leofang Sep 8, 2025
14b1717
Merge branch 'main' into copilot/fix-915
leofang Sep 8, 2025
456444f
Add artifact flow arrows to TEST STAGE and remove empty line from SVG
Copilot Sep 8, 2025
d2b397a
Apply suggestions from code review
leofang Sep 8, 2025
dc001e6
Fix SVG artifact flow arrows and add wheel upload label
Copilot Sep 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 108 additions & 1 deletion CONTRIBUTING.md
Comment thread
leofang marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,110 @@ Thank you for your interest in contributing to CUDA Python! Based on the type of
2. You want to implement a feature, improvement, or bug fix:
- Please refer to each component's guideline:
- [`cuda.core`](https://nvidia.github.io/cuda-python/cuda-core/latest/contribute.html)
- [`cuda.bindings`](https://nvidia.github.io/cuda-python/cuda-bindings/latest/contribute.html)
- [`cuda.bindings`](https://nvidia.github.io/cuda-python/cuda-bindings/latest/contribute.html)¹
Comment thread
leofang marked this conversation as resolved.
Outdated
- [`cuda.pathfinder`](https://nvidia.github.io/cuda-python/cuda-pathfinder/latest/contribute.html)


## CI infrastructure overview

The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and releases multiple components across different platforms. This section provides a visual overview of our CI infrastructure to help contributors understand the build and release process.

### CI Pipeline Flow

```
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ TRIGGER EVENTS │
│ • Push to main branch • Pull request │
│ • Push to pull-request/* branches • Manual workflow dispatch │
└─────────────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ BUILD STAGE │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ linux-64 │ │ linux-aarch64 │ │ win-64 │ │
│ │ Self-hosted │ │ Self-hosted │ │ GitHub-hosted │ │
│ │ linux-amd64-cpu8│ │ linux-arm64-cpu8│ │ windows-2022 │ │
Comment thread
leofang marked this conversation as resolved.
Outdated
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │
│ • Python versions: 3.9, 3.10, 3.11, 3.12, 3.13 │
│ • CUDA version: 13.0.0 (build-time) │
│ • Components: cuda-core, cuda-bindings, cuda-pathfinder, cuda-python │
└─────────────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ ARTIFACT STORAGE │
│ │
│ ┌──────────────────────────┐ ┌──────────────────────────┐ │
│ │ GitHub Artifacts │ │ GitHub Cache │ │
│ │ • Wheel files (.whl) │ │ • Build dependencies │ │
│ │ • Test artifacts │ │ • Compiled binaries │ │
│ │ • Documentation │ │ • Python environments │ │
│ │ (30-day retention) │ │ • Package caches │ │
Comment thread
leofang marked this conversation as resolved.
Outdated
│ └──────────────────────────┘ └──────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ TEST STAGE │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ linux-64 │ │ linux-aarch64 │ │ win-64 │ │
│ │ Self-hosted │ │ Self-hosted │ │ GitHub-hosted │ │
│ │ GPU runners │ │ GPU runners │ │ GPU runners │ │
│ │ (L4/A100) │ │ (A100) │ │ │ │
Comment thread
leofang marked this conversation as resolved.
Outdated
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │
│ • Download wheels from artifacts │
│ • Test against multiple CUDA runtime versions │
│ • Run Python unit tests, Cython tests, examples │
└─────────────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ RELEASE PIPELINE │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Validation │────▶│ Publishing │────▶│ Documentation │ │
│ │ • Artifact │ │ • PyPI/TestPyPI │ │ • GitHub Pages │ │
│ │ integrity │ │ • Component or │ │ • API docs │ │
│ │ • Git tag │ │ all releases │ │ • Release notes │ │
│ │ verification │ │ │ │ │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │
│ • Manual workflow dispatch with run ID │
│ • Supports individual component or full releases │
└─────────────────────────────────────────────────────────────────────────────────────┘
```

### Branch-specific Artifact Flow

#### Main Branch
- **Build** → **Test** → **Documentation** → **Potential Release**
Comment thread
leofang marked this conversation as resolved.
Outdated
- Artifacts stored as `{component}-python{version}-{platform}-{sha}`
- Full test coverage across all platforms and CUDA versions

#### Backport Branches
- **Build** → **Test** → **Backport PR Creation**
- Artifacts used for validation before creating backport pull requests
- Maintains compatibility with older CUDA versions

#### Pull Request Branches (`pull-request/*`)
- **Build** → **Test** → **Status Check**
- Artifacts used for CI validation only
- Prevents untrusted code execution through signed commits requirement
Comment thread
leofang marked this conversation as resolved.
Outdated

### Key Infrastructure Details

- **Self-hosted runners**: Used for Linux builds and GPU testing (more resources, faster builds)
- **GitHub-hosted runners**: Used for Windows builds and general tasks
- **Artifact retention**: 30 days for GitHub Artifacts (wheels, docs, tests)
- **Cache retention**: GitHub Cache for build dependencies and environments
- **Security**: All commits must be signed, untrusted code blocked
- **Parallel execution**: Matrix builds across Python versions and platforms
- **Component isolation**: Each component (core, bindings, pathfinder, python) can be built/released independently


## Pre-commit
Expand Down Expand Up @@ -78,3 +181,7 @@ By making a contribution to this project, I certify that:
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
```

---
Comment thread
leofang marked this conversation as resolved.
Outdated

¹ `cuda.bindings` follows the contributing guidelines from this repository (`cuda-python`).