Upload new external data package for every benchmark run (#2100)
This commit is contained in:
16
.github/workflows/android-device-test.yml
vendored
16
.github/workflows/android-device-test.yml
vendored
@@ -26,12 +26,6 @@ jobs:
|
||||
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
|
||||
@@ -83,6 +77,14 @@ jobs:
|
||||
with:
|
||||
files: "${{ matrix.test.testFile }}, ${{ matrix.test.appFile }}"
|
||||
|
||||
- name: Upload external data for benchmark
|
||||
if: matrix.test.name == 'Android Benchmark'
|
||||
run: |
|
||||
export RESULTS_API=${{ secrets.MLN_RESULTS_API }}
|
||||
export AWS_DEVICE_FARM_PROJECT_ARN=${{ vars.AWS_DEVICE_FARM_PROJECT_ARN }}
|
||||
upload_arn="$(.github/workflows/android-device-test/upload-external-data.sh)"
|
||||
echo external_data_arn="$upload_arn" >> "$GITHUB_ENV"
|
||||
|
||||
- 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:
|
||||
@@ -98,7 +100,7 @@ jobs:
|
||||
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 }}
|
||||
externalData: ${{ env.external_data_arn }}
|
||||
testSpecArn: ${{ matrix.test.testSpecArn }}
|
||||
|
||||
- uses: LouisBrunner/checks-action@v2.0.0
|
||||
|
||||
43
.github/workflows/android-device-test/upload-external-data.sh
vendored
Executable file
43
.github/workflows/android-device-test/upload-external-data.sh
vendored
Executable file
@@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Check if the required variables are defined
|
||||
if [ -z "$RESULTS_API" ] || [ -z "$AWS_DEVICE_FARM_PROJECT_ARN" ]; then
|
||||
echo "Error: Missing required variables."
|
||||
usage
|
||||
fi
|
||||
|
||||
cd "$(mktemp -d)"
|
||||
|
||||
cat << EOF > benchmark-input.json
|
||||
{
|
||||
"styleNames": ["Facebook Light", "MapTiler Basic", "Americana"],
|
||||
"styleURLs": [
|
||||
"https://external.xx.fbcdn.net/maps/vt/style/canterbury_1_0/?locale=en_US",
|
||||
"https://api.maptiler.com/maps/basic-v2/style.json?key=get_your_own_OpIi9ZULNHzrESv6T2vL",
|
||||
"https://zelonewolf.github.io/openstreetmap-americana/style.json"
|
||||
],
|
||||
"resultsAPI": "$RESULTS_API"
|
||||
}
|
||||
EOF
|
||||
|
||||
>&2 zip benchmark-input.zip benchmark-input.json
|
||||
upload_json="$(aws devicefarm create-upload --project-arn "$AWS_DEVICE_FARM_PROJECT_ARN" --type EXTERNAL_DATA --name benchmark-input.zip --output json)"
|
||||
upload_url="$(echo "$upload_json" | jq -r '.upload.url')"
|
||||
upload_arn="$(echo "$upload_json" | jq -r '.upload.arn')"
|
||||
curl -T benchmark-input.zip "$upload_url"
|
||||
|
||||
retries=5
|
||||
while true; do
|
||||
upload_status="$(aws devicefarm get-upload --arn "$upload_arn" --output text --query upload.status)"
|
||||
>&2 echo "Upload $upload_status"
|
||||
sleep 1
|
||||
if [[ "$upload_status" == "SUCCEEDED" ]]; then
|
||||
break
|
||||
fi
|
||||
|
||||
if (( --retries == 0 )); then
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
echo "$upload_arn"
|
||||
Reference in New Issue
Block a user