Skip to content

Commit 7f6a496

Browse files
committed
Split the android build and test flow
1 parent d9064b8 commit 7f6a496

File tree

2 files changed

+83
-77
lines changed

2 files changed

+83
-77
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
name: Build Android Experimental APK
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- '*'
7+
8+
jobs:
9+
android-maestro-test:
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Checkout Repository
14+
uses: actions/checkout@v4
15+
16+
- name: Set up Node.js
17+
uses: actions/setup-node@v4
18+
with:
19+
node-version: 22
20+
cache: 'yarn'
21+
22+
- name: Cache node_modules
23+
id: cache-node-modules
24+
uses: actions/cache@v4
25+
with:
26+
path: node_modules
27+
key: ${{ runner.os }}-node_modules-${{ hashFiles('**/yarn.lock') }}
28+
restore-keys: |
29+
${{ runner.os }}-node_modules-
30+
31+
- name: Decode Keystore
32+
run: |
33+
echo "${{ secrets.EXPERIMENTAL_KEYSTORE_BASE64 }}" | base64 -d > android/app/release.keystore
34+
35+
- name: Set gradle.properties
36+
run: |
37+
echo " " >> android/gradle.properties
38+
echo "KEYSTORE=release.keystore" >> android/gradle.properties
39+
echo "KEYSTORE_PASSWORD=${{ secrets.EXPERIMENTAL_KEYSTORE_PASSWORD }}" >> android/gradle.properties
40+
echo "KEY_ALIAS=${{ secrets.EXPERIMENTAL_KEY_ALIAS }}" >> android/gradle.properties
41+
echo "KEY_PASSWORD=${{ secrets.EXPERIMENTAL_KEY_PASSWORD }}" >> android/gradle.properties
42+
43+
- name: Install Dependencies
44+
run: yarn install
45+
46+
- name: Enable KVM group permissions
47+
run: |
48+
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
49+
sudo udevadm control --reload-rules
50+
sudo udevadm trigger --name-match=kvm
51+
52+
- name: Set up Gradle
53+
uses: gradle/actions/setup-gradle@v4
54+
55+
- name: Cache Gradle Caches
56+
uses: actions/cache@v4
57+
with:
58+
path: |
59+
~/.gradle/caches
60+
~/.gradle/wrapper
61+
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
62+
restore-keys: |
63+
gradle-${{ runner.os }}-
64+
65+
- name: Build Android Release APK
66+
run: |
67+
cd android
68+
./gradlew assembleExperimentalRelease --no-daemon --build-cache --parallel --max-workers=4
69+
70+
- name: Upload APK
71+
uses: actions/upload-artifact@v4
72+
with:
73+
name: Android Experimental APK
74+
path: android/app/build/outputs/apk/experimental/release/app-experimental-release.apk

.github/workflows/maestro_android.yml

Lines changed: 9 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,94 +1,26 @@
1-
name: Run Maestro Tests on Android
1+
name: Maestro Tests on Android
22

33
on:
4-
pull_request:
5-
branches:
6-
- '*'
4+
workflow_run:
5+
workflows: [Build Android Experimental APK]
6+
types:
7+
- completed
78

89
jobs:
910
android-maestro-test:
1011
runs-on: ubuntu-latest
1112

1213
steps:
13-
- name: Checkout Repository
14-
uses: actions/checkout@v4
15-
16-
- name: Set up Node.js
17-
uses: actions/setup-node@v4
18-
with:
19-
node-version: 22
20-
cache: 'yarn'
21-
22-
- name: Cache node_modules
23-
id: cache-node-modules
24-
uses: actions/cache@v4
14+
- name: Download APK
15+
uses: actions/download-artifact@v3
2516
with:
26-
path: node_modules
27-
key: ${{ runner.os }}-node_modules-${{ hashFiles('**/yarn.lock') }}
28-
restore-keys: |
29-
${{ runner.os }}-node_modules-
17+
name: Android Experimental APK
3018

3119
- name: Install Maestro
3220
run: |
3321
curl -fsSL "https://get.maestro.mobile.dev" | bash
3422
echo "$HOME/.maestro/bin" >> $GITHUB_PATH
3523
36-
- name: Decode Keystore
37-
run: |
38-
echo "${{ secrets.EXPERIMENTAL_KEYSTORE_BASE64 }}" | base64 -d > android/app/release.keystore
39-
40-
- name: Set gradle.properties
41-
run: |
42-
echo " " >> android/gradle.properties
43-
echo "KEYSTORE=release.keystore" >> android/gradle.properties
44-
echo "KEYSTORE_PASSWORD=${{ secrets.EXPERIMENTAL_KEYSTORE_PASSWORD }}" >> android/gradle.properties
45-
echo "KEY_ALIAS=${{ secrets.EXPERIMENTAL_KEY_ALIAS }}" >> android/gradle.properties
46-
echo "KEY_PASSWORD=${{ secrets.EXPERIMENTAL_KEY_PASSWORD }}" >> android/gradle.properties
47-
48-
- name: Install Dependencies
49-
run: yarn install
50-
51-
- name: Enable KVM group permissions
52-
run: |
53-
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
54-
sudo udevadm control --reload-rules
55-
sudo udevadm trigger --name-match=kvm
56-
57-
- name: Set up Gradle
58-
uses: gradle/actions/setup-gradle@v4
59-
60-
- name: Cache Gradle Caches
61-
uses: actions/cache@v4
62-
with:
63-
path: |
64-
~/.gradle/caches
65-
~/.gradle/wrapper
66-
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
67-
restore-keys: |
68-
gradle-${{ runner.os }}-
69-
70-
- name: Build Android Release APK
71-
run: |
72-
cd android
73-
./gradlew assembleExperimentalRelease --no-daemon --build-cache --parallel --max-workers=4
74-
75-
- name: Free Space Before Cleanup
76-
run: |
77-
echo "Free space before cleanup:"
78-
df -h
79-
80-
- name: Maximize build space
81-
uses: AdityaGarg8/remove-unwanted-software@v5
82-
with:
83-
remove-dotnet: 'true'
84-
remove-haskell: 'true'
85-
remove-swapfile: 'true'
86-
87-
- name: Free Space After Cleanup
88-
run: |
89-
echo "Free space:"
90-
df -h
91-
9224
- name: Start Android Emulator and Run Maestro Tests
9325
uses: reactivecircus/android-emulator-runner@v2
9426
with:
@@ -101,7 +33,7 @@ jobs:
10133
script: |
10234
avdmanager list device
10335
mkdir recording
104-
adb install android/app/build/outputs/apk/experimental/release/app-experimental-release.apk
36+
adb install app-experimental-release.apk
10537
maestro test .maestro/login.yml --format junit --output maestro-report.xml
10638
10739
- name: Upload Recordings

0 commit comments

Comments
 (0)