onnxruntime/tools/ci_build/github/azure-pipelines/templates/linux-wasm-ci.yml
Changming Sun eaaf27015e
Remove EnvSetupScript parameter from win-ci.yml (#18662)
### Description
To make the code more consistent. Now some TRT pipelines download TRT
binaries on-the-fly, while other TRT pipelines use a preinstalled
version. This PR make them the same.
2023-12-01 15:30:16 -08:00

227 lines
9.8 KiB
YAML

parameters:
- name: CommitOverride
type: boolean
default: false
- name: BuildConfig
type: string
default: 'Debug'
- name: ExtraBuildArgs
type: string
default: ''
- name: PoolName
type: string
default: 'onnxruntime-Ubuntu2004-AMD-CPU'
- name: SkipPublish
type: boolean
default: false
- name: TimeoutInMinutes
default: 180
- name: BuildJsep
type: boolean
default: false
# In fact, it's only used on Linux for compiler cache.
- name: BuildStaticLib
type: boolean
default: false
- name: BuildTraining
type: boolean
default: true
- name: WithCache
type: boolean
default: false
jobs:
- job: build_WASM
pool:
name: ${{ parameters.PoolName }}
variables:
buildArch: x64
CommonBuildArgs: '--parallel --config ${{ parameters.BuildConfig }} --skip_submodule_sync --build_wasm ${{ parameters.ExtraBuildArgs }}'
runCodesignValidationInjection: false
TODAY: $[format('{0:dd}{0:MM}{0:yyyy}', pipeline.startTime)]
ORT_CACHE_DIR: $(Agent.TempDirectory)/ort_ccache
timeoutInMinutes: ${{ parameters.TimeoutInMinutes }}
workspace:
clean: all
steps:
- task: mspremier.PostBuildCleanup.PostBuildCleanup-task.PostBuildCleanup@3
displayName: 'Clean Agent Directories'
condition: always()
- checkout: self
- task: DownloadPipelineArtifact@2
inputs:
artifact: '__commit'
path: $(Pipeline.Workspace)
displayName: 'Get commit SHA'
condition: eq('${{ parameters.CommitOverride }}', 'true')
- script: |
export __commit__=<$(Pipeline.Workspace)/__commit.txt
git fetch origin +$__commit__:refs/remotes/origin/$__commit__
git checkout --force $__commit__
workingDirectory: '$(Build.SourcesDirectory)'
displayName: 'Read commit SHA and checkout'
condition: eq('${{ parameters.CommitOverride }}', 'true')
- script: |
git submodule sync --recursive
git submodule update --init --recursive
workingDirectory: '$(Build.SourcesDirectory)'
displayName: 'Checkout submodules'
- task: UsePythonVersion@0
inputs:
versionSpec: '3.8'
addToPath: true
architecture: $(buildArch)
- template: download-deps.yml
- task: PythonScript@0
displayName: 'Update deps.txt'
inputs:
scriptPath: $(Build.SourcesDirectory)/tools/ci_build/replace_urls_in_deps.py
arguments: --new_dir $(Build.BinariesDirectory)/deps
workingDirectory: $(Build.BinariesDirectory)
- ${{if eq(parameters.WithCache, true)}}:
- script: |
set -ex
cd '$(Build.SourcesDirectory)/cmake/external/emsdk'
./emsdk install 3.1.44 ccache-git-emscripten-64bit
./emsdk activate 3.1.44 ccache-git-emscripten-64bit
displayName: 'emsdk install and activate ccache for emscripten'
- ${{if eq(parameters.WithCache, false)}}:
- script: |
set -ex
cd '$(Build.SourcesDirectory)/cmake/external/emsdk'
./emsdk install 3.1.44
./emsdk activate 3.1.44
displayName: 'emsdk install and activate ccache for emscripten'
- template: build-linux-wasm-step.yml
parameters:
Today: $(Today)
${{ if eq(parameters.BuildStaticLib, true)}}:
AdditionalKey: wasm | ${{ parameters.BuildConfig }} | static
${{ else }}:
AdditionalKey: wasm | ${{ parameters.BuildConfig }}
CacheDir: $(ORT_CACHE_DIR)/wasm
Arguments: '$(CommonBuildArgs) --build_dir $(Build.BinariesDirectory)/wasm'
DisplayName: 'Build and test (node)'
WithCache: ${{ parameters.WithCache }}
- template: build-linux-wasm-step.yml
parameters:
Today: $(Today)
${{ if eq(parameters.BuildStaticLib, true)}}:
AdditionalKey: wasm_threads | ${{ parameters.BuildConfig }} | static
${{ else }}:
AdditionalKey: wasm_threads | ${{ parameters.BuildConfig }}
CacheDir: $(ORT_CACHE_DIR)/wasm_threads
Arguments: '$(CommonBuildArgs) --build_dir $(Build.BinariesDirectory)/wasm_threads --enable_wasm_threads'
DisplayName: 'Build and test (node) (threads)'
WithCache: ${{ parameters.WithCache }}
- template: build-linux-wasm-step.yml
parameters:
Today: $(Today)
${{ if eq(parameters.BuildStaticLib, true)}}:
AdditionalKey: wasm_simd_threads | ${{ parameters.BuildConfig }} | static
${{ else }}:
AdditionalKey: wasm_simd_threads | ${{ parameters.BuildConfig }}
CacheDir: $(ORT_CACHE_DIR)/wasm_simd_threads
Arguments: '$(CommonBuildArgs) --build_dir $(Build.BinariesDirectory)/wasm_simd_threads --enable_wasm_simd --enable_wasm_threads --wasm_run_tests_in_browser'
DisplayName: 'Build and test (browser) (simd + threads)'
WithCache: ${{ parameters.WithCache }}
- template: build-linux-wasm-step.yml
parameters:
Today: $(Today)
${{ if eq(parameters.BuildStaticLib, true)}}:
AdditionalKey: wasm_simd | ${{ parameters.BuildConfig }} | static
${{ else }}:
AdditionalKey: wasm_simd | ${{ parameters.BuildConfig }}
CacheDir: $(ORT_CACHE_DIR)/wasm_simd
Arguments: '$(CommonBuildArgs) --build_dir $(Build.BinariesDirectory)/wasm_simd --enable_wasm_simd'
DisplayName: 'Build and test (node) (simd)'
WithCache: ${{ parameters.WithCache }}
- ${{ if eq(parameters.BuildTraining, true) }}:
- template: build-linux-wasm-step.yml
parameters:
Today: $(Today)
${{ if eq(parameters.BuildStaticLib, true)}}:
AdditionalKey: training_wasm_simd | ${{ parameters.BuildConfig }} | static
${{ else }}:
AdditionalKey: training_wasm_simd | ${{ parameters.BuildConfig }}
CacheDir: $(ORT_CACHE_DIR)/training_wasm_simd
Arguments: '$(CommonBuildArgs) --build_dir $(Build.BinariesDirectory)/training_wasm_simd --enable_training_apis --enable_wasm_simd --target onnxruntime_webassembly --skip_tests'
DisplayName: 'Build (training + simd)'
WithCache: ${{ parameters.WithCache }}
- ${{ if eq(parameters.BuildJsep, true) }}:
- template: build-linux-wasm-step.yml
parameters:
Today: $(Today)
${{ if eq(parameters.BuildStaticLib, true)}}:
AdditionalKey: wasm_simd_jsep | ${{ parameters.BuildConfig }} | static
${{ else }}:
AdditionalKey: wasm_simd_jsep | ${{ parameters.BuildConfig }}
CacheDir: $(ORT_CACHE_DIR)/wasm_simd_jsep
Arguments: '$(CommonBuildArgs) --build_dir $(Build.BinariesDirectory)/wasm_simd_jsep --enable_wasm_simd --use_jsep --target onnxruntime_webassembly --skip_tests'
DisplayName: 'Build (simd + JSEP)'
WithCache: ${{ parameters.WithCache }}
- template: build-linux-wasm-step.yml
parameters:
Today: $(Today)
${{ if eq(parameters.BuildStaticLib, true)}}:
AdditionalKey: wasm_simd_threads_jsep | ${{ parameters.BuildConfig }} | static
${{ else }}:
AdditionalKey: wasm_simd_threads_jsep | ${{ parameters.BuildConfig }}
CacheDir: $(ORT_CACHE_DIR)/wasm_simd_threads_jsep
Arguments: '$(CommonBuildArgs) --build_dir $(Build.BinariesDirectory)/wasm_simd_threads_jsep --enable_wasm_simd --enable_wasm_threads --use_jsep --target onnxruntime_webassembly --skip_tests'
DisplayName: 'Build (simd + threads + JSEP)'
WithCache: ${{ parameters.WithCache }}
- ${{ if eq(parameters.SkipPublish, false) }}:
- script: |
cp $(Build.BinariesDirectory)/wasm/${{ parameters.BuildConfig }}/ort-wasm*.* $(Build.ArtifactStagingDirectory)
cp $(Build.BinariesDirectory)/wasm_threads/${{ parameters.BuildConfig }}/ort-wasm*.* $(Build.ArtifactStagingDirectory)
cp $(Build.BinariesDirectory)/wasm_simd_threads/${{ parameters.BuildConfig }}/ort-wasm*.* $(Build.ArtifactStagingDirectory)
cp $(Build.BinariesDirectory)/wasm_simd/${{ parameters.BuildConfig }}/ort-wasm*.* $(Build.ArtifactStagingDirectory)
if [ -d $(Build.BinariesDirectory)/wasm_simd_jsep ]; then
cp $(Build.BinariesDirectory)/wasm_simd_jsep/${{ parameters.BuildConfig }}/ort-wasm-simd.wasm $(Build.ArtifactStagingDirectory)/ort-wasm-simd.jsep.wasm
cp $(Build.BinariesDirectory)/wasm_simd_jsep/${{ parameters.BuildConfig }}/ort-wasm-simd.js $(Build.ArtifactStagingDirectory)/ort-wasm-simd.jsep.js
fi
if [ -d $(Build.BinariesDirectory)/wasm_simd_threads_jsep ]; then
cp $(Build.BinariesDirectory)/wasm_simd_threads_jsep/${{ parameters.BuildConfig }}/ort-wasm-simd-threaded.wasm $(Build.ArtifactStagingDirectory)/ort-wasm-simd-threaded.jsep.wasm
cp $(Build.BinariesDirectory)/wasm_simd_threads_jsep/${{ parameters.BuildConfig }}/ort-wasm-simd-threaded.js $(Build.ArtifactStagingDirectory)/ort-wasm-simd-threaded.jsep.js
cp $(Build.BinariesDirectory)/wasm_simd_threads_jsep/${{ parameters.BuildConfig }}/ort-wasm-simd-threaded.worker.js $(Build.ArtifactStagingDirectory)/ort-wasm-simd-threaded.jsep.worker.js
fi
if [ -d $(Build.BinariesDirectory)/training_wasm_simd ]; then
cp $(Build.BinariesDirectory)/training_wasm_simd/${{ parameters.BuildConfig }}/ort-training-wasm-simd.wasm $(Build.ArtifactStagingDirectory)/ort-training-wasm-simd.wasm
cp $(Build.BinariesDirectory)/training_wasm_simd/${{ parameters.BuildConfig }}/ort-training-wasm-simd.js $(Build.ArtifactStagingDirectory)/ort-training-wasm-simd.js
fi
displayName: 'Create Artifacts'
- ${{ if eq(parameters.SkipPublish, false) }}:
- task: PublishPipelineArtifact@0
displayName: 'Publish Pipeline Artifact'
inputs:
artifactName: '${{ parameters.BuildConfig }}_wasm'
targetPath: '$(Build.ArtifactStagingDirectory)'
- task: PublishTestResults@2
displayName: 'Publish unit test results'
inputs:
testResultsFiles: '**/*.results.xml'
searchFolder: '$(Build.BinariesDirectory)'
testRunTitle: 'Unit Test Run'
condition: and(succeededOrFailed(), eq('${{ parameters.BuildConfig }}', 'Debug'))
- template: component-governance-component-detection-steps.yml
parameters :
condition : 'succeeded'