Skip to content

Commit 8ea84c1

Browse files
Optimize Android emulator CI workflow (#351)
1 parent 14c06c6 commit 8ea84c1

File tree

1 file changed

+62
-25
lines changed

1 file changed

+62
-25
lines changed

.github/workflows/node.js.yml

Lines changed: 62 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,11 @@ jobs:
1515
strategy:
1616
matrix:
1717
node-version: [18.x]
18-
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
1918
steps:
2019
- name: Checkout
21-
uses: actions/checkout@v2
20+
uses: actions/checkout@v4
2221
- name: Use Node.js ${{ matrix.node-version }}
23-
uses: actions/setup-node@v2
22+
uses: actions/setup-node@v4
2423
with:
2524
node-version: ${{ matrix.node-version }}
2625
- run: npm install
@@ -31,60 +30,98 @@ jobs:
3130
strategy:
3231
matrix:
3332
node-version: [18.x]
34-
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
33+
api-level: [34]
3534

3635
steps:
3736
- name: Checkout
38-
uses: actions/checkout@v2
37+
uses: actions/checkout@v4
38+
3939
- name: Use Node.js ${{ matrix.node-version }}
40-
uses: actions/setup-node@v2
40+
uses: actions/setup-node@v4
4141
with:
4242
node-version: ${{ matrix.node-version }}
43-
- uses: actions/setup-java@v4
43+
44+
- name: Setup Java
45+
uses: actions/setup-java@v4
4446
with:
45-
distribution: "temurin" # See 'Supported distributions' for available options
47+
distribution: "temurin"
4648
java-version: "17"
47-
- run: npm install
48-
- run: npm install -g react-native-cli
49-
- run: npm i react-native-gradle-plugin
49+
50+
- name: Setup Gradle
51+
uses: gradle/actions/setup-gradle@v4
52+
53+
- name: Install dependencies
54+
run: |
55+
npm install
56+
npm install -g react-native-cli
57+
npm i react-native-gradle-plugin
58+
5059
- name: Test Integration - Install dependencies
5160
working-directory: ./Samples/SimpleMixpanel
5261
run: yarn install
62+
5363
- name: Enable KVM
5464
run: |
5565
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
5666
sudo udevadm control --reload-rules
5767
sudo udevadm trigger --name-match=kvm
58-
- name: Setup Android
59-
uses: reactivecircus/android-emulator-runner@v2.32.0
68+
69+
- name: AVD cache
70+
uses: actions/cache@v4
71+
id: avd-cache
72+
with:
73+
path: |
74+
~/.android/avd/*
75+
~/.android/adb*
76+
key: avd-${{ matrix.api-level }}-google-apis-x86_64-nexus5x
77+
78+
- name: Create AVD and generate snapshot for caching
79+
if: steps.avd-cache.outputs.cache-hit != 'true'
80+
uses: reactivecircus/android-emulator-runner@v2
81+
env:
82+
GRADLE_OPTS: -Xmx4096m -Dorg.gradle.daemon=false
83+
JAVA_OPTS: -Xmx4096m
6084
with:
61-
api-level: 34
85+
api-level: ${{ matrix.api-level }}
6286
target: google_apis
63-
profile: Nexus 5X
6487
arch: x86_64
65-
working-directory: ./Samples/SimpleMixpanel/android
66-
script: ./gradlew
67-
- name: Test Android
68-
uses: reactivecircus/android-emulator-runner@v2.35.0
88+
profile: Nexus 5X
89+
force-avd-creation: false
90+
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
91+
disable-animations: false
92+
working-directory: ./Samples/SimpleMixpanel
93+
script: echo "Generated AVD snapshot for caching."
94+
95+
- name: Run Android Tests
96+
uses: reactivecircus/android-emulator-runner@v2
97+
env:
98+
GRADLE_OPTS: -Xmx4096m -Dorg.gradle.daemon=false
99+
JAVA_OPTS: -Xmx4096m
69100
with:
70-
api-level: 34
101+
api-level: ${{ matrix.api-level }}
71102
target: google_apis
72-
profile: Nexus 5X
73103
arch: x86_64
104+
profile: Nexus 5X
105+
force-avd-creation: false
106+
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
107+
disable-animations: true
108+
emulator-boot-timeout: 900
74109
working-directory: ./Samples/SimpleMixpanel
75-
script: react-native run-android
110+
script: |
111+
echo "org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m -XX:+HeapDumpOnOutOfMemoryError" >> android/gradle.properties
112+
echo "org.gradle.daemon=false" >> android/gradle.properties
113+
npx react-native run-android --no-packager
76114
77115
test_ios:
78116
runs-on: macos-latest
79117
strategy:
80118
matrix:
81119
node-version: [18.x]
82-
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
83120
steps:
84121
- name: Checkout
85-
uses: actions/checkout@v2
122+
uses: actions/checkout@v4
86123
- name: Use Node.js ${{ matrix.node-version }}
87-
uses: actions/setup-node@v2
124+
uses: actions/setup-node@v4
88125
with:
89126
node-version: ${{ matrix.node-version }}
90127
- run: npm install

0 commit comments

Comments
 (0)