@@ -11,7 +11,15 @@ 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 ) <sup >[ 1] ( #footnote1 ) </sup >
15+ - [ ` cuda.pathfinder ` ] ( https://nvidia.github.io/cuda-python/cuda-pathfinder/latest/contribute.html )
16+
17+ ## Table of Contents
18+
19+ - [ Pre-commit] ( #pre-commit )
20+ - [ Code signing] ( #code-signing )
21+ - [ Developer Certificate of Origin (DCO)] ( #developer-certificate-of-origin-dco )
22+ - [ CI infrastructure overview] ( #ci-infrastructure-overview )
1523
1624
1725## Pre-commit
@@ -78,3 +86,127 @@ By making a contribution to this project, I certify that:
7886 maintained indefinitely and may be redistributed consistent with
7987 this project or the open source license(s) involved.
8088```
89+
90+ ## CI infrastructure overview
91+
92+ 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.
93+
94+ ### CI Pipeline Flow
95+
96+ ![ CUDA Python CI Pipeline Flow] ( ci/ci-pipeline.svg )
97+
98+ Alternative Mermaid diagram representation:
99+
100+ ``` mermaid
101+ flowchart TD
102+ %% Trigger Events
103+ subgraph TRIGGER["🔄 TRIGGER EVENTS"]
104+ T1["• Push to main branch"]
105+ T2["• Pull request<br/>• Manual workflow dispatch"]
106+ T1 --- T2
107+ end
108+
109+ %% Build Stage
110+ subgraph BUILD["🔨 BUILD STAGE"]
111+ subgraph BUILD_PLATFORMS["Parallel Platform Builds"]
112+ B1["linux-64<br/>(Self-hosted)"]
113+ B2["linux-aarch64<br/>(Self-hosted)"]
114+ B3["win-64<br/>(GitHub-hosted)"]
115+ end
116+ BUILD_DETAILS["• Python versions: 3.9, 3.10, 3.11, 3.12, 3.13<br/>• CUDA version: 13.0.0 (build-time)<br/>• Components: cuda-core, cuda-bindings,<br/> cuda-pathfinder, cuda-python"]
117+ end
118+
119+ %% Artifact Storage
120+ subgraph ARTIFACTS["📦 ARTIFACT STORAGE"]
121+ subgraph GITHUB_ARTIFACTS["GitHub Artifacts"]
122+ GA1["• Wheel files (.whl)<br/>• Test artifacts<br/>• Documentation<br/>(30-day retention)"]
123+ end
124+ subgraph GITHUB_CACHE["GitHub Cache"]
125+ GC1["• Mini CTK cache"]
126+ end
127+ end
128+
129+ %% Test Stage
130+ subgraph TEST["🧪 TEST STAGE"]
131+ subgraph TEST_PLATFORMS["Parallel Platform Tests"]
132+ TS1["linux-64<br/>(Self-hosted)"]
133+ TS2["linux-aarch64<br/>(Self-hosted)"]
134+ TS3["win-64<br/>(GitHub-hosted)"]
135+ end
136+ TEST_DETAILS["• Download wheels from artifacts<br/>• Test against multiple CUDA runtime versions<br/>• Run Python unit tests, Cython tests, examples"]
137+ ARTIFACT_FLOWS["Artifact Flows:<br/>• cuda-pathfinder: main → backport<br/>• cuda-bindings: backport → main"]
138+ end
139+
140+ %% Release Pipeline
141+ subgraph RELEASE["🚀 RELEASE PIPELINE"]
142+ subgraph RELEASE_STAGES["Sequential Release Steps"]
143+ R1["Validation<br/>• Artifact integrity<br/>• Git tag verification"]
144+ R2["Publishing<br/>• PyPI/TestPyPI<br/>• Component or all releases"]
145+ R3["Documentation<br/>• GitHub Pages<br/>• Release notes"]
146+ R1 --> R2 --> R3
147+ end
148+ RELEASE_DETAILS["• Manual workflow dispatch with run ID<br/>• Supports individual component or full releases"]
149+ end
150+
151+ %% Main Flow
152+ TRIGGER --> BUILD
153+ BUILD -.->|"wheel upload"| ARTIFACTS
154+ ARTIFACTS -.-> TEST
155+ TEST --> RELEASE
156+
157+ %% Artifact Flow Arrows (Cache Reuse)
158+ GITHUB_CACHE -.->|"mini CTK reuse"| BUILD
159+ GITHUB_CACHE -.->|"mini CTK reuse"| TEST
160+
161+ %% Artifact Flow Arrows (Wheel Fetch)
162+ GITHUB_ARTIFACTS -.->|"wheel fetch"| TEST
163+ GITHUB_ARTIFACTS -.->|"wheel fetch"| RELEASE
164+
165+ %% Styling
166+ classDef triggerStyle fill:#e8f4fd,stroke:#2196F3,stroke-width:2px,color:#1976D2
167+ classDef buildStyle fill:#f3e5f5,stroke:#9C27B0,stroke-width:2px,color:#7B1FA2
168+ classDef artifactStyle fill:#fff3e0,stroke:#FF9800,stroke-width:2px,color:#F57C00
169+ classDef testStyle fill:#e8f5e8,stroke:#4CAF50,stroke-width:2px,color:#388E3C
170+ classDef releaseStyle fill:#ffebee,stroke:#f44336,stroke-width:2px,color:#D32F2F
171+
172+ class TRIGGER,T1,T2 triggerStyle
173+ class BUILD,BUILD_PLATFORMS,B1,B2,B3,BUILD_DETAILS buildStyle
174+ class ARTIFACTS,GITHUB_ARTIFACTS,GITHUB_CACHE,GA1,GC1 artifactStyle
175+ class TEST,TEST_PLATFORMS,TS1,TS2,TS3,TEST_DETAILS,ARTIFACT_FLOWS testStyle
176+ class RELEASE,RELEASE_STAGES,R1,R2,R3,RELEASE_DETAILS releaseStyle
177+ ```
178+
179+ ### Pipeline Execution Details
180+
181+ ** Parallel Execution** : The CI pipeline leverages parallel execution to optimize build and test times:
182+ - ** Build Stage** : Different architectures/operating systems (linux-64, linux-aarch64, win-64) are built in parallel across their respective runners
183+ - ** Test Stage** : Different architectures/operating systems/CUDA versions are tested in parallel; documentation preview is also built in parallel with testing
184+
185+ ### Branch-specific Artifact Flow
186+
187+ #### Main Branch
188+ - ** Build** → ** Test** → ** Documentation** → ** Potential Release**
189+ - Artifacts stored as ` {component}-python{version}-{platform}-{sha} `
190+ - Full test coverage across all platforms and CUDA versions
191+ - ** Artifact flow out** : ` cuda-pathfinder ` artifacts → backport branches
192+
193+ #### Backport Branches
194+ - ** Build** → ** Test** → ** Backport PR Creation**
195+ - Artifacts used for validation before creating backport pull requests
196+ - Maintains compatibility with older CUDA versions
197+ - ** Artifact flow in** : ` cuda-pathfinder ` artifacts ← main branch
198+ - ** Artifact flow out** : older ` cuda-bindings ` artifacts → main branch
199+
200+ ### Key Infrastructure Details
201+
202+ - ** Self-hosted runners** : Used for Linux builds and GPU testing (more resources, faster builds)
203+ - ** GitHub-hosted runners** : Used for Windows builds and general tasks
204+ - ** Artifact retention** : 30 days for GitHub Artifacts (wheels, docs, tests)
205+ - ** Cache retention** : GitHub Cache for build dependencies and environments
206+ - ** Security** : All commits must be signed, untrusted code blocked
207+ - ** Parallel execution** : Matrix builds across Python versions and platforms
208+ - ** Component isolation** : Each component (core, bindings, pathfinder, python) can be built/released independently
209+
210+ ---
211+
212+ <a >1</a >: The ` cuda-python ` meta package shares the same license and the contributing guidelines as those of ` cuda-bindings ` .
0 commit comments