[js/wasm] Add WebAssembly static library build into web CI pipeline (#10959)

* add webassembly static library build into ci

* add webassembly static library build into ci

* skip publishing on static lib

* fix type
This commit is contained in:
Sunghoon 2022-03-21 15:49:49 -07:00 committed by GitHub
parent 4a5b5328a4
commit b34d9f6867
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 62 additions and 37 deletions

View file

@ -110,35 +110,37 @@ if (onnxruntime_BUILD_WEBASSEMBLY_STATIC_LIB)
re2::re2
)
file(GLOB_RECURSE onnxruntime_webassembly_test_src CONFIGURE_DEPENDS
"${ONNXRUNTIME_ROOT}/test/wasm/test_main.cc"
"${ONNXRUNTIME_ROOT}/test/wasm/test_inference.cc"
)
if (onnxruntime_BUILD_UNIT_TESTS)
file(GLOB_RECURSE onnxruntime_webassembly_test_src CONFIGURE_DEPENDS
"${ONNXRUNTIME_ROOT}/test/wasm/test_main.cc"
"${ONNXRUNTIME_ROOT}/test/wasm/test_inference.cc"
)
source_group(TREE ${REPO_ROOT} FILES ${onnxruntime_webassembly_test_src})
source_group(TREE ${REPO_ROOT} FILES ${onnxruntime_webassembly_test_src})
add_executable(onnxruntime_webassembly_test
${onnxruntime_webassembly_test_src}
)
add_executable(onnxruntime_webassembly_test
${onnxruntime_webassembly_test_src}
)
set_target_properties(onnxruntime_webassembly_test PROPERTIES LINK_FLAGS
"-s ALLOW_MEMORY_GROWTH=1 -s \"EXPORTED_RUNTIME_METHODS=['FS']\" --preload-file ${CMAKE_CURRENT_BINARY_DIR}/testdata@/testdata -s EXIT_RUNTIME=1"
)
set_target_properties(onnxruntime_webassembly_test PROPERTIES LINK_FLAGS
"-s ALLOW_MEMORY_GROWTH=1 -s \"EXPORTED_RUNTIME_METHODS=['FS']\" --preload-file ${CMAKE_CURRENT_BINARY_DIR}/testdata@/testdata -s EXIT_RUNTIME=1"
)
target_link_libraries(onnxruntime_webassembly_test PUBLIC
onnxruntime_webassembly
GTest::gtest
)
target_link_libraries(onnxruntime_webassembly_test PUBLIC
onnxruntime_webassembly
GTest::gtest
)
find_program(NODE_EXECUTABLE node required)
if (NOT NODE_EXECUTABLE)
message(FATAL_ERROR "Node is required for a test")
find_program(NODE_EXECUTABLE node required)
if (NOT NODE_EXECUTABLE)
message(FATAL_ERROR "Node is required for a test")
endif()
add_test(NAME onnxruntime_webassembly_test
COMMAND ${NODE_EXECUTABLE} onnxruntime_webassembly_test.js
WORKING_DIRECTORY $<TARGET_FILE_DIR:onnxruntime_webassembly_test>
)
endif()
add_test(NAME onnxruntime_webassembly_test
COMMAND ${NODE_EXECUTABLE} onnxruntime_webassembly_test.js
WORKING_DIRECTORY $<TARGET_FILE_DIR:onnxruntime_webassembly_test>
)
else()
file(GLOB_RECURSE onnxruntime_webassembly_src CONFIGURE_DEPENDS
"${ONNXRUNTIME_ROOT}/wasm/api.cc"
@ -215,4 +217,4 @@ else()
set_target_properties(onnxruntime_webassembly PROPERTIES OUTPUT_NAME "ort-wasm")
endif()
endif()
endif()
endif()

View file

@ -15,6 +15,10 @@ parameters:
displayName: 'Package name'
type: string
default: 'NPM_packages'
- name: BuildStaticLib
displayName: 'Build static library'
type: boolean
default: false
stages:
- stage: Extract_commit
@ -70,6 +74,18 @@ stages:
ExtraBuildArgs: '--skip_tests --disable_wasm_exception_catching --disable_rtti $(ExtraBuildArgs)'
PoolName: ${{ parameters.PoolName }}
- ${{ if eq(parameters.BuildStaticLib, 'true') }}:
- stage: Build_wasm_Release_static_library
dependsOn: Extract_commit
jobs:
- template: win-wasm-ci.yml
parameters:
CommitOverride: true
BuildConfig: 'Release'
ExtraBuildArgs: '$(ExtraBuildArgs)'
PoolName: ${{ parameters.PoolName }}
SkipPublish: true
- stage: Build_web_Release
dependsOn: Build_wasm_Release
jobs:
@ -81,7 +97,7 @@ stages:
PoolName: ${{ parameters.PoolName }}
PackageName: ${{ parameters.PackageName }}
- ${{ if ne(parameters.IsReleasePipeline, 'true') }}:
- ${{ if ne(parameters.IsReleasePipeline, true) }}:
- stage: Test_web_BrowserStack
dependsOn: Build_wasm_Release
jobs:
@ -89,7 +105,7 @@ stages:
parameters:
CommitOverride: true
- ${{ if ne(parameters.IsReleasePipeline, 'true') }}:
- ${{ if ne(parameters.IsReleasePipeline, true) }}:
- stage: Test_web_MultiBrowsers
dependsOn: Build_wasm_Release
jobs:

View file

@ -15,6 +15,10 @@ parameters:
type: string
default: 'Win-CPU-2019'
- name: SkipPublish
type: boolean
default: false
jobs:
- job: build_WASM
pool: ${{ parameters.PoolName }}
@ -89,17 +93,19 @@ jobs:
scriptPath: '$(Build.SourcesDirectory)\tools\ci_build\build.py'
arguments: '$(CommonBuildArgs) --build_dir $(Build.BinariesDirectory)\wasm_simd --path_to_protoc_exe $(Build.BinariesDirectory)\wasm\host_protoc\Release\protoc.exe --enable_wasm_simd'
workingDirectory: '$(Build.BinariesDirectory)'
- script: |
copy $(Build.BinariesDirectory)\wasm\${{ parameters.BuildConfig }}\ort-wasm*.* $(Build.ArtifactStagingDirectory)
copy $(Build.BinariesDirectory)\wasm_threads\${{ parameters.BuildConfig }}\ort-wasm*.* $(Build.ArtifactStagingDirectory)
copy $(Build.BinariesDirectory)\wasm_simd_threads\${{ parameters.BuildConfig }}\ort-wasm*.* $(Build.ArtifactStagingDirectory)
copy $(Build.BinariesDirectory)\wasm_simd\${{ parameters.BuildConfig }}\ort-wasm*.* $(Build.ArtifactStagingDirectory)
displayName: 'Create Artifacts'
- task: PublishPipelineArtifact@0
displayName: 'Publish Pipeline Artifact'
inputs:
artifactName: '${{ parameters.BuildConfig }}_wasm'
targetPath: '$(Build.ArtifactStagingDirectory)'
- ${{ if eq(parameters.SkipPublish, false) }}:
- script: |
copy $(Build.BinariesDirectory)\wasm\${{ parameters.BuildConfig }}\ort-wasm*.* $(Build.ArtifactStagingDirectory)
copy $(Build.BinariesDirectory)\wasm_threads\${{ parameters.BuildConfig }}\ort-wasm*.* $(Build.ArtifactStagingDirectory)
copy $(Build.BinariesDirectory)\wasm_simd_threads\${{ parameters.BuildConfig }}\ort-wasm*.* $(Build.ArtifactStagingDirectory)
copy $(Build.BinariesDirectory)\wasm_simd\${{ parameters.BuildConfig }}\ort-wasm*.* $(Build.ArtifactStagingDirectory)
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:

View file

@ -29,3 +29,4 @@ stages:
NpmPackagingMode: ${{ variables.NpmPackagingMode }}
IsReleasePipeline: false
PoolName: 'Win-CPU-2019'
BuildStaticLib: true