onnxruntime/tools/ci_build/github/azure-pipelines/templates/web-ci.yml
Yi Zhang 8e8840f1de
Enable Web CI on Linux (#16419)
### Description
1. Enable Web ci on Linux

### Motivation and Context
1. speed up web ci, the duration can be reduced from 160 minutes to 130
minutes, a time saving of 20% could be be achieved.
The total computation time is 455 minutes now. Moved to Linux, it could
be reduced to 336 minutes.
2. It's the first step to enable compilation cache for emscripten
3. per Yulong's request, build_web stages are still using windows pool


![image](https://github.com/microsoft/onnxruntime/assets/16190118/c9496408-74bd-45ea-b4ae-a4dd2a574d17)


https://dev.azure.com/onnxruntime/onnxruntime/_build/results?buildId=1038382&view=results
2023-06-22 15:42:58 +08:00

149 lines
4.3 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: WebPoolName
type: string
default: ''
- name: ExtraBuildArgs
displayName: 'Extra build command line arguments'
type: string
stages:
- stage: Extract_commit
jobs:
- job: Extract_commit
pool: ${{ parameters.PoolName }}
variables:
runCodesignValidationInjection: false
timeoutInMinutes: 30
workspace:
clean: all
steps:
- checkout: none
fetchDepth: 1
submodules: false
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo $(Build.SourceVersion)
echo $(Build.SourceVersion) > "$(Build.ArtifactStagingDirectory)"/__commit.txt
- task: PublishPipelineArtifact@0
displayName: 'Publish Pipeline Artifact'
inputs:
artifactName: '__commit'
targetPath: '$(Build.ArtifactStagingDirectory)'
- stage: Build_wasm_Debug
dependsOn: 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 }}
- 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.WebPoolName }}
${{ else }}:
PoolName: ${{ parameters.PoolName }}
PackageName: ${{ parameters.PackageName }}
- stage: Build_wasm_Release
dependsOn: 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 }}
- ${{ if eq(parameters.BuildStaticLib, 'true') }}:
- stage: Build_wasm_Release_static_library
dependsOn: Extract_commit
jobs:
- template: ${{ parameters.WASMTemplate }}
parameters:
CommitOverride: true
BuildConfig: 'Release'
ExtraBuildArgs: '${{ parameters.ExtraBuildArgs }}'
PoolName: ${{ parameters.PoolName }}
SkipPublish: true
TimeoutInMinutes: 270
- 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)}}:
PoolName: ${{ parameters.WebPoolName }}
${{ else }}:
PoolName: ${{ parameters.PoolName }}
PackageName: ${{ parameters.PackageName }}
- ${{ 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