BaseTester: support plugin EPs with compiled nodes and registered kernels #10396
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: windows_x64_release | |
| on: | |
| push: | |
| branches: [main, 'rel-*'] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.ref || github.sha }} | |
| cancel-in-progress: true | |
| jobs: | |
| build_x64_release: | |
| runs-on: [ | |
| "self-hosted", | |
| "1ES.Pool=onnxruntime-github-vs2022-latest", | |
| "JobId=windows-x64-release-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}" | |
| ] | |
| timeout-minutes: 300 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: false | |
| - name: Setup Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.12' | |
| architecture: x64 | |
| - name: Locate vcvarsall and Setup Env | |
| uses: ./.github/actions/locate-vcvarsall-and-setup-env | |
| with: | |
| architecture: x64 | |
| - name: Install python modules | |
| shell: cmd | |
| run: python -m pip install -r "${{ github.workspace }}\tools\ci_build\github\windows\python\requirements.txt" | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: '20.x' | |
| - name: Setup Java | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '17' | |
| architecture: x64 | |
| - name: API Documentation Check and generate | |
| shell: cmd | |
| run: | | |
| set ORT_DOXY_SRC=${{ github.workspace }} | |
| set ORT_DOXY_OUT=${{ github.workspace }}\build\RelWithDebInfo\RelWithDebInfo | |
| mkdir %ORT_DOXY_SRC% | |
| mkdir %ORT_DOXY_OUT% | |
| "C:\Program Files\doxygen\bin\doxygen.exe" ${{ github.workspace }}\tools\ci_build\github\Doxyfile_csharp.cfg | |
| working-directory: ${{ github.workspace }} | |
| - name: Use .NET 8.x | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: '8.x' | |
| env: | |
| PROCESSOR_ARCHITECTURE: x64 | |
| - name: Use Nuget 6.x | |
| uses: nuget/setup-nuget@v2 | |
| with: | |
| nuget-version: '6.x' | |
| - name: NuGet restore | |
| shell: cmd | |
| run: | | |
| nuget restore ${{ github.workspace }}\packages.config -PackagesDirectory ${{ github.workspace }}\build\RelWithDebInfo -ConfigFile ${{ github.workspace }}\NuGet.config | |
| - uses: actions/cache@v5 | |
| id: onnx-node-tests-cache | |
| with: | |
| path: ${{ github.workspace }}/js/test/ | |
| key: onnxnodetests-${{ hashFiles('js/scripts/prepare-onnx-node-tests.ts') }} | |
| - name: Build and Test | |
| shell: pwsh | |
| run: | | |
| python.exe "${{ github.workspace }}\tools\ci_build\build.py" --config RelWithDebInfo --build_dir "${{ github.workspace }}\build" --skip_submodule_sync --build_csharp --parallel --use_binskim_compliant_compile_flags --cmake_generator "Visual Studio 17 2022" --build_shared_lib --enable_onnx_tests --build_wheel --build_java --build_nodejs --msbuild_extra_options "IncludeMobileTargets=false" --build_nuget --use_vcpkg --use_vcpkg_ms_internal_asset_cache | |
| if ($LASTEXITCODE -ne 0) { | |
| exit $LASTEXITCODE | |
| } | |
| Remove-Item "${{ github.workspace }}\build\RelWithDebInfo" -Include "*.obj" -Recurse | |
| env: | |
| ALLOW_RELEASED_ONNX_OPSET_ONLY: '0' | |
| DocUpdateNeeded: 'false' | |
| - name: Run onnxruntime_provider_test with example_plugin_ep | |
| shell: pwsh | |
| run: | | |
| # Note on skipped tests: | |
| # The skipped tests are either: | |
| # - relying on CPU EP fallback for BFloat16 which is not supported | |
| # - testing the LayerNormalization contrib op with mixed input/output types (only supported by a few EPs) | |
| # Some other hardcoded EP types are skipped in these tests. For a plugin EP, we skip these tests by | |
| # specifying them in the dynamic plugin EP configuration. | |
| $env:ORT_UNIT_TEST_MAIN_DYNAMIC_PLUGIN_EP_CONFIG_JSON = @" | |
| { | |
| "ep_library_registration_name": "example_ep", | |
| "ep_library_path": "./example_plugin_ep.dll", | |
| "selected_ep_name": "example_ep", | |
| "tests_to_skip": [ | |
| "LayerNormTest.LayerNorm_BFloat16Input", | |
| "LayerNormTest.LayerNorm_Scale_Float16Input", | |
| "LayerNormTest.LayerNorm_Scale_Float16ScaleOutput", | |
| "LayerNormTest.LayerNorm_Scale_Bias_Float16Input", | |
| "LayerNormTest.LayerNorm_Scale_Bias_Float16ScaleBiasOutput" | |
| ] | |
| } | |
| "@ | |
| .\onnxruntime_provider_test.exe | |
| working-directory: ${{ github.workspace }}\build\RelWithDebInfo\RelWithDebInfo | |
| - name: Validate C# native delegates | |
| shell: cmd | |
| run: python tools\ValidateNativeDelegateAttributes.py | |
| working-directory: ${{ github.workspace }}\\csharp | |
| - name: Install onnxruntime wheel | |
| shell: pwsh | |
| run: | | |
| python -m pip uninstall -y onnxruntime onnxruntime-gpu onnxruntime-training onnxruntime-directml -qq | |
| Get-ChildItem -Path dist/*.whl | foreach {pip --disable-pip-version-check install --upgrade $_.fullname} | |
| working-directory: "${{ github.workspace }}\\build\\RelWithDebInfo\\RelWithDebInfo" | |
| - name: Publish OperatorKernels.md (Conditional) | |
| uses: actions/upload-artifact@v6 | |
| if: failure() && env.DocUpdateNeeded == 'true' | |
| with: | |
| name: OperatorKernels.md | |
| path: ${{ github.workspace }}/docs/OperatorKernels.md | |
| - name: Publish ContribOperators.md (Conditional) | |
| uses: actions/upload-artifact@v6 | |
| if: failure() && env.DocUpdateNeeded == 'true' | |
| with: | |
| name: ContribOperators.md | |
| path: ${{ github.workspace }}/docs/ContribOperators.md | |
| env: | |
| OrtPackageId: Microsoft.ML.OnnxRuntime | |
| OnnxRuntimeBuildDirectory: ${{ github.workspace }}\build | |
| DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 'true' |