diff --git a/tools/ci_build/github/azure-pipelines/custom-nuget-packaging-pipeline.yml b/tools/ci_build/github/azure-pipelines/custom-nuget-packaging-pipeline.yml index 115cf3d1b88c9..b4012b74196ee 100644 --- a/tools/ci_build/github/azure-pipelines/custom-nuget-packaging-pipeline.yml +++ b/tools/ci_build/github/azure-pipelines/custom-nuget-packaging-pipeline.yml @@ -3,11 +3,6 @@ parameters: type: string default: '12.8' -- name: QnnSdk - displayName: QNN SDK Version - type: string - default: 2.41.0.251128 - - name: IsReleaseBuild displayName: Is a release build? Set it to true if you are doing an Onnx Runtime release. type: boolean @@ -115,19 +110,26 @@ extends: SpecificArtifact: false BuildId: '0' - - template: templates/qnn-ep-win.yml + - template: templates/win-ci.yml + parameters: + PreReleaseVersionSuffixString: ${{ parameters.PreReleaseVersionSuffixString }} + PreReleaseVersionSuffixNumber: ${{ parameters.PreReleaseVersionSuffixNumber }} + ort_build_pool_name: 'Onnxruntime-QNNEP-Windows-2022-CPU' + DoCompliance: false + DoEsrp: true + stage_name_suffix: CPU_arm64 + buildArch: x64 + msbuildPlatform: arm64 + packageName: arm64 + buildparameter: --arm64ec --buildasx --caller_framework WinAI + runTests: false + buildJava: false + buildNodejs: false + + - template: templates/managed-nuget-for-foundry-local.yml parameters: - qnn_ep_build_pool_name: 'Onnxruntime-QNNEP-Windows-2022-CPU' - QnnSdk: ${{ parameters.QnnSdk }} IsReleaseBuild: ${{ parameters.IsReleaseBuild }} DoEsrp: true - ArtifactName: 'drop-nuget-qnn-arm64' - # Add --use_webgpu to enable WebGPU - StageName: 'OnnxRuntime_QNN_Nuget_Win_Arm64' - build_config: 'RelWithDebInfo' - PublishArchive: true - PublishNugetToFeed: false - AdditionalBuildArgs: '--caller_framework WinAI' - template: templates/mac-cpu-packaging-pipeline.yml parameters: @@ -136,7 +138,7 @@ extends: DoEsrp: true - stage: NugetPackaging - dependsOn: [Windows_Packaging_CUDA, OnnxRuntime_QNN_Nuget_Win_Arm64, MacOS_C_API_Package_Publish] + dependsOn: [Windows_Packaging_CUDA, Windows_Packaging_CPU_arm64, ManagedNugetPackaging, MacOS_C_API_Package_Publish] jobs: - job: CreateNugetPackage pool: 'Onnxruntime-Win2022-GPU-A10' @@ -158,7 +160,7 @@ extends: - task: DownloadPipelineArtifact@0 displayName: 'Download Pipeline Artifact - managed nuget' inputs: - artifactName: 'drop-signed-nuget-qnn' + artifactName: 'onnxruntime-managed-nuget' targetPath: '$(Build.BinariesDirectory)/managed-nuget' - task: DownloadPipelineArtifact@0 @@ -170,7 +172,7 @@ extends: - task: DownloadPipelineArtifact@0 displayName: 'Download Pipeline Artifact - win-arm64' inputs: - artifactName: 'onnxruntime-win-arm64x-qnn' + artifactName: 'onnxruntime-win-arm64' targetPath: '$(Build.BinariesDirectory)/win-arm64' - task: DownloadPipelineArtifact@0 @@ -229,11 +231,11 @@ extends: targetType: 'inline' script: | Expand-Archive -Path $(Build.BinariesDirectory)/win-x64/onnxruntime-win-x64-cuda*.zip -DestinationPath $(Build.BinariesDirectory)/win-x64 - Expand-Archive -Path $(Build.BinariesDirectory)/win-arm64/onnxruntime-win-arm64x-qnn*.zip -DestinationPath $(Build.BinariesDirectory)/win-arm64 + Expand-Archive -Path $(Build.BinariesDirectory)/win-arm64/onnxruntime-win-arm64*.zip -DestinationPath $(Build.BinariesDirectory)/win-arm64 $osx_arm64_archive = (Get-ChildItem -Path $(Build.BinariesDirectory)/osx-arm64 -Filter onnxruntime-osx-arm64*)[0].FullName tar -xzf $osx_arm64_archive -C $(Build.BinariesDirectory)/osx-arm64 2>$null $win_x64 = (Get-ChildItem -Path $(Build.BinariesDirectory)/win-x64 -Filter onnxruntime-win-x64-cuda*)[0].FullName - $win_arm64 = (Get-ChildItem -Path $(Build.BinariesDirectory)/win-arm64 -Filter onnxruntime-win-arm64x-qnn*)[0].FullName + $win_arm64 = (Get-ChildItem -Path $(Build.BinariesDirectory)/win-arm64 -Filter onnxruntime-win-arm64*)[0].FullName $osx_arm64 = (Get-ChildItem -Path $(Build.BinariesDirectory)/osx-arm64 -Filter onnxruntime-osx-arm64*)[0].FullName Write-Host "##vso[task.setvariable variable=win_x64;]$win_x64" Write-Host "##vso[task.setvariable variable=win_arm64;]$win_arm64" diff --git a/tools/ci_build/github/azure-pipelines/templates/managed-nuget-for-foundry-local.yml b/tools/ci_build/github/azure-pipelines/templates/managed-nuget-for-foundry-local.yml new file mode 100644 index 0000000000000..681dcd4c33ab7 --- /dev/null +++ b/tools/ci_build/github/azure-pipelines/templates/managed-nuget-for-foundry-local.yml @@ -0,0 +1,102 @@ +parameters: + build_config: 'RelWithDebInfo' + IsReleaseBuild: false + DoEsrp: false + OrtNugetPackageId: 'Microsoft.ML.OnnxRuntime' + StageName: 'ManagedNugetPackaging' + +stages: +- stage: ${{ parameters.StageName }} + dependsOn: [Setup, Windows_Packaging_CUDA] + jobs: + - job: ${{ parameters.StageName }} + timeoutInMinutes: 300 + pool: + name: 'onnxruntime-Win2022-GPU-A10' + os: windows + templateContext: + sdl: + codeSignValidation: + enabled: true + break: true + psscriptanalyzer: + enabled: true + binskim: + enabled: true + scanOutputDirectoryOnly: true + outputs: + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory) + artifactName: "onnxruntime-managed-nuget" + variables: + OrtPackageId: ${{ parameters.OrtNugetPackageId }} + ReleaseVersionSuffix: $[stageDependencies.Setup.Set_Variables.outputs['Set_Release_Version_Suffix.ReleaseVersionSuffix']] + BuildDate: $[stageDependencies.Setup.Set_Variables.outputs['Set_Build_Date.BuildDate']] + BuildTime: $[stageDependencies.Setup.Set_Variables.outputs['Set_Build_Time.BuildTime']] + + steps: + - template: set-version-number-variables-step.yml + + - task: UsePythonVersion@0 + displayName: 'Use Python' + inputs: + versionSpec: 3.12 + + - task: DownloadPipelineArtifact@0 + displayName: 'Download Pipeline Artifact - win-x64' + inputs: + artifactName: 'onnxruntime-win-x64-cuda' + targetPath: '$(Build.BinariesDirectory)/nuget-artifact' + + # Reconstruct the build dir + - task: PowerShell@2 + displayName: 'Extract native libraries for addition to nuget native package' + inputs: + targetType: filePath + filePath: $(Build.SourcesDirectory)\tools\ci_build\github\windows\extract_nuget_files.ps1 + + - task: MSBuild@1 + displayName: 'Restore NuGet Packages and create project.assets.json' + inputs: + solution: '$(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.sln' + platform: 'Any CPU' + configuration: RelWithDebInfo + msbuildArguments: '-t:restore -p:OrtPackageId=Microsoft.ML.OnnxRuntime' + workingDirectory: '$(Build.SourcesDirectory)\csharp' + + - task: MSBuild@1 + displayName: 'Build C# bindings' + inputs: + solution: '$(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.sln' + platform: 'Any CPU' + configuration: RelWithDebInfo + msbuildArguments: '-p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=Microsoft.ML.OnnxRuntime -p:IsReleaseBuild=${{ parameters.IsReleaseBuild }} -p:ReleaseVersionSuffix=$(ReleaseVersionSuffix) -p:PackageVersion=$(OnnxRuntimeVersion)' + workingDirectory: '$(Build.SourcesDirectory)\csharp' + + - template: win-esrp-dll.yml + parameters: + FolderPath: '$(Build.SourcesDirectory)\csharp\src\Microsoft.ML.OnnxRuntime\bin\RelWithDebInfo' + DisplayName: 'ESRP - Sign C# dlls' + DoEsrp: true + + - task: MSBuild@1 + displayName: 'Build Nuget Packages' + inputs: + solution: '$(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.proj' + platform: 'Any CPU' + configuration: RelWithDebInfo + msbuildArguments: '-t:CreatePackage -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=Microsoft.ML.OnnxRuntime -p:IsReleaseBuild=${{ parameters.IsReleaseBuild }} -p:ReleaseVersionSuffix=$(ReleaseVersionSuffix) -p:CurrentTime=$(BuildTime) -p:CurrentDate=$(BuildDate)' + workingDirectory: '$(Build.SourcesDirectory)\csharp' + + - task: CopyFiles@2 + displayName: 'Copy managed nuget package to: $(Build.ArtifactStagingDirectory)' + inputs: + SourceFolder: '$(Build.SourcesDirectory)\csharp\src\Microsoft.ML.OnnxRuntime\bin\RelWithDebInfo' + Contents: '*.nupkg' + TargetFolder: '$(Build.ArtifactStagingDirectory)' + + - template: esrp_nuget.yml + parameters: + DisplayName: 'ESRP - sign NuGet package' + FolderPath: '$(Build.ArtifactStagingDirectory)' + DoEsrp: true diff --git a/tools/nuget/generate_nuspec_for_custom_nuget.py b/tools/nuget/generate_nuspec_for_custom_nuget.py index 291ff67f801b6..3abd03119cbc5 100644 --- a/tools/nuget/generate_nuspec_for_custom_nuget.py +++ b/tools/nuget/generate_nuspec_for_custom_nuget.py @@ -18,15 +18,16 @@ def generate_files(lines, args): "osx-arm64": args.osx_arm64, } - avoid_keywords = {"pdb"} + avoid_keywords = {"pdb", "onnxruntime_providers_cuda"} processed_includes = set() for platform, platform_dir in platform_map.items(): for file in glob.glob(os.path.join(platform_dir, "lib", "*")): if not os.path.isfile(file): continue - if any(keyword in file for keyword in avoid_keywords): - continue + file_name = os.path.basename(file) + if any(keyword in file_name for keyword in avoid_keywords): + continue files_list.append(f'') @@ -51,9 +52,6 @@ def generate_files(lines, args): files_list.append( f'' ) - files_list.append( - f'' - ) source_props = os.path.join( args.root_dir,