android-device-test #1611
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: android-device-test | |
on: | |
workflow_run: | |
workflows: [android-ci] | |
types: | |
- completed | |
jobs: | |
create-check: | |
strategy: | |
max-parallel: 2 | |
matrix: | |
test: [ | |
{ | |
artifactName: android-render-tests, | |
testFile: RenderTests.apk, | |
appFile: RenderTestsApp.apk, | |
name: "Android Render Tests", | |
# Google Pixel 7 Pro | |
devicePool: "arn:aws:devicefarm:us-west-2:373521797162:devicepool:20687d72-0e46-403e-8f03-0941850665bc/9692fe7f-86a9-4ecc-908f-175600968564" | |
}, | |
{ | |
artifactName: benchmarkAPKs, | |
testFile: "MapboxGLAndroidSDKTestApp-drawable-release-androidTest.apk", | |
appFile: "MapboxGLAndroidSDKTestApp-drawable-release.apk", | |
name: "Android Benchmark", | |
testFilter: "org.maplibre.android.benchmark.Benchmark", | |
# echo '{"styleNames": [...], "styleURLs": [...], "resultsAPI: "..." }' > benchmark-input.json | |
# zip benchmark-input.zip benchmark-input.json | |
# aws devicefarm create-upload --project-arn <project_arn> --type EXTERNAL_DATA --name benchmark-input.zip | |
# curl -T benchmark-input.zip <upload_url> | |
# aws devicefarm get-upload <arn> | |
externalData: "arn:aws:devicefarm:us-west-2:373521797162:upload:20687d72-0e46-403e-8f03-0941850665bc/c27174c2-63f4-4cdb-9af9-68957d75ebed", | |
# top devices, query with `aws list-device-pools --arn <project_arn>` | |
devicePool: "arn:aws:devicefarm:us-west-2::devicepool:082d10e5-d7d7-48a5-ba5c-b33d66efa1f5", | |
# benchmark-android.yaml | |
# see https://github.com/maplibre/ci-runners/tree/main/aws-device-farm/custom-test-envs | |
testSpecArn: "arn:aws:devicefarm:us-west-2:373521797162:upload:20687d72-0e46-403e-8f03-0941850665bc/14862afb-cf88-44aa-9f1e-5131cbb22f01" | |
} | |
] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Generate token | |
id: generate_token | |
uses: tibdex/github-app-token@v2 | |
with: | |
app_id: ${{ secrets.MAPLIBRE_NATIVE_BOT_APP_ID }} | |
private_key: ${{ secrets.MAPLIBRE_NATIVE_BOT_PRIVATE_KEY }} | |
- run: echo "${{ toJSON(github.event.workflow_run) }}" | |
- uses: ./.github/actions/get-pr-number | |
id: get-pr-number | |
- name: Check if comment on PR contains '!benchmark android' | |
uses: peter-evans/find-comment@v2 | |
id: fc | |
with: | |
issue-number: ${{ steps.get-pr-number.outputs.pr-number }} | |
body-regex: '^!benchmark.*android.*$' | |
- uses: LouisBrunner/[email protected] | |
if: matrix.test.name != 'Android Benchmark' || steps.fc.outputs.comment-id | |
id: create_check | |
with: | |
token: ${{ steps.generate_token.outputs.token }} | |
details_url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
status: queued | |
name: ${{ matrix.test.name }} | |
sha: ${{ github.event.workflow_run.head_sha }} | |
- uses: ./.github/actions/download-workflow-run-artifact | |
if: matrix.test.name != 'Android Benchmark' || steps.fc.outputs.comment-id | |
with: | |
artifact-name: ${{ matrix.test.artifactName }} | |
- name: Check if test files exist (otherwise the parent workflow was skipped) | |
if: matrix.test.name != 'Android Benchmark' || steps.fc.outputs.comment-id | |
id: check_files | |
uses: andstor/[email protected] | |
with: | |
files: "${{ matrix.test.testFile }}, ${{ matrix.test.appFile }}" | |
- uses: ./.github/actions/aws-device-farm-run | |
if: steps.check_files.outputs.files_exists == 'true' && (matrix.test.name != 'Android Benchmark' || steps.fc.outputs.comment-id) | |
with: | |
name: ${{ matrix.test.name }} | |
appType: ANDROID_APP | |
appFile: ${{ matrix.test.appFile }} | |
testFile: ${{ matrix.test.testFile }} | |
testPackageType: INSTRUMENTATION_TEST_PACKAGE | |
testType: INSTRUMENTATION | |
testFilter: ${{ matrix.test.testFilter }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_ROLE_TO_ASSUME: ${{ vars.AWS_ROLE_TO_ASSUME }} | |
AWS_DEVICE_FARM_PROJECT_ARN: ${{ vars.AWS_DEVICE_FARM_PROJECT_ARN }} | |
AWS_DEVICE_FARM_DEVICE_POOL_ARN: ${{ matrix.test.devicePool }} | |
externalData: ${{ matrix.test.externalData }} | |
testSpecArn: ${{ matrix.test.testSpecArn }} | |
- uses: LouisBrunner/[email protected] | |
if: always() && (matrix.test.name != 'Android Benchmark' || steps.fc.outputs.comment-id) | |
with: | |
token: ${{ steps.generate_token.outputs.token }} | |
check_id: ${{ steps.create_check.outputs.check_id }} | |
conclusion: ${{ job.status }} | |
sha: ${{ github.event.workflow_run.sha }} |