parameters: - name: NpmPackagingMode displayName: 'NPM packages publish configuration' type: string default: 'dev' - name: IsReleasePipeline displayName: 'Npm packaging pipeline' type: boolean default: false - name: PoolName displayName: 'Agent pool name' type: string default: 'onnxruntime-Win-CPU-2022' - name: PackageName displayName: 'Package name' type: string default: 'NPM_packages' - name: BuildStaticLib displayName: 'Build static library' type: boolean default: false - name: BuildJsep displayName: 'Build JSEP' type: boolean default: true - name: WASMTemplate type: string default: linux-wasm-ci.yml # parameter couldn't be compared by string, so add one boolean parameter. - name: UseWebPoolName type: boolean default: false - name: RunWebGpuTestsForReleaseBuild type: boolean default: false - name: RunWebGpuTestsForDebugBuild type: boolean default: false - name: WebGpuPoolName type: string default: 'onnxruntime-Win2022-webgpu-A10' - name: WebCpuPoolName type: string default: 'onnxruntime-Win-CPU-2022-web' - name: ExtraBuildArgs displayName: 'Extra build command line arguments' type: string - name: WithCache displayName: Build with Cache type: boolean default: false stages: - stage: Precheck_and_extract_commit jobs: - job: Precheck_and_extract_commit pool: ${{ parameters.PoolName }} variables: runCodesignValidationInjection: false timeoutInMinutes: 30 workspace: clean: all steps: - checkout: self submodules: false - script: | git submodule sync -- cmake/external/onnx git submodule update --init -- cmake/external/onnx workingDirectory: '$(Build.SourcesDirectory)' displayName: 'Checkout submodule onnx' - task: NodeTool@0 inputs: versionSpec: '20.x' - template: linux-web-init-and-check.yml - task: Bash@3 displayName: 'Extract commit SHA and save to __commit.txt' inputs: targetType: 'inline' script: | echo $(Build.SourceVersion) echo $(Build.SourceVersion) > "$(Build.ArtifactStagingDirectory)"/__commit.txt - task: PublishPipelineArtifact@0 displayName: 'Publish __commit.txt' inputs: artifactName: '__commit' targetPath: '$(Build.ArtifactStagingDirectory)' - stage: Build_wasm_Debug dependsOn: Precheck_and_extract_commit jobs: - template: ${{ parameters.WASMTemplate }} parameters: CommitOverride: true BuildConfig: 'Debug' ExtraBuildArgs: '--enable_wasm_profiling ${{ parameters.ExtraBuildArgs }}' PoolName: ${{ parameters.PoolName }} BuildJsep: ${{ parameters.BuildJsep }} WithCache: ${{ parameters.WithCache }} - stage: Build_web_Debug dependsOn: Build_wasm_Debug jobs: - template: win-web-ci.yml parameters: CommitOverride: true BuildConfig: 'Debug' NpmPackagingMode: ${{ parameters.NpmPackagingMode }} ${{ if eq(parameters.UseWebPoolName, true)}}: ${{ if eq(parameters.RunWebGpuTestsForDebugBuild, true)}}: PoolName: ${{ parameters.WebGpuPoolName }} ${{ else }}: PoolName: ${{ parameters.WebCpuPoolName }} ${{ else }}: PoolName: ${{ parameters.PoolName }} PackageName: ${{ parameters.PackageName }} RunWebGpuTests: ${{ parameters.RunWebGpuTestsForDebugBuild }} - stage: Build_wasm_Release dependsOn: Precheck_and_extract_commit jobs: - template: ${{ parameters.WASMTemplate }} parameters: CommitOverride: true BuildConfig: 'Release' ExtraBuildArgs: '--target onnxruntime_webassembly --skip_tests --enable_wasm_api_exception_catching --disable_rtti ${{ parameters.ExtraBuildArgs }}' PoolName: ${{ parameters.PoolName }} BuildJsep: ${{ parameters.BuildJsep }} WithCache: ${{ parameters.WithCache }} - ${{ if eq(parameters.BuildStaticLib, 'true') }}: - stage: Build_wasm_Release_static_library dependsOn: Precheck_and_extract_commit jobs: - template: ${{ parameters.WASMTemplate }} parameters: CommitOverride: true BuildConfig: 'Release' ExtraBuildArgs: '${{ parameters.ExtraBuildArgs }}' PoolName: ${{ parameters.PoolName }} SkipPublish: true TimeoutInMinutes: 270 BuildStaticLib: true WithCache: ${{ parameters.WithCache }} - stage: Build_web_Release dependsOn: Build_wasm_Release jobs: - template: win-web-ci.yml parameters: CommitOverride: true BuildConfig: 'Release' NpmPackagingMode: ${{ parameters.NpmPackagingMode }} ${{ if eq(parameters.UseWebPoolName, true)}}: ${{ if eq(parameters.RunWebGpuTestsForReleaseBuild, true)}}: PoolName: ${{ parameters.WebGpuPoolName }} ${{ else }}: PoolName: ${{ parameters.WebCpuPoolName }} ${{ else }}: PoolName: ${{ parameters.PoolName }} PackageName: ${{ parameters.PackageName }} RunWebGpuTests: ${{ parameters.RunWebGpuTestsForReleaseBuild }} # Disable BrowserStack test # TODO: fix and re-enable in PostMerge test # # - ${{ if ne(parameters.IsReleasePipeline, true) }}: # - stage: Test_web_BrowserStack # dependsOn: Build_wasm_Release # jobs: # - template: web-browserstack-ci.yml # parameters: # CommitOverride: true - ${{ if ne(parameters.IsReleasePipeline, true) }}: - stage: Test_web_MultiBrowsers dependsOn: Build_wasm_Release jobs: - template: win-web-multi-browsers.yml parameters: CommitOverride: true