onnxruntime/tools/ci_build/github/azure-pipelines/templates/web-ci.yml
Yulong Wang 56bced0581
[js/web] enable webgpu in browser unit test (#16310)
### Description
enable webgpu in browser unit test.

The CI pipeline uses Edge v113+ which enables WebGPU.

===

**UPDATE on 08/07/2023:**
- add flags to Edge browser launch commandline so that Edge on CI agents
can initialize WebGPU correctly.
- ONLY enable webgpu on web release build. Other pipelines are using
flag `-b=wasm,webgl,xnnpack` to specify the other 3 backends explicitly.
- disable "Resize" related test failures. Once they are fixed the tests
can be re-enabled.

---------

Co-authored-by: Satya Jandhyala <satya.k.jandhyala@gmail.com>
2023-08-08 11:45:04 -07:00

177 lines
5.2 KiB
YAML

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: win-wasm-ci.yml
- name: WebTemplate
type: string
default: win-web-ci.yml
# parameter couldn't be compared by string, so add one boolean parameter.
- name: UseWebPoolName
type: boolean
default: false
- name: RunWebGpuTests
type: boolean
default: false
- name: WebGpuPoolName
type: string
default: ''
- name: WebCpuPoolName
type: string
default: ''
- 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
fetchDepth: 1
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: '16.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: '--use_extensions --cmake_extra_defines onnxruntime_WEBASSEMBLY_DEFAULT_EXTENSION_FLAGS=ON ${{ parameters.ExtraBuildArgs }}'
PoolName: ${{ parameters.PoolName }}
BuildJsep: ${{ parameters.BuildJsep }}
WithCache: ${{ parameters.WithCache }}
- stage: Build_web_Debug
dependsOn: Build_wasm_Debug
jobs:
- template: ${{ parameters.WebTemplate }}
parameters:
CommitOverride: true
BuildConfig: 'Debug'
NpmPackagingMode: ${{ parameters.NpmPackagingMode }}
${{ if eq(parameters.UseWebPoolName, true)}}:
PoolName: ${{ parameters.WebCpuPoolName }}
${{ else }}:
PoolName: ${{ parameters.PoolName }}
PackageName: ${{ parameters.PackageName }}
- 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 --use_extensions --cmake_extra_defines onnxruntime_WEBASSEMBLY_DEFAULT_EXTENSION_FLAGS=ON ${{ 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: ${{ parameters.WebTemplate }}
parameters:
CommitOverride: true
BuildConfig: 'Release'
NpmPackagingMode: ${{ parameters.NpmPackagingMode }}
${{ if eq(parameters.UseWebPoolName, true)}}:
${{ if eq(parameters.RunWebGpuTests, true)}}:
PoolName: ${{ parameters.WebGpuPoolName }}
${{ else }}:
PoolName: ${{ parameters.WebCpuPoolName }}
${{ else }}:
PoolName: ${{ parameters.PoolName }}
PackageName: ${{ parameters.PackageName }}
RunWebGpuTests: ${{ parameters.RunWebGpuTests }}
- ${{ 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