microsoft/onnxruntime-extensions

Public

mirrored fromhttps://github.com/microsoft/onnxruntime-extensionsAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
223400118478b0d6512ae8491292723cf61c8fe8

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

.pipelines/ios_packaging.yml

173lines · modecode

1# packaging pipeline for iOS CocoaPods package
2
3parameters:
4- name: IsReleaseBuild
5 displayName: "Is this a release build?"
6 type: boolean
7 default: false
8
9jobs:
10- job: IosPackaging
11 displayName: "iOS Packaging"
12
13 pool:
14 vmImage: "macOS-13"
15
16 timeoutInMinutes: 120
17
18 steps:
19 - template: templates/use-xcode-version.yml
20
21 - task: UsePythonVersion@0
22 inputs:
23 disableDownloadFromRegistry: true
24 versionSpec: "3.9"
25 addToPath: true
26 architecture: "x64"
27
28 # iOS xcframework build doesn't work with CMake 3.25.1, pin to 3.25.0
29 - script: |
30 python -m pip install cmake==3.25.0
31 displayName: "Install CMake 3.25.0"
32
33 - template: templates/install-appcenter.yml
34
35 - template: templates/set-package-version-variable-step.yml
36 parameters:
37 IsReleaseBuild: ${{ parameters.IsReleaseBuild }}
38 PackageVersionVariableName: ORT_EXTENSIONS_POD_VERSION
39
40 - script: |
41 python ./tools/gen_selectedops.py ./tools/ios/package_ops.config
42 displayName: "Generate selected ops CMake file"
43
44 - script: |
45 python ./tools/ios/build_xcframework.py \
46 --output_dir $(Build.BinariesDirectory)/xcframework_out \
47 --config Release \
48 -- \
49 --one_cmake_extra_define OCOS_ENABLE_SELECTED_OPLIST=ON
50 displayName: "Build xcframework"
51
52 - script: |
53 cat $(Build.BinariesDirectory)/xcframework_out/xcframework_info.json
54 displayName: 'List xcframework_info.json file contents'
55
56 - script: |
57 python ./tools/ios/assemble_pod_package.py \
58 --staging-dir $(Build.BinariesDirectory)/pod_staging \
59 --xcframework-output-dir $(Build.BinariesDirectory)/xcframework_out \
60 --pod-version ${ORT_EXTENSIONS_POD_VERSION}
61 displayName: "Assemble pod"
62
63 - script: |
64 pod lib lint
65 displayName: "Lint pod"
66 workingDirectory: $(Build.BinariesDirectory)/pod_staging
67
68 - script: |
69 ORT_EXTENSIONS_LOCAL_POD_PATH=$(Build.BinariesDirectory)/pod_staging \
70 pod install
71 displayName: "Install pods for OrtExtensionsUsage"
72 workingDirectory: $(Build.SourcesDirectory)/test/ios/OrtExtensionsUsage
73
74 - script: |
75 set -e
76
77 SIMULATOR_DEVICE_INFO=$(python ./tools/ios/get_simulator_device_info.py)
78
79 echo "Simulator device info:"
80 echo "${SIMULATOR_DEVICE_INFO}"
81
82 SIMULATOR_DEVICE_ID=$(jq --raw-output '.device_udid' <<< "${SIMULATOR_DEVICE_INFO}")
83
84 # Do not output ##vso[] commands with `set -x` or they may be parsed again and include a trailing quote.
85 set +x
86 echo "##vso[task.setvariable variable=ORT_EXTENSIONS_SIMULATOR_DEVICE_ID]${SIMULATOR_DEVICE_ID}"
87 displayName: "Get simulator device info"
88
89 - script: |
90 xcrun simctl bootstatus ${ORT_EXTENSIONS_SIMULATOR_DEVICE_ID} -b
91 displayName: "Wait for simulator device to boot"
92
93 - script: |
94 xcrun xcodebuild \
95 -sdk iphonesimulator \
96 -configuration Debug \
97 -parallel-testing-enabled NO \
98 -workspace $(Build.SourcesDirectory)/test/ios/OrtExtensionsUsage/OrtExtensionsUsage.xcworkspace \
99 -scheme OrtExtensionsUsage \
100 -destination "platform=iOS Simulator,id=${ORT_EXTENSIONS_SIMULATOR_DEVICE_ID}" \
101 test CODE_SIGNING_ALLOWED=NO
102 displayName: "Build and test OrtExtensionsUsage"
103
104 - script: |
105 xcrun xcodebuild \
106 -configuration Debug \
107 -parallel-testing-enabled NO \
108 -workspace $(Build.SourcesDirectory)/test/ios/OrtExtensionsUsage/OrtExtensionsUsage.xcworkspace \
109 -scheme OrtExtensionsMacOSUsage \
110 -destination "platform=macos" \
111 test CODE_SIGNING_ALLOWED=NO
112 displayName: "Build and test OrtExtensionsUsage for MacOS"
113
114 - task: InstallAppleCertificate@2
115 inputs:
116 certSecureFile: '$(ios_signing_certificate_name)'
117 certPwd: '$(ios_signing_certificate_password)'
118 keychain: 'temp'
119 name: installSigningCertificate
120 displayName: "Install ORT Mobile Test Signing Certificate"
121
122 - task: InstallAppleProvisioningProfile@1
123 inputs:
124 provProfileSecureFile: '$(ios_provision_profile_name)'
125 removeProfile: true
126 name: installProvisioningProfile
127 displayName: "Install ORT Mobile Test Provisioning Profile"
128
129 - script: |
130 xcrun xcodebuild \
131 -sdk iphoneos \
132 -configuration Debug \
133 -workspace $(Build.SourcesDirectory)/test/ios/OrtExtensionsUsage/OrtExtensionsUsage.xcworkspace \
134 -scheme OrtExtensionsUsage \
135 -derivedDataPath $(Build.BinariesDirectory)/appcenter_test_derived_data \
136 build-for-testing \
137 CODE_SIGN_STYLE=Manual \
138 "CODE_SIGN_IDENTITY=$(installSigningCertificate.signingIdentity)" \
139 PROVISIONING_PROFILE= \
140 "PROVISIONING_PROFILE_SPECIFIER=$(installProvisioningProfile.provisioningProfileName)"
141 displayName: "Build appcenter test"
142
143 - script: |
144 appcenter test run xcuitest \
145 --app "AI-Frameworks/ORT-Ext-Mobile-iOS-Testapp" \
146 --devices "AI-Frameworks/apple-test-device-set" \
147 --test-series "master" \
148 --locale "en_US" \
149 --build-dir $(Build.BinariesDirectory)/appcenter_test_derived_data/Build/Products/Debug-iphoneos \
150 --token $(app_center_api_token)
151 displayName: "Run appcenter test"
152
153 - script: |
154 set -e -x
155
156 POD_STAGING_DIR="$(Build.BinariesDirectory)/pod_staging"
157 ARTIFACTS_STAGING_DIR="$(Build.ArtifactStagingDirectory)"
158 POD_NAME="onnxruntime-extensions-c"
159 POD_ARCHIVE_BASENAME="pod-archive-${POD_NAME}-${ORT_EXTENSIONS_POD_VERSION}.zip"
160 PODSPEC_BASENAME="${POD_NAME}.podspec"
161
162 pushd ${POD_STAGING_DIR}
163
164 # assemble the files in the artifacts staging directory
165 zip -r ${ARTIFACTS_STAGING_DIR}/${POD_ARCHIVE_BASENAME} * --exclude ${PODSPEC_BASENAME}
166 cp ${PODSPEC_BASENAME} ${ARTIFACTS_STAGING_DIR}/${PODSPEC_BASENAME}
167
168 popd
169 displayName: "Assemble artifacts"
170
171 - publish: "$(Build.ArtifactStagingDirectory)"
172 artifact: ios_packaging_artifacts
173 displayName: "Publish artifacts"
174