@@ -11,7 +11,110 @@ Thank you for your interest in contributing to CUDA Python! Based on the type of
11112 . 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