-
Notifications
You must be signed in to change notification settings - Fork 1
181 lines (147 loc) · 5.22 KB
/
Copy pathci.yml
File metadata and controls
181 lines (147 loc) · 5.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
name: CI
on:
pull_request:
push:
branches: [develop]
# Toolchain drift (`xcode-version: latest-stable`) can fail a run that a
# later Xcode builds cleanly, and GitHub refuses to retry runs older than a
# month — so allow a manual re-run without a no-op commit.
workflow_dispatch:
jobs:
typecheck:
name: Typecheck (lib + example)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install root deps
run: npm ci
- name: Typecheck library
run: npx tsc --noEmit
- name: Install example deps
run: cd example/expo-app && npm ci
- name: Typecheck example
run: cd example/expo-app && npx tsc --noEmit
build-ios:
name: Build (iOS, Expo CNG)
runs-on: macos-15
needs: typecheck
steps:
- uses: actions/checkout@v4
- name: Select latest Xcode
# Expo SDK 55's modules-core uses Swift 6.1 features (e.g. new
# @MainActor forms). The default Xcode on GitHub runners (16.4 /
# Swift 6.0) errors with "unknown attribute 'MainActor'" — pin
# to the newest Xcode the runner image ships.
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
- name: Install cocoapods + cocoapods-spm
run: |
gem install cocoapods
gem install cocoapods-spm
- name: Install root deps
run: npm ci
- name: Install example deps
run: cd example/expo-app && npm ci
- name: Expo prebuild (CNG — generates ios/ via our config plugin)
run: cd example/expo-app && npx expo prebuild --no-install --platform ios
- name: Pod install (Expo wrapper)
run: cd example/expo-app && npx pod-install
- name: xcodebuild
# Scheme name is derived from app.json `name` ("SourceEditor
# Example"), camelCased by Expo's prebuild → "SourceEditorExample".
run: |
cd example/expo-app/ios
set -o pipefail
xcodebuild \
-workspace SourceEditorExample.xcworkspace \
-scheme SourceEditorExample \
-sdk iphonesimulator \
-configuration Debug \
-destination 'generic/platform=iOS Simulator' \
CODE_SIGNING_ALLOWED=NO \
build
build-android:
name: Build (Android, Expo CNG)
runs-on: ubuntu-latest
needs: typecheck
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
# Sora-Editor's `language-textmate` AAR + the gradle plugin chain
# require JDK 17.
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- uses: android-actions/setup-android@v3
with:
packages: 'platform-tools platforms;android-35 build-tools;35.0.0'
- name: Install root deps
run: npm ci
- name: Install example deps
run: cd example/expo-app && npm ci
- name: Expo prebuild (CNG — generates android/ via our config plugin)
# Same plugin as iOS injects coreLibraryDesugaring on Android
# (Sora's TextMate AAR declares the requirement at metadata level).
run: cd example/expo-app && npx expo prebuild --no-install --platform android
- name: Gradle assembleDebug
run: |
cd example/expo-app/android
./gradlew :app:assembleDebug --no-daemon --console=plain
build-macos:
name: Build (macOS, bare RN-macos)
# macos-15 caps at Xcode 26.3, whose toolchain cannot resolve the Swift
# back-deployment shims (`libswiftCompatibility56`) that the vendored SPM
# deps force-load — the same commit links clean under Xcode 26.6 locally.
runs-on: macos-26
needs: typecheck
steps:
- uses: actions/checkout@v4
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
- name: Install cocoapods
# macOS path uses RN's first-party `spm_dependency` helper from
# react_native_pods.rb — no third-party cocoapods-spm gem needed
# (see example/macos-app/macos/Podfile).
run: gem install cocoapods
- name: Install root deps
run: npm ci
- name: Install example deps
run: cd example/macos-app && npm install --legacy-peer-deps
- name: Pod install
run: cd example/macos-app/macos && pod install
- name: xcodebuild
run: |
cd example/macos-app/macos
set -o pipefail
xcodebuild \
-workspace MacosApp.xcworkspace \
-scheme MacosApp-macOS \
-configuration Debug \
-destination 'platform=macOS' \
CODE_SIGNING_ALLOWED=NO \
MACOSX_DEPLOYMENT_TARGET=14.0 \
build