Update CI workflows to build ORT and test EP#5
Conversation
* Updated both Linux & Windows workflows to build onnxruntime source (onnxruntime_test_provider target only) and use the geneated artifacts to test the TRT EP. * Introducing a simple C# implementation that wraps the generated TRT native binaries to create a nuget package. * Updated to use ORT v1.25.0-rc.1 * Restrict builds to cuda v12.9 (number of unresolved issues with v13.0)
There was a problem hiding this comment.
Pull request overview
Updates the CI pipelines to build onnxruntime (provider test target) alongside the TensorRT plugin EP, then runs EP-focused test execution using the built artifacts. It also introduces a small C# NuGet wrapper (plus sample app) for consuming the generated TensorRT EP native binaries, and bumps the default ORT version to 1.25.0-rc.1.
Changes:
- Reworked Linux/Windows CUDA workflows to build TRT EP + build ORT provider tests and run test execution with downloaded artifacts.
- Added C# NuGet packaging project, setup script, and a sample app demonstrating plugin EP registration and execution.
- Added a Python
test_runner.pyscript that runsonnxruntime_provider_testwith an explicit exclusion filter list.
Reviewed changes
Copilot reviewed 15 out of 16 changed files in this pull request and generated 12 comments.
Show a summary per file
| File | Description |
|---|---|
csharp/setup.bat |
Batch script to stage the native EP DLL into the NuGet layout and build/pack the package. |
csharp/readme.md |
C# wrapper + sample usage and build instructions. |
csharp/nuget.config |
Adds package sources for local feed and ORT nightly feed. |
csharp/SampleApp/mul.onnx |
Small ONNX model used by the C# sample app. |
csharp/SampleApp/SampleApp.sln |
Visual Studio solution for the sample app. |
csharp/SampleApp/SampleApp.csproj |
Sample app project referencing ORT + the EP NuGet package. |
csharp/SampleApp/Program.cs |
Demonstrates registering the plugin EP and executing an inference run. |
csharp/Microsoft.ML.OnnxRuntime.EP.TensorRT/readme.md |
Package README placeholder for NuGet. |
csharp/Microsoft.ML.OnnxRuntime.EP.TensorRT/TensorRTEp.cs |
Managed helper to find native runtime asset path + expose EP name(s). |
csharp/Microsoft.ML.OnnxRuntime.EP.TensorRT/Microsoft.ML.OnnxRuntime.EP.TensorRT.sln |
Visual Studio solution for the NuGet project. |
csharp/Microsoft.ML.OnnxRuntime.EP.TensorRT/Microsoft.ML.OnnxRuntime.EP.TensorRT.csproj |
NuGet packaging configuration and runtime asset inclusion. |
csharp/.gitignore |
Ignores build outputs, local feed, and staged native DLLs. |
CMakeLists.txt |
Bumps default ORT version to 1.25.0-rc.1. |
.github/workflows/windows_x64_cuda.yml |
Splits workflow into TRTEP build, ORT build, and test jobs using artifacts. |
.github/workflows/linux_x64_cuda.yml |
Similar CI restructuring for Linux (image build + matrix + TRTEP/ORT build + tests). |
.github/scripts/test_runner.py |
Runs onnxruntime_provider_test with an exclusion-based gtest filter and logs output. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| runs-on: [ | ||
| "self-hosted", | ||
| "1ES.Pool=onnxruntime-ep-github-linux-a10", | ||
| "1ES.ImageOverride=onnxruntime-ubuntu2204-CUDA-A10", |
There was a problem hiding this comment.
It's required because the CUDA version of 2404 isn't correct. I saw some messages on Teams about updating the image. Could you confirm if it's fixed on the image for this pool as well.
| - name: Setup ccache | ||
| uses: hendrikmuhs/ccache-action@v1.2 | ||
| with: | ||
| key: ${{ github.job }}-cuda${{ matrix.config.cuda_version }}-trt${{ matrix.config.trt_version }}-${{ matrix.config.build_type }} |
There was a problem hiding this comment.
For Sanaa-- do we have our own ccache action?
There was a problem hiding this comment.
I don't believe so.
| set_onnxruntime_paths( | ||
| ORT_HOME "${ORT_HOME}" | ||
| DEFAULT_ORT_VERSION "1.24.1" | ||
| DEFAULT_ORT_VERSION "1.25.0-rc.1" |
There was a problem hiding this comment.
nit: Probably don't need to use the RC anymore.
There was a problem hiding this comment.
Builds are downloaded from the nightly feed. 1.25 release isn't available on the feed.
I am unsure what the long term plan is i.e. from where are the ORT binaries sourced from. Are we verifying only against the released version or nightly.
For now, it's working against what's available on the nightly channel. Can update as a follow up.
Update CI workflows to build ORT and test EP