Skip to content

Commit c119422

Browse files
Copilotleofang
andcommitted
Add CI infrastructure overview section to CONTRIBUTING.md
- Added cuda-pathfinder component to the component guidelines list - Added footnote explaining cuda.bindings follows cuda-python contributing guide - Added comprehensive CI infrastructure overview section with: - Visual flowchart diagram showing build → test → release pipeline - Platform and runner details (self-hosted vs GitHub-hosted) - Artifact storage and propagation (GitHub Artifacts vs Cache) - Branch-specific workflows (main, backport, pull-request) - Key infrastructure details Co-authored-by: leofang <5534781+leofang@users.noreply.github.com>
1 parent 743fd97 commit c119422

1 file changed

Lines changed: 108 additions & 1 deletion

File tree

CONTRIBUTING.md

Lines changed: 108 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,110 @@ Thank you for your interest in contributing to CUDA Python! Based on the type of
1111
2. You want to implement a feature, improvement, or bug fix:
1212
- Please refer to each component's guideline:
1313
- [`cuda.core`](https://nvidia.github.io/cuda-python/cuda-core/latest/contribute.html)
14-
- [`cuda.bindings`](https://nvidia.github.io/cuda-python/cuda-bindings/latest/contribute.html)
14+
- [`cuda.bindings`](https://nvidia.github.io/cuda-python/cuda-bindings/latest/contribute.html)¹
15+
- [`cuda.pathfinder`](https://nvidia.github.io/cuda-python/cuda-pathfinder/latest/contribute.html)
16+
17+
18+
## CI infrastructure overview
19+
20+
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.
21+
22+
### CI Pipeline Flow
23+
24+
```
25+
┌─────────────────────────────────────────────────────────────────────────────────────┐
26+
│ TRIGGER EVENTS │
27+
│ • Push to main branch • Pull request │
28+
│ • Push to pull-request/* branches • Manual workflow dispatch │
29+
└─────────────────────────────────────────────────────────────────────────────────────┘
30+
31+
32+
┌─────────────────────────────────────────────────────────────────────────────────────┐
33+
│ BUILD STAGE │
34+
│ │
35+
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
36+
│ │ linux-64 │ │ linux-aarch64 │ │ win-64 │ │
37+
│ │ Self-hosted │ │ Self-hosted │ │ GitHub-hosted │ │
38+
│ │ linux-amd64-cpu8│ │ linux-arm64-cpu8│ │ windows-2022 │ │
39+
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
40+
│ │
41+
│ • Python versions: 3.9, 3.10, 3.11, 3.12, 3.13 │
42+
│ • CUDA version: 13.0.0 (build-time) │
43+
│ • Components: cuda-core, cuda-bindings, cuda-pathfinder, cuda-python │
44+
└─────────────────────────────────────────────────────────────────────────────────────┘
45+
46+
47+
┌─────────────────────────────────────────────────────────────────────────────────────┐
48+
│ ARTIFACT STORAGE │
49+
│ │
50+
│ ┌──────────────────────────┐ ┌──────────────────────────┐ │
51+
│ │ GitHub Artifacts │ │ GitHub Cache │ │
52+
│ │ • Wheel files (.whl) │ │ • Build dependencies │ │
53+
│ │ • Test artifacts │ │ • Compiled binaries │ │
54+
│ │ • Documentation │ │ • Python environments │ │
55+
│ │ (30-day retention) │ │ • Package caches │ │
56+
│ └──────────────────────────┘ └──────────────────────────┘ │
57+
└─────────────────────────────────────────────────────────────────────────────────────┘
58+
59+
60+
┌─────────────────────────────────────────────────────────────────────────────────────┐
61+
│ TEST STAGE │
62+
│ │
63+
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
64+
│ │ linux-64 │ │ linux-aarch64 │ │ win-64 │ │
65+
│ │ Self-hosted │ │ Self-hosted │ │ GitHub-hosted │ │
66+
│ │ GPU runners │ │ GPU runners │ │ GPU runners │ │
67+
│ │ (L4/A100) │ │ (A100) │ │ │ │
68+
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
69+
│ │
70+
│ • Download wheels from artifacts │
71+
│ • Test against multiple CUDA runtime versions │
72+
│ • Run Python unit tests, Cython tests, examples │
73+
└─────────────────────────────────────────────────────────────────────────────────────┘
74+
75+
76+
┌─────────────────────────────────────────────────────────────────────────────────────┐
77+
│ RELEASE PIPELINE │
78+
│ │
79+
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
80+
│ │ Validation │────▶│ Publishing │────▶│ Documentation │ │
81+
│ │ • Artifact │ │ • PyPI/TestPyPI │ │ • GitHub Pages │ │
82+
│ │ integrity │ │ • Component or │ │ • API docs │ │
83+
│ │ • Git tag │ │ all releases │ │ • Release notes │ │
84+
│ │ verification │ │ │ │ │ │
85+
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
86+
│ │
87+
│ • Manual workflow dispatch with run ID │
88+
│ • Supports individual component or full releases │
89+
└─────────────────────────────────────────────────────────────────────────────────────┘
90+
```
91+
92+
### Branch-specific Artifact Flow
93+
94+
#### Main Branch
95+
- **Build****Test****Documentation****Potential Release**
96+
- Artifacts stored as `{component}-python{version}-{platform}-{sha}`
97+
- Full test coverage across all platforms and CUDA versions
98+
99+
#### Backport Branches
100+
- **Build****Test****Backport PR Creation**
101+
- Artifacts used for validation before creating backport pull requests
102+
- Maintains compatibility with older CUDA versions
103+
104+
#### Pull Request Branches (`pull-request/*`)
105+
- **Build****Test****Status Check**
106+
- Artifacts used for CI validation only
107+
- Prevents untrusted code execution through signed commits requirement
108+
109+
### Key Infrastructure Details
110+
111+
- **Self-hosted runners**: Used for Linux builds and GPU testing (more resources, faster builds)
112+
- **GitHub-hosted runners**: Used for Windows builds and general tasks
113+
- **Artifact retention**: 30 days for GitHub Artifacts (wheels, docs, tests)
114+
- **Cache retention**: GitHub Cache for build dependencies and environments
115+
- **Security**: All commits must be signed, untrusted code blocked
116+
- **Parallel execution**: Matrix builds across Python versions and platforms
117+
- **Component isolation**: Each component (core, bindings, pathfinder, python) can be built/released independently
15118

16119

17120
## Pre-commit
@@ -78,3 +181,7 @@ By making a contribution to this project, I certify that:
78181
maintained indefinitely and may be redistributed consistent with
79182
this project or the open source license(s) involved.
80183
```
184+
185+
---
186+
187+
¹ `cuda.bindings` follows the contributing guidelines from this repository (`cuda-python`).

0 commit comments

Comments
 (0)