Conversation
There was a problem hiding this comment.
Pull request overview
Adds an Azure Pipelines-based packaging workflow for the CUDA plugin Execution Provider (EP), modeled after the existing WebGPU plugin packaging pipelines, and threads a parameterized plugin version into the built binary.
Changes:
- Introduces a new top-level official Azure Pipeline for CUDA plugin EP packaging with CUDA version selection and parameter validation.
- Adds reusable stage templates to build/package CUDA plugin artifacts on Windows x64 and Linux (x64 + optional aarch64), including Linux artifact merge logic.
- Adds a Linux Docker-based build script for producing the plugin shared library (and optionally wheels), and wires plugin EP versioning through CMake to runtime-reported version.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| tools/ci_build/github/linux/build_cuda_plugin_package.sh | New Docker-based Linux build script for CUDA plugin packaging with CUDA/Python/arch parameters. |
| tools/ci_build/github/azure-pipelines/stages/plugin-win-cuda-stage.yml | New Windows x64 stage template to build/sign/publish CUDA plugin artifacts (CUDA 12.8/13.0). |
| tools/ci_build/github/azure-pipelines/stages/plugin-linux-cuda-stage.yml | New Linux stage template (x64/aarch64) to build and publish CUDA plugin artifacts via Docker. |
| tools/ci_build/github/azure-pipelines/stages/plugin-cuda-packaging-stage.yml | Orchestrates the platform/Python matrix and merges Linux artifacts for downstream consumption. |
| tools/ci_build/github/azure-pipelines/plugin-cuda-pipeline.yml | New official pipeline entrypoint with parameter validation and CUDA-version-specific configuration. |
| onnxruntime/core/providers/cuda/plugin/cuda_ep_factory.h | Switches CUDA plugin EP version string to a build-time macro value. |
| cmake/onnxruntime_providers_cuda_plugin.cmake | Defines default plugin EP version and exports it to code via ORT_PLUGIN_EP_VERSION. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…ugin_package_pipeline
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
The stage template defaulted build_linux_aarch64 to true while docker_base_image_aarch64 defaults to empty string, which would cause a Docker build failure if the template were invoked with defaults. Change the default to false to match the top-level pipeline and ensure safe standalone usage.
yuslepukhin
left a comment
There was a problem hiding this comment.
I noticed Linux CUDA plugin packaging always passes --build_wheel in build_cuda_plugin_package.sh. Is that intentional for this pipeline, or should wheel building be optional/disabled when we only need plugin artifacts? I’m asking because this can introduce extra failure modes unrelated to plugin binary packaging.
Description
This PR adds an Azure Pipelines packaging flow for the CUDA plugin EP, following the existing WebGPU plugin packaging pipeline pattern. The new pipeline can package Windows x64 and Linux x64 builds for both CUDA 12.8 and 13.0, and optionally package Linux aarch64 builds when CUDA 13.0 is selected.
The flow is parameterized for CUDA version, package version, build type, and Python configuration so the packaging matrix can be expanded without duplicating pipeline logic. It also adds validation to reject unsupported combinations such as Linux aarch64 with CUDA 12.8.
Summary of Changes
Azure Pipelines packaging flow
tools/ci_build/github/azure-pipelines/plugin-cuda-pipeline.ymltools/ci_build/github/azure-pipelines/stages/plugin-cuda-packaging-stage.ymltools/ci_build/github/azure-pipelines/stages/plugin-linux-cuda-stage.ymltools/ci_build/github/azure-pipelines/stages/plugin-win-cuda-stage.ymlLinux build script
tools/ci_build/github/linux/build_cuda_plugin_package.shCMAKE_CUDA_ARCHITECTURES.Packaging behavior
cuda_version=12.8or13.0.Testing
Motivation and Context
The CUDA plugin EP already has GitHub Actions CI coverage for Linux and Windows builds, but it did not yet have a matching Azure Pipelines packaging flow like the WebGPU plugin EP. Adding this packaging pipeline makes it possible to publish packaged CUDA plugin artifacts through the same official packaging infrastructure, while also supporting the newer CUDA 13.0 configuration and Linux aarch64 packaging where the required Docker image exists.
Checklist