Skip to content

Commit 43dc563

Browse files
committed
Split CI job and run test app based on labels
1 parent 247573b commit 43dc563

File tree

1 file changed

+48
-37
lines changed

1 file changed

+48
-37
lines changed

.github/workflows/check.yml

Lines changed: 48 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -25,34 +25,38 @@ jobs:
2525
node-version: lts/jod
2626
- run: npm ci
2727
- run: npm run lint
28-
test:
28+
unit-tests:
2929
strategy:
3030
fail-fast: false
3131
matrix:
3232
runner:
3333
- ubuntu-latest
3434
- windows-latest
3535
- macos-latest
36-
variant:
37-
- unit-tests
38-
- android-tests
39-
- ios-tests
40-
exclude:
41-
# iOS tests are only supported on macOS runners
42-
- runner: ubuntu-latest
43-
variant: ios-tests
44-
- runner: windows-latest
45-
variant: ios-tests
46-
# The reactivecircus/android-emulator-runner action does not support Windows runners
47-
# See https://github.com/marketplace/actions/android-emulator-runner#github-action---android-emulator-runner
48-
- runner: windows-latest
49-
variant: android-tests
50-
# MacOS is slow and expensive at running Android emulators
51-
- runner: macos-latest
52-
variant: android-tests
53-
54-
name: Test (${{ matrix.variant }} on ${{ matrix.runner }})
5536
runs-on: ${{ matrix.runner }}
37+
name: Unit tests (${{ matrix.runner }})
38+
steps:
39+
- uses: actions/checkout@v4
40+
- uses: actions/setup-node@v4
41+
with:
42+
node-version: lts/jod
43+
- name: Set up JDK 17
44+
uses: actions/setup-java@v3
45+
with:
46+
java-version: "17"
47+
distribution: "temurin"
48+
- name: Setup Android SDK
49+
uses: android-actions/setup-android@v3
50+
with:
51+
packages: tools platform-tools ndk;${{ env.NDK_VERSION }}
52+
- run: rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi i686-linux-android aarch64-apple-ios-sim
53+
- run: npm ci
54+
- run: npm run bootstrap
55+
- run: npm test
56+
test-ios:
57+
if: github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'test-ios')
58+
name: Test app (iOS)
59+
runs-on: macos-latest
5660
steps:
5761
- uses: actions/checkout@v4
5862
- uses: actions/setup-node@v4
@@ -70,28 +74,39 @@ jobs:
7074
- run: rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi i686-linux-android aarch64-apple-ios-sim
7175
- run: npm ci
7276
- run: npm run bootstrap
73-
# Unit tests
74-
- if: matrix.variant == 'unit-tests'
75-
name: Run tests (Unit)
76-
run: npm test
77-
# Integration tests (iOS)
78-
- if: matrix.variant == 'ios-tests'
79-
run: npm run pod-install
77+
- run: npm run pod-install
8078
working-directory: apps/test-app
81-
- if: matrix.variant == 'ios-tests'
82-
name: Run tests (iOS)
79+
- name: Run tests (iOS)
8380
run: npm run test:ios
8481
working-directory: apps/test-app
85-
# Integration tests (Android)
82+
test-android:
83+
if: github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'test-android')
84+
name: Test app (Android)
85+
runs-on: ubuntu-latest
86+
steps:
87+
- uses: actions/checkout@v4
88+
- uses: actions/setup-node@v4
89+
with:
90+
node-version: lts/jod
91+
- name: Set up JDK 17
92+
uses: actions/setup-java@v3
93+
with:
94+
java-version: "17"
95+
distribution: "temurin"
96+
- name: Setup Android SDK
97+
uses: android-actions/setup-android@v3
98+
with:
99+
packages: tools platform-tools ndk;${{ env.NDK_VERSION }}
100+
- run: rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi i686-linux-android aarch64-apple-ios-sim
101+
- run: npm ci
102+
- run: npm run bootstrap
86103
- name: Clone patched Hermes version
87-
if: matrix.variant == 'android-tests'
88104
shell: bash
89105
run: |
90106
REACT_NATIVE_OVERRIDE_HERMES_DIR=$(npx react-native-node-api vendor-hermes --silent)
91107
echo "REACT_NATIVE_OVERRIDE_HERMES_DIR=$REACT_NATIVE_OVERRIDE_HERMES_DIR" >> $GITHUB_ENV
92108
working-directory: apps/test-app
93109
- name: Setup Android Emulator cache
94-
if: matrix.variant == 'android-tests'
95110
uses: actions/cache@v4
96111
id: avd-cache
97112
with:
@@ -101,29 +116,25 @@ jobs:
101116
key: ${{ runner.os }}-avd-29
102117
# See https://github.com/marketplace/actions/android-emulator-runner#running-hardware-accelerated-emulators-on-linux-runners
103118
- name: Enable KVM group perms
104-
if: matrix.runner == 'ubuntu-latest' && matrix.variant == 'android-tests'
105119
run: |
106120
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
107121
sudo udevadm control --reload-rules
108122
sudo udevadm trigger --name-match=kvm
109123
- name: Build weak-node-api for all architectures
110-
if: matrix.variant == 'android-tests'
111124
run: npm run build-weak-node-api -- --android
112125
working-directory: packages/host
113126
- name: Build ferric-example for all architectures
114-
if: matrix.variant == 'android-tests'
115127
run: npm run build -- --android
116128
working-directory: packages/ferric-example
117129
- name: Run tests (Android)
118-
if: matrix.variant == 'android-tests'
119130
timeout-minutes: 75
120131
uses: reactivecircus/android-emulator-runner@v2
121132
with:
122133
api-level: 29
123134
force-avd-creation: false
124135
emulator-options: -no-snapshot-save -no-metrics -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
125136
disable-animations: true
126-
arch: ${{ runner.os == 'macOS' && 'arm64-v8a' || 'x86' }}
137+
arch: x86
127138
ndk: ${{ env.NDK_VERSION }}
128139
cmake: 3.22.1
129140
working-directory: apps/test-app

0 commit comments

Comments
 (0)