From 9e68e984230df9a780372353dff090e605a968d4 Mon Sep 17 00:00:00 2001 From: Tiago Koji Castro Shibata Date: Thu, 5 Nov 2020 09:26:17 -0800 Subject: [PATCH] Add static CRT DLLs to Nuget package (#5661) * Add static runtime yaml option * Add to WAI Nuget build matrix * Support empty build flags * Add DML to x64 * Bundle static rt * Bundle after Nugets are built * Fix typo * Skip static tests * Pack test artifact only in x64 dynamic * No DML static runtime * Add Store static * Revert "Add Store static" This reverts commit 69133e58388dd2bdfc2bae55a138f70885fc35ec. * Static subfolder --- ...osoft.AI.MachineLearning.Rules.Project.xml | 8 +- .../Microsoft.AI.MachineLearning.targets | 5 +- .../templates/cpu-nocontribops-arm64.yml | 2 +- .../nuget/templates/windowsai.yml | 136 ++++++++++++++++++ .../templates/windowsai-nuget-build.yml | 72 ++++++---- 5 files changed, 188 insertions(+), 35 deletions(-) diff --git a/csharp/src/Microsoft.AI.MachineLearning/Microsoft.AI.MachineLearning.Rules.Project.xml b/csharp/src/Microsoft.AI.MachineLearning/Microsoft.AI.MachineLearning.Rules.Project.xml index 2394ee728a..7492025563 100644 --- a/csharp/src/Microsoft.AI.MachineLearning/Microsoft.AI.MachineLearning.Rules.Project.xml +++ b/csharp/src/Microsoft.AI.MachineLearning/Microsoft.AI.MachineLearning.Rules.Project.xml @@ -17,4 +17,10 @@ DisplayName="Disable directml.dll copy on build" Description="Suppresses binplacing the directml.dll from the Mirosoft.AI.MachineLearning NuGet distribution." Category="General" /> - \ No newline at end of file + + + diff --git a/csharp/src/Microsoft.AI.MachineLearning/Microsoft.AI.MachineLearning.targets b/csharp/src/Microsoft.AI.MachineLearning/Microsoft.AI.MachineLearning.targets index 62c505e12d..4f43996fc9 100644 --- a/csharp/src/Microsoft.AI.MachineLearning/Microsoft.AI.MachineLearning.targets +++ b/csharp/src/Microsoft.AI.MachineLearning/Microsoft.AI.MachineLearning.targets @@ -8,11 +8,12 @@ $(MSBuildThisFileDirectory)..\..\runtimes\win-$(WindowsAI-Platform)\uap $(MSBuildThisFileDirectory)..\..\runtimes\win-$(WindowsAI-Platform)\native - $(RuntimesDirectory)\Microsoft.AI.MachineLearning.dll + static\ + $(RuntimesDirectory)\$(WindowsAIBinarySubfolder)Microsoft.AI.MachineLearning.dll - $(RuntimesDirectory)\onnxruntime.dll + $(RuntimesDirectory)\$(WindowsAIBinarySubfolder)onnxruntime.dll diff --git a/tools/ci_build/github/azure-pipelines/nuget/templates/cpu-nocontribops-arm64.yml b/tools/ci_build/github/azure-pipelines/nuget/templates/cpu-nocontribops-arm64.yml index ef3effcead..963573c293 100644 --- a/tools/ci_build/github/azure-pipelines/nuget/templates/cpu-nocontribops-arm64.yml +++ b/tools/ci_build/github/azure-pipelines/nuget/templates/cpu-nocontribops-arm64.yml @@ -8,7 +8,7 @@ jobs: ArtifactName: 'drop-nuget' JobName: 'Windows_CI_Dev' BuildCommand: '--build_dir $(Build.BinariesDirectory) --skip_submodule_sync --build_shared_lib --enable_onnx_tests --cmake_generator "Visual Studio 16 2019" --disable_contrib_ops --disable_ml_ops --enable_msvc_static_runtime' - BuildArch: 'x64' + BuildArch: 'x64' EnvSetupScript: 'setup_env.bat' sln_platform: 'x64' DoDebugBuild: 'false' diff --git a/tools/ci_build/github/azure-pipelines/nuget/templates/windowsai.yml b/tools/ci_build/github/azure-pipelines/nuget/templates/windowsai.yml index c90c8f4661..8ff5811300 100644 --- a/tools/ci_build/github/azure-pipelines/nuget/templates/windowsai.yml +++ b/tools/ci_build/github/azure-pipelines/nuget/templates/windowsai.yml @@ -47,6 +47,58 @@ jobs: parameters: BuildArch: 'arm' +- job: WindowsAI_DirectML_X64_StaticRuntime + timeoutInMinutes: 120 + workspace: + clean: all + pool: + name: 'Win-GPU-2019' + demands: [ ] + steps: + - template: ../../templates/windowsai-nuget-build.yml + parameters: + BuildArch: 'x64' + Runtime: 'static' + +- job: WindowsAI_DirectML_X86_StaticRuntime + timeoutInMinutes: 120 + workspace: + clean: all + pool: + name: 'Win-GPU-2019' + demands: [ ] + steps: + - template: ../../templates/windowsai-nuget-build.yml + parameters: + BuildArch: 'x86' + Runtime: 'static' + +- job: WindowsAI_CPU_ARM64_StaticRuntime + timeoutInMinutes: 120 + workspace: + clean: all + pool: + name: 'Win-CPU-2019' + demands: [ ] + steps: + - template: ../../templates/windowsai-nuget-build.yml + parameters: + BuildArch: 'arm64' + Runtime: 'static' + +- job: WindowsAI_CPU_ARM_StaticRuntime + timeoutInMinutes: 120 + workspace: + clean: all + pool: + name: 'Win-CPU-2019' + demands: [ ] + steps: + - template: ../../templates/windowsai-nuget-build.yml + parameters: + BuildArch: 'arm' + Runtime: 'static' + - job: WindowsAI_CPU_X64_Store timeoutInMinutes: 120 workspace: @@ -112,6 +164,10 @@ jobs: - WindowsAI_CPU_X86_Store - WindowsAI_CPU_ARM64_Store - WindowsAI_CPU_ARM_Store + - WindowsAI_DirectML_X64_StaticRuntime + - WindowsAI_DirectML_X86_StaticRuntime + - WindowsAI_CPU_ARM64_StaticRuntime + - WindowsAI_CPU_ARM_StaticRuntime condition: succeeded() steps: - task: DownloadPipelineArtifact@0 @@ -162,6 +218,30 @@ jobs: artifactName: 'Microsoft.AI.MachineLearning.arm.Store' targetPath: '$(Build.BinariesDirectory)/nuget-artifact-arm-store' + - task: DownloadPipelineArtifact@0 + displayName: 'Download Pipeline Artifact - NuGet DirectML x64 StaticRuntime' + inputs: + artifactName: 'Microsoft.AI.MachineLearning.x64.StaticRuntime' + targetPath: '$(Build.BinariesDirectory)/nuget-artifact-x64-static-runtime' + + - task: DownloadPipelineArtifact@0 + displayName: 'Download Pipeline Artifact - NuGet DirectML x86 StaticRuntime' + inputs: + artifactName: 'Microsoft.AI.MachineLearning.x86.StaticRuntime' + targetPath: '$(Build.BinariesDirectory)/nuget-artifact-x86-static-runtime' + + - task: DownloadPipelineArtifact@0 + displayName: 'Download Pipeline Artifact - NuGet CPU ARM64 StaticRuntime' + inputs: + artifactName: 'Microsoft.AI.MachineLearning.arm64.StaticRuntime' + targetPath: '$(Build.BinariesDirectory)/nuget-artifact-arm64-static-runtime' + + - task: DownloadPipelineArtifact@0 + displayName: 'Download Pipeline Artifact - NuGet CPU ARM StaticRuntime' + inputs: + artifactName: 'Microsoft.AI.MachineLearning.arm.StaticRuntime' + targetPath: '$(Build.BinariesDirectory)/nuget-artifact-arm-static-runtime' + - task: PowerShell@2 displayName: 'Bundle NuGet and other binaries' inputs: @@ -182,6 +262,12 @@ jobs: $x64_store_nupkg_unzipped_directory = [System.IO.Path]::Combine($x64_store_nupkg_unzipped_directory_root, 'binaries', [System.IO.Path]::GetFileNameWithoutExtension($x64_store_nuget_package)) [System.IO.Compression.ZipFile]::ExtractToDirectory($x64_store_nuget_package, $x64_store_nupkg_unzipped_directory) + $nupkgs = (Get-ChildItem ..\nuget-artifact-x64-static-runtime -Filter Microsoft.AI.MachineLearning*.nupkg -Recurse) + $x64_static_runtime_nuget_package = $nupkgs[0].FullName + $x64_static_runtime_nupkg_unzipped_directory_root = $nupkgs[0].Directory.FullName + $x64_static_runtime_nupkg_unzipped_directory = [System.IO.Path]::Combine($x64_static_runtime_nupkg_unzipped_directory_root, 'binaries', [System.IO.Path]::GetFileNameWithoutExtension($x64_static_runtime_nuget_package)) + [System.IO.Compression.ZipFile]::ExtractToDirectory($x64_static_runtime_nuget_package, $x64_static_runtime_nupkg_unzipped_directory) + $nupkgs = (Get-ChildItem ..\nuget-artifact-x86 -Filter Microsoft.AI.MachineLearning*.nupkg -Recurse) $x86_nuget_package = $nupkgs[0].FullName $x86_nupkg_unzipped_directory_root = $nupkgs[0].Directory.FullName @@ -194,6 +280,12 @@ jobs: $x86_store_nupkg_unzipped_directory = [System.IO.Path]::Combine($x86_store_nupkg_unzipped_directory_root, 'binaries', [System.IO.Path]::GetFileNameWithoutExtension($x86_store_nuget_package)) [System.IO.Compression.ZipFile]::ExtractToDirectory($x86_store_nuget_package, $x86_store_nupkg_unzipped_directory) + $nupkgs = (Get-ChildItem ..\nuget-artifact-x86-static-runtime -Filter Microsoft.AI.MachineLearning*.nupkg -Recurse) + $x86_static_runtime_nuget_package = $nupkgs[0].FullName + $x86_static_runtime_nupkg_unzipped_directory_root = $nupkgs[0].Directory.FullName + $x86_static_runtime_nupkg_unzipped_directory = [System.IO.Path]::Combine($x86_static_runtime_nupkg_unzipped_directory_root, 'binaries', [System.IO.Path]::GetFileNameWithoutExtension($x86_static_runtime_nuget_package)) + [System.IO.Compression.ZipFile]::ExtractToDirectory($x86_static_runtime_nuget_package, $x86_static_runtime_nupkg_unzipped_directory) + $nupkgs = (Get-ChildItem ..\nuget-artifact-arm64 -Filter Microsoft.AI.MachineLearning*.nupkg -Recurse) $arm64_nuget_package = $nupkgs[0].FullName $arm64_nupkg_unzipped_directory_root = $nupkgs[0].Directory.FullName @@ -206,6 +298,12 @@ jobs: $arm64_store_nupkg_unzipped_directory = [System.IO.Path]::Combine($arm64_store_nupkg_unzipped_directory_root, 'binaries', [System.IO.Path]::GetFileNameWithoutExtension($arm64_store_nuget_package)) [System.IO.Compression.ZipFile]::ExtractToDirectory($arm64_store_nuget_package, $arm64_store_nupkg_unzipped_directory) + $nupkgs = (Get-ChildItem ..\nuget-artifact-arm64-static-runtime -Filter Microsoft.AI.MachineLearning*.nupkg -Recurse) + $arm64_static_runtime_nuget_package = $nupkgs[0].FullName + $arm64_static_runtime_nupkg_unzipped_directory_root = $nupkgs[0].Directory.FullName + $arm64_static_runtime_nupkg_unzipped_directory = [System.IO.Path]::Combine($arm64_static_runtime_nupkg_unzipped_directory_root, 'binaries', [System.IO.Path]::GetFileNameWithoutExtension($arm64_static_runtime_nuget_package)) + [System.IO.Compression.ZipFile]::ExtractToDirectory($arm64_static_runtime_nuget_package, $arm64_static_runtime_nupkg_unzipped_directory) + $nupkgs = (Get-ChildItem ..\nuget-artifact-arm -Filter Microsoft.AI.MachineLearning*.nupkg -Recurse) $arm_nuget_package = $nupkgs[0].FullName $arm_nupkg_unzipped_directory_root = $nupkgs[0].Directory.FullName @@ -218,30 +316,48 @@ jobs: $arm_store_nupkg_unzipped_directory = [System.IO.Path]::Combine($arm_store_nupkg_unzipped_directory_root, 'binaries', [System.IO.Path]::GetFileNameWithoutExtension($arm_store_nuget_package)) [System.IO.Compression.ZipFile]::ExtractToDirectory($arm_store_nuget_package, $arm_store_nupkg_unzipped_directory) + $nupkgs = (Get-ChildItem ..\nuget-artifact-arm-static-runtime -Filter Microsoft.AI.MachineLearning*.nupkg -Recurse) + $arm_static_runtime_nuget_package = $nupkgs[0].FullName + $arm_static_runtime_nupkg_unzipped_directory_root = $nupkgs[0].Directory.FullName + $arm_static_runtime_nupkg_unzipped_directory = [System.IO.Path]::Combine($arm_static_runtime_nupkg_unzipped_directory_root, 'binaries', [System.IO.Path]::GetFileNameWithoutExtension($arm_static_runtime_nuget_package)) + [System.IO.Compression.ZipFile]::ExtractToDirectory($arm_static_runtime_nuget_package, $arm_static_runtime_nupkg_unzipped_directory) + $x64_store_runtime_path_old = [System.IO.Path]::Combine($x64_store_nupkg_unzipped_directory, 'runtimes', 'win-x64', 'uap') $x64_store_runtime_path_new = [System.IO.Path]::Combine($x64_nupkg_unzipped_directory, 'runtimes', 'win-x64', 'uap') + $x64_static_runtime_path_old = [System.IO.Path]::Combine($x64_static_runtime_nupkg_unzipped_directory, 'runtimes', 'win-x64', 'native') + $x64_static_runtime_path_new = [System.IO.Path]::Combine($x64_nupkg_unzipped_directory, 'runtimes', 'win-x64', 'native', 'static') $x86_runtime_path_old = [System.IO.Path]::Combine($x86_nupkg_unzipped_directory, 'runtimes', 'win-x86', 'native') $x86_runtime_path_new = [System.IO.Path]::Combine($x64_nupkg_unzipped_directory, 'runtimes', 'win-x86', 'native') $x86_store_runtime_path_old = [System.IO.Path]::Combine($x86_store_nupkg_unzipped_directory, 'runtimes', 'win-x86', 'uap') $x86_store_runtime_path_new = [System.IO.Path]::Combine($x64_nupkg_unzipped_directory, 'runtimes', 'win-x86', 'uap') + $x86_static_runtime_path_old = [System.IO.Path]::Combine($x86_static_runtime_nupkg_unzipped_directory, 'runtimes', 'win-x86', 'native') + $x86_static_runtime_path_new = [System.IO.Path]::Combine($x64_nupkg_unzipped_directory, 'runtimes', 'win-x86', 'native', 'static') $arm64_runtime_path_old = [System.IO.Path]::Combine($arm64_nupkg_unzipped_directory, 'runtimes', 'win-arm64', 'native') $arm64_runtime_path_new = [System.IO.Path]::Combine($x64_nupkg_unzipped_directory, 'runtimes', 'win-arm64', 'native') $arm64_store_runtime_path_old = [System.IO.Path]::Combine($arm64_store_nupkg_unzipped_directory, 'runtimes', 'win-arm64', 'uap') $arm64_store_runtime_path_new = [System.IO.Path]::Combine($x64_nupkg_unzipped_directory, 'runtimes', 'win-arm64', 'uap') + $arm64_static_runtime_path_old = [System.IO.Path]::Combine($arm64_static_runtime_nupkg_unzipped_directory, 'runtimes', 'win-arm64', 'native') + $arm64_static_runtime_path_new = [System.IO.Path]::Combine($x64_nupkg_unzipped_directory, 'runtimes', 'win-arm64', 'native', 'static') $arm_runtime_path_old = [System.IO.Path]::Combine($arm_nupkg_unzipped_directory, 'runtimes', 'win-arm', 'native') $arm_runtime_path_new = [System.IO.Path]::Combine($x64_nupkg_unzipped_directory, 'runtimes', 'win-arm', 'native') $arm_store_runtime_path_old = [System.IO.Path]::Combine($arm_store_nupkg_unzipped_directory, 'runtimes', 'win-arm', 'uap') $arm_store_runtime_path_new = [System.IO.Path]::Combine($x64_nupkg_unzipped_directory, 'runtimes', 'win-arm', 'uap') + $arm_static_runtime_path_old = [System.IO.Path]::Combine($arm_static_runtime_nupkg_unzipped_directory, 'runtimes', 'win-arm', 'native') + $arm_static_runtime_path_new = [System.IO.Path]::Combine($x64_nupkg_unzipped_directory, 'runtimes', 'win-arm', 'native', 'static') $uap_build_path_old = [System.IO.Path]::Combine($x64_store_nupkg_unzipped_directory, 'build', 'uap') $uap_build_path_new = [System.IO.Path]::Combine($x64_nupkg_unzipped_directory, 'build', 'uap') New-Item -Path $x64_store_runtime_path_new -ItemType Directory + New-Item -Path $x64_static_runtime_path_new -ItemType Directory New-Item -Path $x86_runtime_path_new -ItemType Directory New-Item -Path $x86_store_runtime_path_new -ItemType Directory + New-Item -Path $x86_static_runtime_path_new -ItemType Directory New-Item -Path $arm64_runtime_path_new -ItemType Directory New-Item -Path $arm64_store_runtime_path_new -ItemType Directory + New-Item -Path $arm64_static_runtime_path_new -ItemType Directory New-Item -Path $arm_runtime_path_new -ItemType Directory New-Item -Path $arm_store_runtime_path_new -ItemType Directory + New-Item -Path $arm_static_runtime_path_new -ItemType Directory Copy-Item ([System.IO.Path]::Combine($x86_runtime_path_old, 'onnxruntime.dll')) $x86_runtime_path_new Copy-Item ([System.IO.Path]::Combine($x86_runtime_path_old, 'onnxruntime.lib')) $x86_runtime_path_new @@ -279,6 +395,26 @@ jobs: Copy-Item ([System.IO.Path]::Combine($arm_store_runtime_path_old, 'microsoft.ai.machinelearning.dll')) $arm_store_runtime_path_new Copy-Item ([System.IO.Path]::Combine($arm_store_runtime_path_old, 'microsoft.ai.machinelearning.lib')) $arm_store_runtime_path_new + Copy-Item ([System.IO.Path]::Combine($x64_static_runtime_path_old, 'onnxruntime.dll')) ([System.IO.Path]::Combine($x64_static_runtime_path_new, 'onnxruntime.dll')) + Copy-Item ([System.IO.Path]::Combine($x64_static_runtime_path_old, 'onnxruntime.lib')) ([System.IO.Path]::Combine($x64_static_runtime_path_new, 'onnxruntime.lib')) + Copy-Item ([System.IO.Path]::Combine($x64_static_runtime_path_old, 'microsoft.ai.machinelearning.dll')) ([System.IO.Path]::Combine($x64_static_runtime_path_new, 'microsoft.ai.machinelearning.dll')) + Copy-Item ([System.IO.Path]::Combine($x64_static_runtime_path_old, 'microsoft.ai.machinelearning.lib')) ([System.IO.Path]::Combine($x64_static_runtime_path_new, 'microsoft.ai.machinelearning.lib')) + + Copy-Item ([System.IO.Path]::Combine($x86_static_runtime_path_old, 'onnxruntime.dll')) ([System.IO.Path]::Combine($x86_static_runtime_path_new, 'onnxruntime.dll')) + Copy-Item ([System.IO.Path]::Combine($x86_static_runtime_path_old, 'onnxruntime.lib')) ([System.IO.Path]::Combine($x86_static_runtime_path_new, 'onnxruntime.lib')) + Copy-Item ([System.IO.Path]::Combine($x86_static_runtime_path_old, 'microsoft.ai.machinelearning.dll')) ([System.IO.Path]::Combine($x86_static_runtime_path_new, 'microsoft.ai.machinelearning.dll')) + Copy-Item ([System.IO.Path]::Combine($x86_static_runtime_path_old, 'microsoft.ai.machinelearning.lib')) ([System.IO.Path]::Combine($x86_static_runtime_path_new, 'microsoft.ai.machinelearning.lib')) + + Copy-Item ([System.IO.Path]::Combine($arm64_static_runtime_path_old, 'onnxruntime.dll')) ([System.IO.Path]::Combine($arm64_static_runtime_path_new, 'onnxruntime.dll')) + Copy-Item ([System.IO.Path]::Combine($arm64_static_runtime_path_old, 'onnxruntime.lib')) ([System.IO.Path]::Combine($arm64_static_runtime_path_new, 'onnxruntime.lib')) + Copy-Item ([System.IO.Path]::Combine($arm64_static_runtime_path_old, 'microsoft.ai.machinelearning.dll')) ([System.IO.Path]::Combine($arm64_static_runtime_path_new, 'microsoft.ai.machinelearning.dll')) + Copy-Item ([System.IO.Path]::Combine($arm64_static_runtime_path_old, 'microsoft.ai.machinelearning.lib')) ([System.IO.Path]::Combine($arm64_static_runtime_path_new, 'microsoft.ai.machinelearning.lib')) + + Copy-Item ([System.IO.Path]::Combine($arm_static_runtime_path_old, 'onnxruntime.dll')) ([System.IO.Path]::Combine($arm_static_runtime_path_new, 'onnxruntime.dll')) + Copy-Item ([System.IO.Path]::Combine($arm_static_runtime_path_old, 'onnxruntime.lib')) ([System.IO.Path]::Combine($arm_static_runtime_path_new, 'onnxruntime.lib')) + Copy-Item ([System.IO.Path]::Combine($arm_static_runtime_path_old, 'microsoft.ai.machinelearning.dll')) ([System.IO.Path]::Combine($arm_static_runtime_path_new, 'microsoft.ai.machinelearning.dll')) + Copy-Item ([System.IO.Path]::Combine($arm_static_runtime_path_old, 'microsoft.ai.machinelearning.lib')) ([System.IO.Path]::Combine($arm_static_runtime_path_new, 'microsoft.ai.machinelearning.lib')) + Copy-Item -Recurse $uap_build_path_old $uap_build_path_new $merged_nuget_path = [System.IO.Path]::Combine($Env:BUILD_ARTIFACTSTAGINGDIRECTORY, 'merged') diff --git a/tools/ci_build/github/azure-pipelines/templates/windowsai-nuget-build.yml b/tools/ci_build/github/azure-pipelines/templates/windowsai-nuget-build.yml index 54eda01d51..394e3eeb0b 100644 --- a/tools/ci_build/github/azure-pipelines/templates/windowsai-nuget-build.yml +++ b/tools/ci_build/github/azure-pipelines/templates/windowsai-nuget-build.yml @@ -2,6 +2,7 @@ parameters: BuildArch: 'x64' RunTests : 'true' BuildForStore: 'false' + Runtime: 'dynamic' steps: - template: telemetry-steps.yml @@ -33,26 +34,43 @@ steps: modifyEnvironment: true workingFolder: '$(Build.BinariesDirectory)' + - powershell: | + Write-Host "##vso[task.setvariable variable=BuildFlags]" + Write-Host "##vso[task.setvariable variable=ArtifactName]Microsoft.AI.MachineLearning.${{ parameters.BuildArch }}" + displayName: Initialize build flags + + - powershell: | + Write-Host "##vso[task.setvariable variable=BuildFlags]$(BuildFlags) --${{ parameters.BuildArch }}" + displayName: Add cross compilation flags + condition: ne('${{ parameters.BuildArch }}', 'x64') + + - powershell: | + Write-Host "##vso[task.setvariable variable=BuildFlags]$(BuildFlags) --use_dml" + displayName: Add DML flags + condition: or(eq('${{ parameters.BuildArch }}', 'x64'), eq('${{ parameters.BuildArch }}', 'x86')) + + - powershell: | + Write-Host "##vso[task.setvariable variable=BuildFlags]$(BuildFlags) --enable_wcos" + displayName: Add OneCore flags + condition: eq('${{ parameters.BuildForStore }}', 'false') + + - powershell: | + Write-Host "##vso[task.setvariable variable=BuildFlags]$(BuildFlags) --enable_windows_store" + Write-Host "##vso[task.setvariable variable=ArtifactName]$(ArtifactName).Store" + displayName: Add Microsoft Store flags + condition: eq('${{ parameters.BuildForStore }}', 'true') + + - powershell: | + Write-Host "##vso[task.setvariable variable=BuildFlags]$(BuildFlags) --enable_msvc_static_runtime" + Write-Host "##vso[task.setvariable variable=ArtifactName]$(ArtifactName).StaticRuntime" + displayName: Add static runtime flags + condition: eq('${{ parameters.Runtime }}', 'static') + - task: PythonScript@0 displayName: 'Generate CMake Configuration' inputs: scriptPath: '$(Build.SourcesDirectory)\tools\ci_build\build.py' - ${{ if and(eq(parameters.BuildArch, 'x64'), eq(parameters.BuildForStore, 'false')) }}: - arguments: '--build_dir $(Build.BinariesDirectory) --skip_submodule_sync --build_shared_lib --enable_onnx_tests --enable_wcos $(TelemetryOption) --use_dml --use_winml --cmake_generator "Visual Studio 16 2019" --update --config RelWithDebInfo --enable_lto --disable_rtti' - ${{ if and(eq(parameters.BuildArch, 'x64'), eq(parameters.BuildForStore, 'true')) }}: - arguments: '--build_dir $(Build.BinariesDirectory) --skip_submodule_sync --build_shared_lib --skip_winml_tests --enable_wcos $(TelemetryOption) --use_winml --cmake_generator "Visual Studio 16 2019" --update --config RelWithDebInfo --enable_lto --disable_rtti --enable_windows_store --target winml_dll' - ${{ if and(eq(parameters.BuildArch, 'x86'), eq(parameters.BuildForStore, 'false')) }}: - arguments: '--build_dir $(Build.BinariesDirectory) --skip_submodule_sync --build_shared_lib --enable_onnx_tests --enable_wcos $(TelemetryOption) --use_dml --use_winml --cmake_generator "Visual Studio 16 2019" --update --config RelWithDebInfo --enable_lto --disable_rtti --x86' - ${{ if and(eq(parameters.BuildArch, 'x86'), eq(parameters.BuildForStore, 'true')) }}: - arguments: '--build_dir $(Build.BinariesDirectory) --skip_submodule_sync --build_shared_lib --skip_winml_tests --enable_wcos $(TelemetryOption) --use_winml --cmake_generator "Visual Studio 16 2019" --update --config RelWithDebInfo --enable_lto --disable_rtti --x86 --enable_windows_store --target winml_dll' - ${{ if and(eq(parameters.BuildArch, 'arm64'), eq(parameters.BuildForStore, 'false')) }}: - arguments: '--build_dir $(Build.BinariesDirectory) --skip_submodule_sync --build_shared_lib --enable_onnx_tests --enable_wcos $(TelemetryOption) --use_winml --cmake_generator "Visual Studio 16 2019" --update --config RelWithDebInfo --enable_lto --disable_rtti --arm64' - ${{ if and(eq(parameters.BuildArch, 'arm64'), eq(parameters.BuildForStore, 'true')) }}: - arguments: '--build_dir $(Build.BinariesDirectory) --skip_submodule_sync --build_shared_lib --skip_winml_tests --enable_wcos $(TelemetryOption) --use_winml --cmake_generator "Visual Studio 16 2019" --update --config RelWithDebInfo --enable_lto --disable_rtti --arm64 --enable_windows_store --target winml_dll' - ${{ if and(eq(parameters.BuildArch, 'arm'), eq(parameters.BuildForStore, 'false')) }}: - arguments: '--build_dir $(Build.BinariesDirectory) --skip_submodule_sync --build_shared_lib --enable_onnx_tests --enable_wcos $(TelemetryOption) --use_winml --cmake_generator "Visual Studio 16 2019" --update --config RelWithDebInfo --enable_lto --disable_rtti --arm' - ${{ if and(eq(parameters.BuildArch, 'arm'), eq(parameters.BuildForStore, 'true')) }}: - arguments: '--build_dir $(Build.BinariesDirectory) --skip_submodule_sync --build_shared_lib --skip_winml_tests --enable_wcos $(TelemetryOption) --use_winml --cmake_generator "Visual Studio 16 2019" --update --config RelWithDebInfo --enable_lto --disable_rtti --arm --enable_windows_store --target winml_dll' + arguments: '--build_dir $(Build.BinariesDirectory) --skip_submodule_sync --build_shared_lib --enable_onnx_tests $(TelemetryOption) --use_winml --cmake_generator "Visual Studio 16 2019" --update --config RelWithDebInfo --enable_lto --disable_rtti $(BuildFlags)' workingDirectory: '$(Build.BinariesDirectory)' - ${{ if or(notIn(parameters['sln_platform'], 'Win32', 'x64'), eq(parameters.BuildForStore, 'true')) }}: @@ -107,7 +125,7 @@ steps: workingFolder: '$(Build.BinariesDirectory)\RelWithDebInfo' createLogFile: true - - ${{ if and(eq(parameters.BuildArch, 'x64'), eq(parameters.BuildForStore, 'false')) }}: + - ${{ if and(eq(parameters.BuildArch, 'x64'), eq(parameters.BuildForStore, 'false'), eq(parameters.Runtime, 'dynamic')) }}: - script: | mklink /D /J $(Build.BinariesDirectory)\RelWithDebInfo\models $(Build.BinariesDirectory)\models DIR dist\ /S /B > wheel_filename_file @@ -133,7 +151,7 @@ steps: testRunTitle: 'Unit Test Run' condition: succeededOrFailed() - - ${{ if and(eq(parameters.BuildArch, 'x64'), eq(parameters.BuildForStore, 'false')) }}: + - ${{ if and(eq(parameters.BuildArch, 'x64'), eq(parameters.BuildForStore, 'false'), eq(parameters.Runtime, 'dynamic')) }}: - script: | xcopy $(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo\winml_test_api.exe $(Build.ArtifactStagingDirectory)\test_artifact\ copy $(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo\winml_test_scenario.exe $(Build.ArtifactStagingDirectory)\test_artifact\ @@ -228,19 +246,11 @@ steps: workingDirectory: '$(Build.SourcesDirectory)\csharp' displayName: 'Create NuGet Package' - - ${{ if eq(parameters.BuildForStore, 'false') }}: - - task: PublishPipelineArtifact@0 - displayName: 'Publish Pipeline Artifact: Microsoft.AI.MachineLearning ${{ parameters.BuildArch }}' - inputs: - artifactName: 'Microsoft.AI.MachineLearning.${{ parameters.BuildArch }}' - targetPath: '$(Build.ArtifactStagingDirectory)' - - - ${{ if eq(parameters.BuildForStore, 'true') }}: - - task: PublishPipelineArtifact@0 - displayName: 'Publish Pipeline Artifact: Microsoft.AI.MachineLearning ${{ parameters.BuildArch }}' - inputs: - artifactName: 'Microsoft.AI.MachineLearning.${{ parameters.BuildArch }}.Store' - targetPath: '$(Build.ArtifactStagingDirectory)' + - task: PublishPipelineArtifact@0 + displayName: 'Publish Pipeline Artifact: $(ArtifactName)' + inputs: + artifactName: '$(ArtifactName)' + targetPath: '$(Build.ArtifactStagingDirectory)' - task: PublishSymbols@2 displayName: 'Publish Build Symbols'