Skip to content

Commit 9a6b502

Browse files
committed
chore: refactor CI workflows to include matrix builds for new and old architecture
1 parent 712acd1 commit 9a6b502

2 files changed

Lines changed: 26 additions & 57 deletions

File tree

.detoxrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ module.exports = {
5252
binaryPath:
5353
'example/android/app/build/outputs/apk/release/app-release.apk',
5454
build:
55-
'export RCT_NO_LAUNCH_PACKAGER=true && (cd example/android && ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release)',
55+
'export RCT_NO_LAUNCH_PACKAGER=true && (cd example/android && ./gradlew assembleRelease assembleReleaseAndroidTest)',
5656
},
5757
},
5858
configurations: {

.github/workflows/test.yml

Lines changed: 25 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,17 @@ jobs:
2424
- name: Jest
2525
run: yarn test
2626

27-
e2e_release_ios:
27+
e2e_ios:
2828
runs-on: macos-26
29+
strategy:
30+
fail-fast: false
31+
matrix:
32+
include:
33+
- arch: old
34+
pod-env: 'RCT_NEW_ARCH_ENABLED=0'
35+
- arch: new
36+
pod-env: 'RCT_NEW_ARCH_ENABLED=1'
37+
name: e2e_ios (${{ matrix.arch }} arch)
2938
env:
3039
DEVELOPER_DIR: /Applications/Xcode_26.3.app/Contents/Developer
3140
steps:
@@ -49,43 +58,31 @@ jobs:
4958
- uses: actions/cache@v5
5059
with:
5160
path: example/ios/Pods
52-
key: pods-${{ runner.os }}-${{ hashFiles('example/ios/Podfile.lock') }}
61+
key: pods-${{ matrix.arch }}-${{ runner.os }}-${{ hashFiles('example/ios/Podfile.lock') }}
5362
- name: Pod install
54-
run: cd example && RCT_NEW_ARCH_ENABLED=0 npx pod-install
63+
run: cd example && ${{ matrix.pod-env }} RCT_USE_RN_DEP=1 RCT_USE_PREBUILT_RNCORE=1 npx pod-install
5564
- name: Build app for e2e tests
5665
run: yarn detox:ios:build:release
5766
- name: Run e2e tests
5867
run: yarn detox:ios:test:release
5968
- uses: actions/upload-artifact@v7
6069
if: failure()
6170
with:
62-
name: ios-e2e-artifacts
71+
name: ios-e2e-${{ matrix.arch }}-artifacts
6372
path: artifacts
6473
retention-days: 14
6574

66-
new_arch_ios_build_only:
67-
runs-on: macos-26
68-
env:
69-
DEVELOPER_DIR: /Applications/Xcode_26.3.app/Contents/Developer
70-
steps:
71-
- uses: actions/checkout@v6
72-
- run: corepack enable
73-
- uses: actions/setup-node@v6
74-
with:
75-
node-version: lts/*
76-
cache: yarn
77-
- run: yarn install --immutable
78-
- uses: actions/cache@v5
79-
with:
80-
path: example/ios/Pods
81-
key: pods-newarch-${{ runner.os }}-${{ hashFiles('example/ios/Podfile.lock') }}
82-
- name: Pod install (new arch)
83-
run: cd example && RCT_NEW_ARCH_ENABLED=1 RCT_USE_RN_DEP=1 RCT_USE_PREBUILT_RNCORE=1 npx pod-install
84-
- name: Build app with new arch
85-
run: yarn detox:ios:build:release
86-
87-
e2e_release_android:
75+
e2e_android:
8876
runs-on: ubuntu-latest
77+
strategy:
78+
fail-fast: false
79+
matrix:
80+
include:
81+
- arch: old
82+
new-arch-enabled: false
83+
- arch: new
84+
new-arch-enabled: true
85+
name: e2e_android (${{ matrix.arch }} arch)
8986
env:
9087
GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx4g -XX:+HeapDumpOnOutOfMemoryError" -Dorg.gradle.daemon=false'
9188
steps:
@@ -110,7 +107,7 @@ jobs:
110107
run: yarn bundle:android
111108
- run: yarn generateManifest
112109
- name: Build app for e2e tests
113-
run: ORG_GRADLE_PROJECT_newArchEnabled=false yarn detox:android:build:release
110+
run: ORG_GRADLE_PROJECT_newArchEnabled=${{ matrix.new-arch-enabled }} yarn detox:android:build:release
114111
- name: Enable KVM
115112
run: |
116113
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
@@ -126,34 +123,6 @@ jobs:
126123
- uses: actions/upload-artifact@v7
127124
if: failure()
128125
with:
129-
name: android-e2e-artifacts
126+
name: android-e2e-${{ matrix.arch }}-artifacts
130127
path: artifacts
131128
retention-days: 14
132-
133-
new_arch_android_build_only:
134-
runs-on: ubuntu-latest
135-
env:
136-
GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx4g -XX:+HeapDumpOnOutOfMemoryError" -Dorg.gradle.daemon=false'
137-
steps:
138-
- uses: actions/checkout@v6
139-
- run: corepack enable
140-
- uses: actions/setup-node@v6
141-
with:
142-
node-version: lts/*
143-
cache: yarn
144-
- uses: actions/setup-java@v5
145-
with:
146-
distribution: zulu
147-
java-version: 17
148-
- uses: actions/cache@v5
149-
with:
150-
path: |
151-
~/.gradle/caches
152-
~/.gradle/wrapper
153-
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
154-
- run: yarn install --immutable
155-
- name: Bundle JS
156-
run: yarn bundle:android
157-
- run: yarn generateManifest
158-
- name: Build app with new arch
159-
run: ORG_GRADLE_PROJECT_newArchEnabled=true yarn detox:android:build:release

0 commit comments

Comments
 (0)