Files
AndroidJetpack/jtxBoard/.github/workflows/create-baseline-profiles.yml
T
coco 723ce1af5c a
2026-07-03 15:12:48 +08:00

101 lines
4.0 KiB
YAML

# template: https://levelup.gitconnected.com/baseline-profiles-github-actions-ce8bc6858bb3
# Workflow name
name: generate baseline-profiles
# Workflow title
# run-name: ${{ github.actor }} requested a workflow
# Event trigger so this actions gets executed every time a push is made on the main branch
# Change this event to what suits your project best.
# Read more at https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows
on:
workflow_dispatch
# Environment variables (Optional)
# Small projects might have signingConfigs locally. This could lead to failures on GitHub Actions.
# If that's the case, upload your properties defined locally to GitHub Secrets.
# On your signingConfigs, you can recover GitHub Secrets using: variable = System.getenv("VARIABLE")
# Then uncomment this block properly defining your uploaded variables
# env:
# VARIABLE: ${{ secrets.VARIABLE }}
# Read more at https://docs.github.com/en/actions/security-guides/encrypted-secrets
# Jobs to executed on GitHub machines
jobs:
# Job name
generate-baseline-profiles:
# Operating system where the job gets to be executed
runs-on: ubuntu-latest-4-cores
strategy:
matrix:
api-level: [ 31 ]
# Job steps
steps:
# Checks your code out on the machine
- uses: actions/checkout@v4
# Sets java up
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
# Sets gradle up
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
# Grants execute permission to gradle (safety step)
- name: Grant Permissions to gradlew
run: chmod +x gradlew
# Cleans managed device if previously settle and space currently is not available
- name: Clean Managed Devices
run: ./gradlew cleanManagedDevices --unused-only
- name: Install GMD image for baseline profile generation
run: yes | "$ANDROID_HOME"/cmdline-tools/latest/bin/sdkmanager "system-images;android-33;aosp_atd;x86_64"
- name: Accept Android licenses
run: yes | "$ANDROID_HOME"/cmdline-tools/latest/bin/sdkmanager --licenses || true
- name: Generate profile
run: ./gradlew :benchmark:pixel2Api31BenchmarkAndroidTest
# Generates Baseline Profile
#- name: Generate Baseline Profile
## swiftshader_indirect:
## Required to use software acceleration on machines that can't use hardware acceleration
## enabledRules=BaselineProfile:
## Required to skip macrobenchmark tests.
## Read more at https://developer.android.com/topic/performance/benchmarking/benchmarking-in-ci#real-devices
## Read more at https://developer.android.com/topic/performance/benchmarking/macrobenchmark-overview#configuration-errors
## gradle.workers.max:
## Required to avoid running multiple managed device tests concurrently. Read more at https://issuetracker.google.com/issues/193118030
#run: ./gradlew :benchmark:pixel2Api31BenchmarkAndroidTest -P android.testoptions.manageddevices.emulator.gpu="swiftshader_indirect" -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
# Sets the Baseline Profile on its proper place so it gets correctly bundled into Play Store
- name: Move & Rename Baseline Profiles
run: |
mv -f benchmark/build/outputs/managed_device_android_test_additional_output/pixel2Api31/BaselineProfileGenerator_startup-baseline-prof.txt app/src/main/baseline-prof.txt
# Commits the generated Baseline Profile to your origin/remote
- name: Commit Baseline Profiles
run: |
git config --global user.name 'Baseline Profiles - GitHub Actions'
git config --global user.email 'github@actions'
git add app/src/main/baseline-prof.txt
git commit -m "Generate baseline profiles"
git push