Skip to content

Commit 3fddabc

Browse files
committed
wip: ci/cd
1 parent 45739aa commit 3fddabc

File tree

2 files changed

+97
-1
lines changed

2 files changed

+97
-1
lines changed

.github/workflows/ci.yml

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
name: React Native CI
2+
3+
on:
4+
pull_request:
5+
branches: main
6+
push:
7+
branches: main
8+
schedule:
9+
- cron: '0 0 * * *' # Runs at 00:00 UTC every day
10+
11+
jobs:
12+
ios-build:
13+
name: iOS Build
14+
runs-on: macos-latest
15+
defaults:
16+
run:
17+
working-directory: example
18+
19+
steps:
20+
- name: Checkout repository
21+
uses: actions/checkout@v3
22+
23+
- name: Setup Node.js
24+
uses: actions/setup-node@v3
25+
with:
26+
node-version: '22'
27+
28+
- name: Install dependencies
29+
run: |
30+
npm install --frozen-lockfile
31+
cd ios && pod install
32+
33+
- name: Bundle iOS
34+
run: npm run build:ios
35+
36+
- name: Build iOS
37+
run: |
38+
npx react-native run-ios --mode Release --no-packager --list-devices
39+
40+
- name: Run iOS tests
41+
run: npm run test:e2e:ios
42+
43+
android-build:
44+
name: Android Build
45+
runs-on: ubuntu-latest
46+
defaults:
47+
run:
48+
working-directory: example
49+
50+
steps:
51+
- name: Checkout repository
52+
uses: actions/checkout@v3
53+
54+
- name: Setup Node.js
55+
uses: actions/setup-node@v3
56+
with:
57+
node-version: '18'
58+
cache: 'npm'
59+
cache-dependency-path: example/package-lock.json
60+
61+
- name: Setup Java
62+
uses: actions/setup-java@v3
63+
with:
64+
distribution: 'zulu'
65+
java-version: '17'
66+
67+
- name: Install dependencies
68+
run: npm install --frozen-lockfile
69+
70+
- name: Bundle Android
71+
run: npm run build:android
72+
73+
- name: Create AVD and generate snapshot for caching
74+
uses: reactivecircus/android-emulator-runner@v2
75+
with:
76+
target: aosp_atd
77+
api-level: 30
78+
arch: x86
79+
ram-size: 4096M
80+
channel: canary
81+
profile: pixel
82+
avd-name: Pixel_3a_API_30_AOSP
83+
force-avd-creation: false
84+
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
85+
emulator-boot-timeout: 12000
86+
disable-animations: false
87+
script: |
88+
cd example
89+
npm run android:release
90+
npm run test:e2e:android

example/package.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,16 @@
44
"private": true,
55
"scripts": {
66
"android": "react-native run-android",
7+
"android:release": "react-native run-android --mode Release --no-packager --list-devices",
78
"ios": "react-native run-ios",
89
"lint": "eslint .",
910
"start": "react-native start",
10-
"test": "jest"
11+
"test": "jest",
12+
"mkdist": "node -e \"require('node:fs').mkdirSync('dist', { recursive: true, mode: 0o755 })\"",
13+
"build:android": "npm run mkdist && react-native bundle --entry-file index.js --platform android --dev true --bundle-output dist/main.android.jsbundle --assets-dest dist/res",
14+
"build:ios": "npm run mkdist && react-native bundle --entry-file index.js --platform ios --dev false --bundle-output dist/main.ios.jsbundle --assets-dest dist",
15+
"test:e2e:android": "",
16+
"test:e2e:ios": ""
1117
},
1218
"dependencies": {
1319
"react": "19.0.0",

0 commit comments

Comments
 (0)