onnxruntime/tools/ci_build/github/azure-pipelines/mac-ios-packaging-pipeline.yml
Edward Chen 5326397a6a
[iOS] Facilitate usage of pods with custom builds (#9216)
Refactor iOS framework build/pod package creation into a separate script that can be used with custom builds.
Add documentation.
2021-09-30 08:44:00 -07:00

99 lines
3.4 KiB
YAML

parameters:
- name: IsReleaseBuild
displayName: Is this a release build? Set this parameter to true if you are doing an Onnx Runtime release.
type: boolean
default: false
- name: ShouldUploadArchives
displayName: Should the package archives be uploaded? The archives will always be uploaded for a release build.
type: boolean
default: false
name: "$(Date:yyyyMMdd)$(Rev:rrr)" # build number format
jobs:
- job: IosPackaging
displayName: "iOS Packaging"
pool:
vmImage: "macOS-10.15"
timeoutInMinutes: 90
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: "3.9"
addToPath: true
architecture: "x64"
- script: |
pip install -r tools/ci_build/github/apple/ios_packaging.requirements.txt
displayName: "Install Python requirements"
- bash: |
BASE_VERSION=$(cat VERSION_NUMBER)
IS_RELEASE_BUILD=$(echo "${{ parameters.IsReleaseBuild }}" | tr "[:upper:]" "[:lower:]")
SHOULD_UPLOAD_ARCHIVES=$(echo "${{ parameters.ShouldUploadArchives }}" | tr "[:upper:]" "[:lower:]")
if [[ "${IS_RELEASE_BUILD}" == "true" ]]; then
VERSION=${BASE_VERSION}
# always upload archives for a release build
SHOULD_UPLOAD_ARCHIVES="true"
else
VERSION="${BASE_VERSION}-dev+$(Build.BuildNumber)"
fi
set_var() {
local VAR_NAME=${1:?}
local VAR_VALUE=${2:?}
echo "##vso[task.setvariable variable=${VAR_NAME}]${VAR_VALUE}"
echo "${VAR_NAME}: ${VAR_VALUE}"
}
set_var "ORT_POD_VERSION" "${VERSION}"
set_var "ORT_SHOULD_UPLOAD_ARCHIVES" "${SHOULD_UPLOAD_ARCHIVES}"
displayName: "Set variables"
- script: |
/bin/bash $(Build.SourcesDirectory)/tools/ci_build/github/apple/build_host_protoc.sh \
$(Build.SourcesDirectory) \
$(Build.BinariesDirectory)/protobuf \
$(Build.BinariesDirectory)/protobuf_install
displayName: "Build Host Protoc"
- script: |
python tools/ci_build/github/apple/build_and_assemble_ios_pods.py \
--build-dir "$(Build.BinariesDirectory)/ios_framework" \
--staging-dir "$(Build.BinariesDirectory)/staging" \
--pod-version "${ORT_POD_VERSION}" \
--test \
--build-settings-file tools/ci_build/github/apple/default_mobile_ios_framework_build_settings.json \
--include-ops-by-config tools/ci_build/github/android/mobile_package.required_operators.config \
-b="--path_to_protoc_exe" -b "$(Build.BinariesDirectory)/protobuf_install/bin/protoc"
displayName: "Build iOS framework and assemble pod package files"
- bash: |
set -e
gem install jazzy
jazzy --config objectivec/docs/jazzy_config.yaml \
--output "$(Build.BinariesDirectory)/staging/objc_api_docs" \
--module-version ${ORT_POD_VERSION}
displayName: "Generate Objective-C API docs"
- task: AzureCLI@2
inputs:
azureSubscription: 'AIInfraBuildOnnxRuntimeOSS'
scriptType: 'bash'
scriptLocation: 'scriptPath'
scriptPath: 'tools/ci_build/github/apple/assemble_ios_packaging_artifacts.sh'
arguments: >-
"$(Build.BinariesDirectory)/staging"
"$(Build.ArtifactStagingDirectory)"
"$(ORT_POD_VERSION)"
"$(ORT_SHOULD_UPLOAD_ARCHIVES)"
displayName: "Assemble artifacts"
- publish: "$(Build.ArtifactStagingDirectory)"
artifact: ios_packaging_artifacts
displayName: "Publish artifacts"