Skip to content

build: lib/ pipeline via react-native-builder-bob (closes #47) #70

build: lib/ pipeline via react-native-builder-bob (closes #47)

build: lib/ pipeline via react-native-builder-bob (closes #47) #70

Workflow file for this run

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)
runs-on: macos-15
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 \
build