diff --git a/csharp/OnnxRuntime.CSharp.proj b/csharp/OnnxRuntime.CSharp.proj index 64cc865f09..7e8bb88a82 100644 --- a/csharp/OnnxRuntime.CSharp.proj +++ b/csharp/OnnxRuntime.CSharp.proj @@ -27,7 +27,7 @@ CMake creates a target to this project /> - + AnyCPU;x86 bin\$(Configuration)\ $(OnnxRuntimeCsharpRoot)\..\build\Windows - $(OnnxRuntimeBuildDirectory)\$(Configuration)\external\protobuf\cmake\$(Configuration) + $(OnnxRuntimeBuildDirectory)\$(Configuration)\external\protobuf\cmake\$(Configuration) $(OnnxRuntimeCsharpRoot)\..\onnxruntime\core\protobuf $(OnnxRuntimeBuildDirectory)\$(Configuration)\$(Configuration) diff --git a/tools/ci_build/github/azure-pipelines/nuget/templates/cpu.yml b/tools/ci_build/github/azure-pipelines/nuget/templates/cpu.yml index 7409134b28..3d68e4994d 100644 --- a/tools/ci_build/github/azure-pipelines/nuget/templates/cpu.yml +++ b/tools/ci_build/github/azure-pipelines/nuget/templates/cpu.yml @@ -44,6 +44,48 @@ jobs: mkdir $(Build.ArtifactStagingDirectory)\testdata copy $(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo\custom_op_library.* $(Build.ArtifactStagingDirectory)\testdata +- template: ../../templates/win-ci-2019.yml + parameters: + AgentPool : 'Win-CPU-2019' + ArtifactName: 'drop-win-arm64-zip' + JobName: 'Windows_CI_Dev_arm64' + BuildCommand: '--build_dir $(Build.BinariesDirectory) --skip_submodule_sync --use_openmp --build_shared_lib --use_featurizers --enable_onnx_tests --arm64 --use_telemetry --use_winml --cmake_generator "Visual Studio 16 2019"' + BuildArch: 'x64' + EnvSetupScript: 'setup_env.bat' + sln_platform: 'arm64' + DoDebugBuild: 'false' + DoNugetPack : 'true' + DoCompliance: ${{ parameters.DoCompliance }} + DoEsrp: ${{ parameters.DoEsrp }} + NuPackScript: | + msbuild $(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.proj /p:Configuration=RelWithDebInfo /p:TargetArchitecture=arm64 /p:ProtocDirectory=$(Build.BinariesDirectory)\host_protoc\Release /t:CreatePackage + cd $(Build.SourcesDirectory)\csharp\src\Microsoft.ML.OnnxRuntime\bin\RelWithDebInfo\ + ren *.nupkg win-arm64.zip + copy $(Build.SourcesDirectory)\csharp\src\Microsoft.ML.OnnxRuntime\bin\RelWithDebInfo\*zip $(Build.ArtifactStagingDirectory) + mkdir $(Build.ArtifactStagingDirectory)\testdata + copy $(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo\custom_op_library.* $(Build.ArtifactStagingDirectory)\testdata + +- template: ../../templates/win-ci-2019.yml + parameters: + AgentPool : 'Win-CPU-2019' + ArtifactName: 'drop-win-arm-zip' + JobName: 'Windows_CI_Dev_arm' + BuildCommand: '--build_dir $(Build.BinariesDirectory) --skip_submodule_sync --use_openmp --build_shared_lib --use_featurizers --enable_onnx_tests --arm --use_telemetry --use_winml --cmake_generator "Visual Studio 16 2019"' + BuildArch: 'x64' + EnvSetupScript: 'setup_env.bat' + sln_platform: 'arm' + DoDebugBuild: 'false' + DoNugetPack : 'true' + DoCompliance: ${{ parameters.DoCompliance }} + DoEsrp: ${{ parameters.DoEsrp }} + NuPackScript: | + msbuild $(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.proj /p:Configuration=RelWithDebInfo /p:TargetArchitecture=arm /p:ProtocDirectory=$(Build.BinariesDirectory)\host_protoc\Release /t:CreatePackage + cd $(Build.SourcesDirectory)\csharp\src\Microsoft.ML.OnnxRuntime\bin\RelWithDebInfo\ + ren *.nupkg win-arm.zip + copy $(Build.SourcesDirectory)\csharp\src\Microsoft.ML.OnnxRuntime\bin\RelWithDebInfo\*zip $(Build.ArtifactStagingDirectory) + mkdir $(Build.ArtifactStagingDirectory)\testdata + copy $(Build.BinariesDirectory)\RelWithDebInfo\RelWithDebInfo\custom_op_library.* $(Build.ArtifactStagingDirectory)\testdata + - job: 'Linux_CI_Dev' workspace: clean: all @@ -128,6 +170,18 @@ jobs: artifactName: 'drop-win-x86-zip' targetPath: '$(Build.BinariesDirectory)/nuget-artifact' + - task: DownloadPipelineArtifact@0 + displayName: 'Download Pipeline Artifact - Win-arm64' + inputs: + artifactName: 'drop-win-arm64-zip' + targetPath: '$(Build.BinariesDirectory)/nuget-artifact' + + - task: DownloadPipelineArtifact@0 + displayName: 'Download Pipeline Artifact - Win-arm' + inputs: + artifactName: 'drop-win-arm-zip' + targetPath: '$(Build.BinariesDirectory)/nuget-artifact' + - task: DownloadPipelineArtifact@0 displayName: 'Download Pipeline Artifact - Linux' inputs: diff --git a/tools/ci_build/github/azure-pipelines/templates/win-ci-2019.yml b/tools/ci_build/github/azure-pipelines/templates/win-ci-2019.yml index 272e05af7f..1e2c9018d2 100644 --- a/tools/ci_build/github/azure-pipelines/templates/win-ci-2019.yml +++ b/tools/ci_build/github/azure-pipelines/templates/win-ci-2019.yml @@ -9,7 +9,7 @@ parameters: DoEsrp: 'false' DoTestCoverage: 'false' BuildArch: 'x64' # Optional. Options: x86, x64 - sln_platform: 'x64' # Options: Win32, x64 + sln_platform: 'x64' # Options: Win32, x64, arm, arm64 EnvSetupScript: 'setup_env.bat' CudaVersion: '' AgentPool: 'Win-CPU-2019' @@ -72,6 +72,11 @@ jobs: arguments: '$(BuildCommand) --update --config RelWithDebInfo' workingDirectory: '$(Build.BinariesDirectory)' + - ${{ if notIn(parameters['sln_platform'], 'Win32', 'x64') }}: + # Use cross-compiled protoc + - script: | + @echo ##vso[task.setvariable variable=ProtocDirectory]$(Build.BinariesDirectory)\host_protoc\Release + - task: VSBuild@1 displayName: 'Build' inputs: @@ -93,14 +98,7 @@ jobs: - task: NuGetToolInstaller@0 displayName: Use Nuget 4.9 inputs: - versionSpec: 4.9.4 - - - task: PythonScript@0 - displayName: 'Download test data' - inputs: - scriptPath: '$(Build.SourcesDirectory)\tools\ci_build\github\download_test_data.py' - arguments: --test_data_url $(TestDataUrl) --build_dir $(Build.BinariesDirectory) - workingDirectory: $(Build.BinariesDirectory) + versionSpec: 4.9.4 - task: DotNetCoreCLI@2 displayName: 'Restore nuget packages' @@ -109,45 +107,53 @@ jobs: projects: '$(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.sln' configuration: 'RelWithDebInfo' arguments: '--configuration RelWithDebInfo -p:Platform="Any CPU" -p:OrtPackageId=${{ parameters.OrtPackageId }}' - workingDirectory: '$(Build.SourcesDirectory)\csharp' + workingDirectory: '$(Build.SourcesDirectory)\csharp' - task: DotNetCoreCLI@2 - displayName: 'Build C#' + displayName: 'Build C#' inputs: command: build projects: '$(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.sln' - configuration: 'RelWithDebInfo' + configuration: 'RelWithDebInfo' arguments: '--configuration RelWithDebInfo -p:Platform="Any CPU" -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=${{ parameters.OrtPackageId }}' workingDirectory: '$(Build.SourcesDirectory)\csharp' - - task: DotNetCoreCLI@2 - displayName: 'Test C#' - inputs: - command: test - projects: '$(Build.SourcesDirectory)\csharp\test\Microsoft.ML.OnnxRuntime.Tests\Microsoft.ML.OnnxRuntime.Tests.csproj' - configuration: 'RelWithDebInfo' - arguments: '--configuration RelWithDebInfo -p:Platform="Any CPU" -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=${{ parameters.OrtPackageId }}' - workingDirectory: '$(Build.SourcesDirectory)\csharp' + - ${{ if in(parameters['sln_platform'], 'Win32', 'x64') }}: + - task: PythonScript@0 + displayName: 'Download test data' + inputs: + scriptPath: '$(Build.SourcesDirectory)\tools\ci_build\github\download_test_data.py' + arguments: --test_data_url $(TestDataUrl) --build_dir $(Build.BinariesDirectory) + workingDirectory: $(Build.BinariesDirectory) - - script: | - mklink /D /J $(Build.BinariesDirectory)\RelWithDebInfo\models $(Build.BinariesDirectory)\models - DIR dist\ /S /B > wheel_filename_file - set /p WHEEL_FILENAME= wheel_filename_file + set /p WHEEL_FILENAME=