mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-06-02 23:39:58 +00:00
### Description Use a common set of prebuilt manylinux base images to build the packages, to avoid building the manylinux part again and again. The base images can be used in GenAI and other projects too. This PR also updates the GCC version for inference python CUDA11/CUDA12 builds from 8 to 11. Later on I will update all other CUDA pipelines to use GCC 11, to avoid the issue described in https://github.com/onnx/onnx/issues/6047 and https://github.com/microsoft/onnxruntime-genai/issues/257 . ### Motivation and Context To extract the common part as a reusable build infra among different ONNX Runtime projects.
113 lines
4.5 KiB
YAML
113 lines
4.5 KiB
YAML
# This file contains the ADO job that build libonnxruntime.so on Linux
|
|
parameters:
|
|
- name: AdditionalBuildFlags
|
|
displayName: Additional build flags for build.py
|
|
type: string
|
|
default: ''
|
|
|
|
- name: BaseImage
|
|
type: string
|
|
|
|
- name: OnnxruntimeArch
|
|
type: string
|
|
|
|
- name: OnnxruntimeNodejsBindingArch
|
|
type: string
|
|
values:
|
|
- arm64
|
|
- x64
|
|
|
|
- name: PoolName
|
|
type: string
|
|
default: 'onnxruntime-Ubuntu2204-AMD-CPU'
|
|
|
|
- name: ArtifactNamePrefix
|
|
type: string
|
|
default: "onnxruntime"
|
|
|
|
- name: PackageJava
|
|
type: boolean
|
|
default: true
|
|
|
|
- name: PackageNodejs
|
|
type: boolean
|
|
default: true
|
|
|
|
jobs:
|
|
- job: Linux_C_API_Packaging_CPU_${{parameters.OnnxruntimeArch}}
|
|
|
|
workspace:
|
|
clean: all
|
|
timeoutInMinutes: 210
|
|
pool: ${{parameters.PoolName}}
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
submodules: none
|
|
- template: set-version-number-variables-step.yml
|
|
- ${{ if eq(parameters.OnnxruntimeArch, 'x64') }}:
|
|
- template: get-docker-image-steps.yml
|
|
parameters:
|
|
Dockerfile: tools/ci_build/github/linux/docker/inference/x86_64/default/cpu/Dockerfile
|
|
Context: tools/ci_build/github/linux/docker/inference/x86_64/default/cpu
|
|
DockerBuildArgs: "--build-arg BUILD_UID=$( id -u ) --build-arg BASEIMAGE=${{parameters.BaseImage}}"
|
|
Repository: onnxruntimecpubuildcentos8${{parameters.OnnxruntimeArch}}
|
|
|
|
- ${{ if eq(parameters.OnnxruntimeArch, 'aarch64') }}:
|
|
- template: get-docker-image-steps.yml
|
|
parameters:
|
|
Dockerfile: tools/ci_build/github/linux/docker/inference/aarch64/default/cpu/Dockerfile
|
|
Context: tools/ci_build/github/linux/docker/inference/aarch64/default/cpu
|
|
DockerBuildArgs: "--build-arg BUILD_UID=$( id -u ) --build-arg BASEIMAGE=${{parameters.BaseImage}}"
|
|
Repository: onnxruntimecpubuildcentos8${{parameters.OnnxruntimeArch}}
|
|
UpdateDepsTxt: false
|
|
|
|
- task: CmdLine@2
|
|
inputs:
|
|
script: |
|
|
mkdir -p $HOME/.onnx
|
|
docker run --rm --volume /data/onnx:/data/onnx:ro --volume $(Build.SourcesDirectory):/onnxruntime_src --volume $(Build.BinariesDirectory):/build \
|
|
--volume $HOME/.onnx:/home/onnxruntimedev/.onnx -e NIGHTLY_BUILD onnxruntimecpubuildcentos8${{parameters.OnnxruntimeArch}} /bin/bash -c "python3.9 \
|
|
/onnxruntime_src/tools/ci_build/build.py --enable_lto --build_java --build_nodejs --build_dir /build --config Release \
|
|
--skip_submodule_sync --parallel --use_binskim_compliant_compile_flags --build_shared_lib ${{ parameters.AdditionalBuildFlags }} && cd /build/Release && make install DESTDIR=/build/linux-${{parameters.OnnxruntimeArch}}"
|
|
workingDirectory: $(Build.SourcesDirectory)
|
|
displayName: 'Build'
|
|
|
|
- script: |
|
|
set -e -x
|
|
mkdir $(Build.ArtifactStagingDirectory)/testdata
|
|
cp $(Build.BinariesDirectory)/Release/libcustom_op_library.so* $(Build.ArtifactStagingDirectory)/testdata
|
|
ls -al $(Build.ArtifactStagingDirectory)
|
|
displayName: 'Create Artifacts'
|
|
|
|
- ${{ if eq(parameters.PackageJava, 'true') }}:
|
|
- template: java-api-artifacts-package-and-publish-steps-posix.yml
|
|
parameters:
|
|
arch: 'linux-${{parameters.OnnxruntimeArch}}'
|
|
buildConfig: 'Release'
|
|
artifactName: 'onnxruntime-java-linux-${{parameters.OnnxruntimeArch}}'
|
|
version: '$(OnnxRuntimeVersion)'
|
|
libraryName: 'libonnxruntime.so'
|
|
nativeLibraryName: 'libonnxruntime4j_jni.so'
|
|
|
|
- template: c-api-artifacts-package-and-publish-steps-posix.yml
|
|
parameters:
|
|
buildConfig: 'Release'
|
|
artifactName: '${{parameters.ArtifactNamePrefix}}-linux-${{parameters.OnnxruntimeArch}}-$(OnnxRuntimeVersion)'
|
|
artifactNameNoVersionString: '${{parameters.ArtifactNamePrefix}}-linux-${{parameters.OnnxruntimeArch}}'
|
|
libraryName: 'libonnxruntime.so.$(OnnxRuntimeVersion)'
|
|
|
|
- ${{ if eq(parameters.PackageNodejs, 'true') }}:
|
|
- template: nodejs-artifacts-package-and-publish-steps-posix.yml
|
|
parameters:
|
|
arch: '${{parameters.OnnxruntimeNodejsBindingArch}}'
|
|
os: 'linux'
|
|
artifactName: 'drop-onnxruntime-nodejs-linux-${{parameters.OnnxruntimeArch}}'
|
|
|
|
- ${{ if not(eq(parameters.OnnxruntimeNodejsBindingArch, 'arm64')) }}:
|
|
- template: component-governance-component-detection-steps.yml
|
|
parameters:
|
|
condition: 'succeeded'
|
|
- task: mspremier.PostBuildCleanup.PostBuildCleanup-task.PostBuildCleanup@3
|
|
displayName: 'Clean Agent Directories'
|
|
condition: always()
|