From 647a8865871d0860bfea9564567dc0ae183a96f4 Mon Sep 17 00:00:00 2001 From: Yulong Wang Date: Tue, 2 Jun 2020 01:28:05 -0700 Subject: [PATCH] [Nodejs binding] create a new pipeline to generate signed binaries (#4104) * add yml files * update pipeline * fix yaml syntax * yaml pop BuildCSharp * udpate yaml * do not stage codesign summary --- .../nodejs/cpu-esrp-pipeline.yml | 14 +++ .../azure-pipelines/nodejs/templates/cpu.yml | 20 +++++ .../azure-pipelines/templates/esrp_dll.yml | 3 +- .../azure-pipelines/templates/win-ci-2019.yml | 85 +++++++++++++------ 4 files changed, 96 insertions(+), 26 deletions(-) create mode 100644 tools/ci_build/github/azure-pipelines/nodejs/cpu-esrp-pipeline.yml create mode 100644 tools/ci_build/github/azure-pipelines/nodejs/templates/cpu.yml diff --git a/tools/ci_build/github/azure-pipelines/nodejs/cpu-esrp-pipeline.yml b/tools/ci_build/github/azure-pipelines/nodejs/cpu-esrp-pipeline.yml new file mode 100644 index 0000000000..589aee23a0 --- /dev/null +++ b/tools/ci_build/github/azure-pipelines/nodejs/cpu-esrp-pipeline.yml @@ -0,0 +1,14 @@ +# schedules: +# - cron: "0 8 * * *" +# displayName: Daily Build +# branches: +# include: +# - master +# always: true + +jobs: +- template: templates/cpu.yml + parameters: + AgentPool : 'Win-CPU-2019' + DoEsrp: 'true' + DoCompliance: 'true' diff --git a/tools/ci_build/github/azure-pipelines/nodejs/templates/cpu.yml b/tools/ci_build/github/azure-pipelines/nodejs/templates/cpu.yml new file mode 100644 index 0000000000..09c1fc958c --- /dev/null +++ b/tools/ci_build/github/azure-pipelines/nodejs/templates/cpu.yml @@ -0,0 +1,20 @@ +parameters: + DoEsrp: 'false' + DoCompliance: 'false' + BuildCSharp: 'false' + +jobs: +- template: ../../templates/win-ci-2019.yml + parameters: + AgentPool : 'Win-CPU-2019' + ArtifactName: 'drop-nodejs' + JobName: 'Windows_CI_Dev' + BuildCommand: '--build_dir $(Build.BinariesDirectory) --skip_submodule_sync --use_openmp --build_nodejs --enable_onnx_tests --enable_wcos --cmake_generator "Visual Studio 16 2019"' + BuildArch: 'x64' + EnvSetupScript: 'setup_env.bat' + sln_platform: 'x64' + DoDebugBuild: 'false' + DoNodejsPack : 'true' + DoEsrp: ${{ parameters.DoEsrp }} + DoCompliance: ${{ parameters.DoCompliance }} + BuildCSharp: ${{ parameters.BuildCSharp }} diff --git a/tools/ci_build/github/azure-pipelines/templates/esrp_dll.yml b/tools/ci_build/github/azure-pipelines/templates/esrp_dll.yml index 175db32f1a..927c2926b4 100644 --- a/tools/ci_build/github/azure-pipelines/templates/esrp_dll.yml +++ b/tools/ci_build/github/azure-pipelines/templates/esrp_dll.yml @@ -2,6 +2,7 @@ parameters: FolderPath: '' DisplayName: '' DoEsrp: 'false' + Pattern: '*.dll' steps: - ${{ if eq(parameters['DoEsrp'], 'true') }}: @@ -10,7 +11,7 @@ steps: inputs: ConnectedServiceName: 'OnnxRuntime CodeSign 20190817' FolderPath: ${{ parameters.FolderPath }} - Pattern: '*.dll' + Pattern: ${{ parameters.Pattern }} signConfigType: inlineSignParams inlineOperation: | [ 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 fd42a7807a..3f35d5932e 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 @@ -3,9 +3,11 @@ parameters: DoCompliance: 'false' BuildCommand: '' JobName: 'Windows_CI_Dev' + BuildCSharp: 'true' DoNugetPack: 'false' NuPackScript : '' ArtifactName: 'drop-nuget' + DoNodejsPack: 'false' DoEsrp: 'false' DoTestCoverage: 'false' BuildArch: 'x64' # Optional. Options: x86, x64 @@ -111,36 +113,40 @@ jobs: createLogFile: true # The Configuration variable is required to build C# - - script: | - @echo ##vso[task.setvariable variable=Configuration]$(BuildConfig) - displayName: 'Set Configuration variable' + - ${{ if eq(parameters.BuildCSharp, true) }}: + - script: | + @echo ##vso[task.setvariable variable=Configuration]$(BuildConfig) + displayName: 'Set Configuration variable' - template: set-test-data-variables-step.yml - - task: NuGetToolInstaller@0 - displayName: Use Nuget 4.9 - inputs: - versionSpec: 4.9.4 + - ${{ if eq(parameters.BuildCSharp, true) }}: + - task: NuGetToolInstaller@0 + displayName: Use Nuget 4.9 + inputs: + versionSpec: 4.9.4 - - task: DotNetCoreCLI@2 - displayName: 'Restore nuget packages' - inputs: - command: restore - projects: '$(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.sln' - configuration: '$(BuildConfig)' - arguments: '--configuration $(BuildConfig) -p:Platform="Any CPU" -p:OrtPackageId=${{ parameters.OrtPackageId }}' - workingDirectory: '$(Build.SourcesDirectory)\csharp' + - ${{ if eq(parameters.BuildCSharp, true) }}: + - task: DotNetCoreCLI@2 + displayName: 'Restore nuget packages' + inputs: + command: restore + projects: '$(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.sln' + configuration: '$(BuildConfig)' + arguments: '--configuration $(BuildConfig) -p:Platform="Any CPU" -p:OrtPackageId=${{ parameters.OrtPackageId }}' + workingDirectory: '$(Build.SourcesDirectory)\csharp' - - task: DotNetCoreCLI@2 - displayName: 'Build C#' - inputs: - command: build - projects: '$(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.sln' - configuration: '$(BuildConfig)' - arguments: '--configuration $(BuildConfig) -p:Platform="Any CPU" -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=${{ parameters.OrtPackageId }}' - workingDirectory: '$(Build.SourcesDirectory)\csharp' + - ${{ if eq(parameters.BuildCSharp, true) }}: + - task: DotNetCoreCLI@2 + displayName: 'Build C#' + inputs: + command: build + projects: '$(Build.SourcesDirectory)\csharp\OnnxRuntime.CSharp.sln' + configuration: '$(BuildConfig)' + arguments: '--configuration $(BuildConfig) -p:Platform="Any CPU" -p:OnnxRuntimeBuildDirectory="$(Build.BinariesDirectory)" -p:OrtPackageId=${{ parameters.OrtPackageId }}' + workingDirectory: '$(Build.SourcesDirectory)\csharp' - - ${{ if in(parameters['sln_platform'], 'Win32', 'x64') }}: + - ${{ if and(eq(parameters.BuildCSharp, true), in(parameters['sln_platform'], 'Win32', 'x64')) }}: - task: DotNetCoreCLI@2 displayName: 'Test C#' inputs: @@ -173,7 +179,7 @@ jobs: condition: succeededOrFailed() # Nuget packaging if needed - - ${{ if eq(parameters['DoNugetPack'], 'true') }}: + - ${{ if and(eq(parameters.BuildCSharp, true), eq(parameters['DoNugetPack'], 'true')) }}: - task: BatchScript@1 displayName: 'Setup VS2019 env vars' inputs: @@ -212,6 +218,35 @@ jobs: searchPattern: '**/*.pdb' symbolServerType: teamServices + # Node.js Publish + - ${{ if eq(parameters['DoNodejsPack'], 'true') }}: + - task: BatchScript@1 + displayName: 'Setup VS2019 env vars' + inputs: + filename: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat' + arguments: ${{ parameters.BuildArch }} + modifyEnvironment: true + - template: esrp_dll.yml + parameters: + FolderPath: '$(Build.SourcesDirectory)\nodejs\bin\napi-v3\win32\x64' + DisplayName: 'ESRP - Sign Node.js binding binaries' + DoEsrp: ${{ parameters.DoEsrp }} + Pattern: '*.dll,*.node' + + - script: | + del /Q $(Build.SourcesDirectory)\nodejs\bin\napi-v3\win32\x64\CodeSignSummary-*.* + call npm pack + copy $(Build.SourcesDirectory)\nodejs\onnxruntime-*.tgz $(Build.ArtifactStagingDirectory) + copy $(Build.SourcesDirectory)\nodejs\prebuilds $(Build.ArtifactStagingDirectory) + workingDirectory: '$(Build.SourcesDirectory)\nodejs' + displayName: 'Create NPM Package' + + - task: PublishPipelineArtifact@0 + displayName: 'Publish Pipeline Artifact: ${{ parameters.ArtifactName }}' + inputs: + artifactName: ${{ parameters.ArtifactName }} + targetPath: '$(Build.ArtifactStagingDirectory)' + # Compliance tasks require logs from Debug Build - ${{ if eq(parameters['DoCompliance'], 'true') }}: - template: compliance.yml