mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-16 21:00:14 +00:00
126 lines
4.2 KiB
YAML
126 lines
4.2 KiB
YAML
parameters:
|
|
- name: artifactName
|
|
displayName: Artifact Name
|
|
type: string
|
|
default: ''
|
|
|
|
- name: job_name_suffix
|
|
displayName: job name
|
|
type: string
|
|
default: ''
|
|
|
|
- name: packageName
|
|
displayName: Package Name
|
|
type: string
|
|
default: 'onnxruntime-android'
|
|
|
|
- name: ReleaseVersionSuffix
|
|
displayName: Release Version Suffix
|
|
type: string
|
|
default: ''
|
|
|
|
- name: QnnSDKVersion
|
|
displayName: QNN SDK Version
|
|
type: string
|
|
default: '2.28.0.241029'
|
|
|
|
jobs:
|
|
- job: Final_AAR_Testing_Android_${{ parameters.job_name_suffix }}
|
|
workspace:
|
|
clean: all
|
|
pool:
|
|
vmImage: 'macOS-13'
|
|
variables:
|
|
- name: runCodesignValidationInjection
|
|
value: false
|
|
timeoutInMinutes: 90
|
|
dependsOn:
|
|
- Android_Java_API_AAR_Packaging_${{ parameters.job_name_suffix }}
|
|
steps:
|
|
- template: set-version-number-variables-step.yml
|
|
|
|
- task: DownloadPipelineArtifact@2
|
|
displayName: 'Download Final Android AAR'
|
|
inputs:
|
|
buildType: 'current'
|
|
artifactName: '${{parameters.artifactName}}'
|
|
targetPath: '$(Build.BinariesDirectory)/final-android-aar'
|
|
|
|
- task: JavaToolInstaller@0
|
|
displayName: Use jdk 17
|
|
inputs:
|
|
versionSpec: '17'
|
|
jdkArchitectureOption: 'x64'
|
|
jdkSourceOption: 'PreInstalled'
|
|
|
|
- template: use-android-ndk.yml
|
|
|
|
- script: |
|
|
set -e -x
|
|
mkdir -p android_test/android/app/libs
|
|
cd android_test/android
|
|
cp -av $(Build.SourcesDirectory)/java/src/test/android/* ./
|
|
cp $(Build.BinariesDirectory)/final-android-aar/${{parameters.packageName}}-$(OnnxRuntimeVersion)${{parameters.ReleaseVersionSuffix}}.aar app/libs/${{parameters.packageName}}.aar
|
|
displayName: Copy Android test files and AAR to android_test directory
|
|
workingDirectory: $(Build.BinariesDirectory)
|
|
|
|
# skip emulator tests for qnn package as there are no arm64-v8a emulators and no qnn libraries for x86
|
|
- ${{ if not(contains(parameters.packageName, 'qnn')) }}:
|
|
- template: use-android-emulator.yml
|
|
parameters:
|
|
create: true
|
|
start: true
|
|
|
|
- script: |
|
|
set -e -x
|
|
cd android_test/android
|
|
$(Build.SourcesDirectory)/java/gradlew --no-daemon clean connectedDebugAndroidTest --stacktrace
|
|
displayName: Run E2E test using Emulator
|
|
workingDirectory: $(Build.BinariesDirectory)
|
|
|
|
- template: use-android-emulator.yml
|
|
parameters:
|
|
stop: true
|
|
|
|
- ${{ else }}:
|
|
- script: |
|
|
# QNN SDK version string, expected format: 2.28.0.241029
|
|
# Extract the first three parts of the version string to get the Maven package version (e.g., 2.28.0)
|
|
QnnMavenPackageVersion=$(echo ${{ parameters.QnnSDKVersion }} | cut -d'.' -f1-3)
|
|
echo "QnnMavenPackageVersion: $QnnMavenPackageVersion"
|
|
echo "##vso[task.setvariable variable=QnnMavenPackageVersion]$QnnMavenPackageVersion"
|
|
displayName: Trim QNN SDK version to major.minor.patch
|
|
|
|
- script: |
|
|
set -e -x
|
|
# build apks for qnn package as they are not built in the emulator test step
|
|
$(Build.SourcesDirectory)/java/gradlew --no-daemon clean assembleDebug assembleAndroidTest -DqnnVersion=$(QnnMavenPackageVersion) --stacktrace
|
|
displayName: Build QNN APK
|
|
workingDirectory: $(Build.BinariesDirectory)/android_test/android
|
|
|
|
# we run e2e tests on one older device (Pixel 3) and one newer device (Galaxy 23)
|
|
- script: |
|
|
set -e -x
|
|
pip install requests
|
|
|
|
python $(Build.SourcesDirectory)/tools/python/upload_and_run_browserstack_tests.py \
|
|
--test_platform espresso \
|
|
--app_path "debug/app-debug.apk" \
|
|
--test_path "androidTest/debug/app-debug-androidTest.apk" \
|
|
--devices "Samsung Galaxy S23-13.0" "Google Pixel 3-9.0" \
|
|
--build_tag "${{ parameters.packageName }}"
|
|
|
|
displayName: Run E2E tests using Browserstack
|
|
workingDirectory: $(Build.BinariesDirectory)/android_test/android/app/build/outputs/apk
|
|
timeoutInMinutes: 15
|
|
env:
|
|
BROWSERSTACK_ID: $(browserstack_username)
|
|
BROWSERSTACK_TOKEN: $(browserstack_access_key)
|
|
|
|
- template: component-governance-component-detection-steps.yml
|
|
parameters :
|
|
condition : 'succeeded'
|
|
|
|
- task: mspremier.PostBuildCleanup.PostBuildCleanup-task.PostBuildCleanup@3
|
|
displayName: 'Clean Agent Directories'
|
|
condition: always()
|