onnxruntime/tools/ci_build/github/azure-pipelines/binary-size-checks-pipeline.yml
Jian Chen 792d411135
Update python 3.11 and remove 3.7 for Linux (#15214)
### Description
Update python 3.11 and remove 3.7



### Motivation and Context
Update python 3.11 and remove 3.7

---------

Co-authored-by: Ubuntu <chasun@chasunlinux.lw3b1xzoyrkuzm34swpscft0ff.dx.internal.cloudapp.net>
2023-03-27 14:46:30 -07:00

168 lines
6.6 KiB
YAML

# steps in this build:
# 1a. ORT build
# 1b. ORT build with debug info
parameters:
- name: DoBuildWithDebugInfo
displayName: Create additional build with debug information?
type: boolean
default: false
- name: BuildAllConfigurations
displayName: Build all binary size check configurations instead of just the required ones?
type: boolean
default: false
resources:
repositories:
- repository: manylinux
type: Github
endpoint: Microsoft
name: pypa/manylinux
ref: aead4d751c2101e23336aa73f2380df83e7a13f3
jobs:
- job: BinarySizeChecks
timeoutInMinutes: 60
workspace:
clean: all
pool: onnxruntime-Linux-CPU-2019
strategy:
# Notes:
# - BuildConfigFile path is relative to repository root.
# - BinarySizeThresholdInBytes is optional - if unspecified it is not checked.
matrix:
# required configurations
AndroidMinimalBaseline:
BuildConfigFile: "tools/ci_build/github/linux/ort_minimal/build_check_binsize_config/android_minimal_baseline.config"
BinarySizeThresholdInBytes: 1306224
# additional configurations
${{ if or(eq(parameters.BuildAllConfigurations, true), and(in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}:
AndroidMinimalWithMobilePackageOps:
BuildConfigFile: "tools/ci_build/github/linux/ort_minimal/build_check_binsize_config/android_minimal_with_mobile_package_ops.config"
steps:
- checkout: self
clean: true
submodules: none
- template: templates/get-docker-image-steps.yml
parameters:
Dockerfile: tools/ci_build/github/linux/docker/Dockerfile.manylinux2014_cpu
Context: tools/ci_build/github/linux/docker
DockerBuildArgs: "--build-arg BUILD_UID=$( id -u )"
Repository: onnxruntimecpubuild
- task: PythonScript@0
displayName: 'Set variables from config file "$(BuildConfigFile)"'
inputs:
scriptSource: inline
script: |
import json
config_file_path = "$(BuildConfigFile)"
with open(config_file_path, mode="r") as config_file:
config = json.load(config_file)
def set_var(name, value):
print("Setting variable: {} = '{}'".format(name, value))
print("##vso[task.setvariable variable={}]{}".format(name, value))
set_var("BuildConfigType", config["type"])
set_var("BuildConfigOs", config["os"])
workingDirectory: $(Build.SourcesDirectory)
- task: Bash@3
displayName: 1a. Build onnxruntime
inputs:
targetType: inline
script: |
set -e -x
BINARY_SIZE_THRESHOLD_ARGS=""
if [[ ! -z "$(BinarySizeThresholdInBytes)" ]]; then
echo "Binary size threshold in bytes: $(BinarySizeThresholdInBytes)"
BINARY_SIZE_THRESHOLD_ARGS="--threshold_size_in_bytes $(BinarySizeThresholdInBytes)"
fi
NDK_HOME=$(realpath $ANDROID_NDK_HOME)
docker run --rm \
--volume $(Build.SourcesDirectory):/onnxruntime_src \
--volume $(Build.BinariesDirectory):/build \
--volume $ANDROID_HOME:/android_home \
--volume $NDK_HOME:/ndk_home \
-e ALLOW_RELEASED_ONNX_OPSET_ONLY=1 \
-e NIGHTLY_BUILD \
-e BUILD_BUILDNUMBER \
-e BUILD_SOURCEVERSION=$(Build.SourceVersion) \
-e BUILD_ID=$(Build.BuildId) \
-e BUILD_REASON=$(Build.Reason) \
-e BUILD_BRANCH=$(Build.SourceBranch) \
onnxruntimecpubuild \
/opt/python/cp38-cp38/bin/python3 /onnxruntime_src/tools/ci_build/github/linux/ort_minimal/build_ort_and_check_binary_size.py \
--build_dir /build/1a \
${BINARY_SIZE_THRESHOLD_ARGS} \
"/onnxruntime_src/$(BuildConfigFile)"
workingDirectory: $(Build.SourcesDirectory)
- task: AzureCLI@2
displayName: 1a. Publish binary size data
# only publish size data for CI builds on main
condition: and(succeededOrFailed(), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
inputs:
azureSubscription: AIInfraBuild
scriptLocation: inlineScript
scriptType: bash
inlineScript: |
set -e -x
BINARY_SIZE_DATA_FILE="$(Build.BinariesDirectory)/1a/MinSizeRel/binary_size_data.txt"
if [[ ! -f "${BINARY_SIZE_DATA_FILE}" ]]; then
echo "File not found: ${BINARY_SIZE_DATA_FILE}"
exit 1
fi
/usr/bin/python3 -m pip install -r $(Build.SourcesDirectory)/tools/ci_build/github/windows/post_to_dashboard/requirements.txt && \
/usr/bin/python3 $(Build.SourcesDirectory)/tools/ci_build/github/windows/post_binary_sizes_to_dashboard.py \
--commit_hash=$(Build.SourceVersion) \
--size_data_file="${BINARY_SIZE_DATA_FILE}" \
--build_project=onnxruntime \
--build_id=$(Build.BuildId)
workingDirectory: '$(Build.BinariesDirectory)'
- task: PublishPipelineArtifact@1
displayName: 1a. Publish binary artifact
inputs:
targetPath: $(Build.BinariesDirectory)/1a/MinSizeRel/libonnxruntime.so
artifactName: $(BuildConfigOs)-$(BuildConfigType)-binary
- ${{ if parameters.DoBuildWithDebugInfo }}:
- task: Bash@3
displayName: 1b. Build onnxruntime with debug info
inputs:
targetType: inline
script: |
set -e -x
NDK_HOME=$(realpath $ANDROID_NDK_HOME)
docker run --rm \
--volume $(Build.SourcesDirectory):/onnxruntime_src \
--volume $(Build.BinariesDirectory):/build \
--volume $ANDROID_HOME:/android_home \
--volume $NDK_HOME:/ndk_home \
-e ALLOW_RELEASED_ONNX_OPSET_ONLY=1 \
-e NIGHTLY_BUILD \
-e BUILD_BUILDNUMBER \
-e BUILD_SOURCEVERSION=$(Build.SourceVersion) \
-e BUILD_ID=$(Build.BuildId) \
-e BUILD_REASON=$(Build.Reason) \
-e BUILD_BRANCH=$(Build.SourceBranch) \
onnxruntimecpubuild \
/opt/python/cp38-cp38/bin/python3 /onnxruntime_src/tools/ci_build/github/linux/ort_minimal/build_ort_and_check_binary_size.py \
--build_dir /build/1b \
--with_debug_info \
"/onnxruntime_src/$(BuildConfigFile)"
workingDirectory: $(Build.SourcesDirectory)
- task: PublishPipelineArtifact@1
displayName: 1b. Publish binary artifact with debug info
inputs:
targetPath: $(Build.BinariesDirectory)/1b/MinSizeRel/libonnxruntime.so
artifactName: $(BuildConfigOs)-$(BuildConfigType)-binary-with-debug-info
- template: templates/clean-agent-build-directory-step.yml