Publish both Cuda 13 and Cuda 12 packages in packaging pipeline#27012
Publish both Cuda 13 and Cuda 12 packages in packaging pipeline#27012eserscor wants to merge 27 commits into
Conversation
…efactor-cuda-13-builds
| - Windows_Nodejs_Packaging_x64 | ||
| - Windows_Nodejs_Packaging_arm64 | ||
| - Linux_Nodejs_Packaging_x64 | ||
| - Linux_Nodejs_Packaging_x64_cuda_12 |
There was a problem hiding this comment.
Should publish both CUDA 13 and 12 NodeJS packages?
There was a problem hiding this comment.
Pull request overview
This pull request refactors the CUDA packaging pipeline to support building and publishing packages for both CUDA 12 and CUDA 13 simultaneously. Previously, the pipeline required selecting a single CUDA version via parameter. Now it iterates over multiple CUDA versions defined in an object structure.
Changes:
- Converted CudaVersion parameter from string/enum to object structure containing multiple CUDA versions with their respective configurations (paths, architectures, TensorRT versions)
- Updated all CUDA packaging stages to iterate over CUDA versions and append stage tokens (cuda_12, cuda_13) to stage and artifact names
- Modified extraction scripts to handle new artifact naming convention that includes CUDA version tokens
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/ci_build/github/windows/extract_zip_files_gpu.ps1 | Updated regex patterns to match new artifact naming with CUDA version tokens; removed trailing whitespace |
| tools/ci_build/github/linux/extract_and_bundle_gpu_package.sh | Updated wildcard patterns and sed commands to handle new artifact names with CUDA version tokens; removed trailing whitespace |
| tools/ci_build/github/azure-pipelines/templates/c-api-cpu.yml | Updated dependency to reference specific CUDA 12 nodejs packaging stage |
| tools/ci_build/github/azure-pipelines/stages/nuget-win-cuda-packaging-stage.yml | Refactored to accept CudaVersion as object and StageToken parameter; updated all stage/artifact names to include tokens |
| tools/ci_build/github/azure-pipelines/stages/nuget-linux-cuda-packaging-stage.yml | Refactored parameters and removed common-variables template dependency; stage/artifact names now include version tokens |
| tools/ci_build/github/azure-pipelines/stages/nuget-cuda-packaging-stage.yml | Added StageToken parameter and updated stage dependencies and artifact names; added backward compatibility artifact |
| tools/ci_build/github/azure-pipelines/stages/nuget-combine-cuda-stage.yml | Converted from simple parameter passing to loop iteration over CudaVersion object with each key-value pair |
| tools/ci_build/github/azure-pipelines/stages/nodejs-linux-packaging-stage.yml | Updated to receive CudaVersion as object and StageToken; removed common-variables dependency |
| tools/ci_build/github/azure-pipelines/stages/java-cuda-packaging-stage.yml | Wrapped in loop to create separate stages for each CUDA version with tokenized artifact names |
| tools/ci_build/github/azure-pipelines/stages/c-api-linux-cpu-stage.yml | File deleted (previously contained Linux CPU packaging stage definition) |
| tools/ci_build/github/azure-pipelines/c-api-noopenmp-packaging-pipelines.yml | Added structured CudaVersion parameter with all configuration; removed variables section that computed values from CudaVersion parameter |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - Windows_Nodejs_Packaging_x64 | ||
| - Windows_Nodejs_Packaging_arm64 | ||
| - Linux_Nodejs_Packaging_x64 | ||
| - Linux_Nodejs_Packaging_x64_cuda_12 |
There was a problem hiding this comment.
The hardcoded dependency on 'Linux_Nodejs_Packaging_x64_cuda_12' is problematic. This change introduces support for both CUDA 12 and CUDA 13, but this hardcoded reference assumes only CUDA 12 exists. When the pipeline processes both CUDA versions, there will be both 'Linux_Nodejs_Packaging_x64_cuda_12' and 'Linux_Nodejs_Packaging_x64_cuda_13' stages created. The dependency should either reference both versions or be reconsidered based on whether nodejs packaging is actually required for this CPU packaging stage.
| - Linux_Nodejs_Packaging_x64_cuda_12 | |
| - Linux_Nodejs_Packaging_x64_cuda_12 | |
| - Linux_Nodejs_Packaging_x64_cuda_13 |
| CudaVersion: | ||
| type: object |
There was a problem hiding this comment.
The parameter definition uses an inconsistent indentation style. Line 2 uses 2-space indentation for 'CudaVersion:', but this is inconsistent with standard Azure Pipeline YAML formatting where parameters typically use hyphens. Consider using the standard format with a hyphen prefix: '- name: CudaVersion'.
| CudaVersion: | |
| type: object | |
| - name: CudaVersion | |
| type: object |
…aging-stage.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Description
Motivation and Context