Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 39 additions & 14 deletions .github/workflows/build-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,52 +7,77 @@ on:
paths:
- '.github/workflows/build-android.yml'
- 'example/android/**'
- 'example/package.json'
- '**/nitrogen/generated/shared/**'
- '**/nitrogen/generated/android/**'
- 'android/**'
- '**/bun.lock'
- '**/react-native.config.js'
- '**/nitro.json'
- 'packages/react-native-nitro-image/android/**'
- 'packages/react-native-nitro-web-image/android/**'
- 'packages/react-native-nitro-image/package.json'
- 'packages/react-native-nitro-web-image/package.json'
- 'packages/react-native-nitro-image/react-native.config.js'
- 'packages/react-native-nitro-web-image/react-native.config.js'
- 'packages/react-native-nitro-image/nitro.json'
- 'packages/react-native-nitro-web-image/nitro.json'
- 'package.json'
- 'bun.lock'
pull_request:
paths:
- '.github/workflows/build-android.yml'
- 'example/android/**'
- 'example/package.json'
- '**/nitrogen/generated/shared/**'
- '**/nitrogen/generated/android/**'
- 'android/**'
- '**/bun.lock'
- '**/react-native.config.js'
- '**/nitro.json'
- 'packages/react-native-nitro-image/android/**'
- 'packages/react-native-nitro-web-image/android/**'
- 'packages/react-native-nitro-image/package.json'
- 'packages/react-native-nitro-web-image/package.json'
- 'packages/react-native-nitro-image/react-native.config.js'
- 'packages/react-native-nitro-web-image/react-native.config.js'
- 'packages/react-native-nitro-image/nitro.json'
- 'packages/react-native-nitro-web-image/nitro.json'
- 'package.json'
- 'bun.lock'

env:
# Build a single ABI in CI to keep native compile time down.
TARGET_ANDROID_ARCH: x86_64

jobs:
build:
name: Build Android Example App
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: oven-sh/setup-bun@v2

- name: Install npm dependencies (bun)
run: bun install

- name: Setup JDK 17
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: 17
java-package: jdk

- name: Restore Gradle cache
uses: actions/cache@v4
- name: Restore Gradle/CMake cache
uses: actions/cache@v5
with:
path: |
~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
~/.gradle/wrapper
example/android/.gradle
example/android/app/.cxx
packages/react-native-nitro-image/android/.cxx
packages/react-native-nitro-web-image/android/.cxx
key: ${{ runner.os }}-gradle-${{ env.TARGET_ANDROID_ARCH }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', '**/CMakeLists.txt', '**/*.cmake') }}
restore-keys: |
${{ runner.os }}-gradle-${{ env.TARGET_ANDROID_ARCH }}-
${{ runner.os }}-gradle-

- name: Run Gradle Build for example/android/
working-directory: example/android
run: ./gradlew assembleDebug --no-daemon --build-cache
run: ./gradlew :app:assembleDebug --no-daemon --build-cache -PreactNativeArchitectures=${{ env.TARGET_ANDROID_ARCH }}

# Gradle cache doesn't like daemons
- name: Stop Gradle Daemon
Expand Down
96 changes: 70 additions & 26 deletions .github/workflows/build-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,48 @@ on:
paths:
- '.github/workflows/build-ios.yml'
- 'example/ios/**'
- 'example/Gemfile'
- 'example/Gemfile.lock'
- 'example/package.json'
- '**/nitrogen/generated/shared/**'
- '**/nitrogen/generated/ios/**'
- 'cpp/**'
- 'ios/**'
- '**/Podfile.lock'
- '**/*.podspec'
- '**/react-native.config.js'
- '**/nitro.json'
- 'packages/react-native-nitro-image/ios/**'
- 'packages/react-native-nitro-web-image/ios/**'
- 'example/ios/Podfile'
- 'example/ios/Podfile.lock'
- 'packages/react-native-nitro-image/NitroImage.podspec'
- 'packages/react-native-nitro-web-image/NitroWebImage.podspec'
- 'packages/react-native-nitro-image/package.json'
- 'packages/react-native-nitro-web-image/package.json'
- 'packages/react-native-nitro-image/react-native.config.js'
- 'packages/react-native-nitro-web-image/react-native.config.js'
- 'packages/react-native-nitro-image/nitro.json'
- 'packages/react-native-nitro-web-image/nitro.json'
- 'package.json'
- 'bun.lock'
pull_request:
paths:
- '.github/workflows/build-ios.yml'
- 'example/ios/**'
- 'example/Gemfile'
- 'example/Gemfile.lock'
- 'example/package.json'
- '**/nitrogen/generated/shared/**'
- '**/nitrogen/generated/ios/**'
- 'cpp/**'
- 'ios/**'
- '**/Podfile.lock'
- '**/*.podspec'
- '**/react-native.config.js'
- '**/nitro.json'
- 'packages/react-native-nitro-image/ios/**'
- 'packages/react-native-nitro-web-image/ios/**'
- 'example/ios/Podfile'
- 'example/ios/Podfile.lock'
- 'packages/react-native-nitro-image/NitroImage.podspec'
- 'packages/react-native-nitro-web-image/NitroWebImage.podspec'
- 'packages/react-native-nitro-image/package.json'
- 'packages/react-native-nitro-web-image/package.json'
- 'packages/react-native-nitro-image/react-native.config.js'
- 'packages/react-native-nitro-web-image/react-native.config.js'
- 'packages/react-native-nitro-image/nitro.json'
- 'packages/react-native-nitro-web-image/nitro.json'
- 'package.json'
- 'bun.lock'

env:
USE_CCACHE: 1
Expand All @@ -36,14 +58,24 @@ jobs:
name: Build iOS Example App
runs-on: macOS-15
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: oven-sh/setup-bun@v2

- name: Install npm dependencies (bun)
run: bun install

- name: Restore ccache
- name: Install Ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
max-size: 1.5G
key: ${{ runner.os }}-ccache-example-ios
create-symlink: true
- name: Setup ccache behavior
run: |
echo "CCACHE_SLOPPINESS=clang_index_store,file_stat_matches,include_file_ctime,include_file_mtime,ivfsoverlay,pch_defines,modules,system_headers,time_macros" >> $GITHUB_ENV
echo "CCACHE_FILECLONE=true" >> $GITHUB_ENV
echo "CCACHE_DEPEND=true" >> $GITHUB_ENV
echo "CCACHE_INODECACHE=true" >> $GITHUB_ENV

- name: Setup Ruby (bundle)
uses: ruby/setup-ruby@v1
Expand All @@ -56,25 +88,37 @@ jobs:
run: sudo xcode-select -s "/Applications/Xcode_16.4.app/Contents/Developer"

- name: Restore Pods cache
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: example/ios/Pods
key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock', '**/Gemfile.lock') }}
key: ${{ runner.os }}-pods-${{ hashFiles('example/ios/Podfile.lock', 'example/Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-pods-
- name: Install Pods
working-directory: example
run: bun pods

- name: Restore DerivedData cache
uses: actions/cache@v5
with:
path: example/ios/build
key: ${{ runner.os }}-dd-${{ hashFiles('example/ios/Podfile.lock', 'example/Gemfile.lock', 'example/package.json', 'package.json', 'bun.lock') }}-xcode16.4
restore-keys: |
${{ runner.os }}-dd-

- name: Build App
working-directory: example/ios
run: "set -o pipefail && xcodebuild \
CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ \
-derivedDataPath build -UseModernBuildSystem=YES \
-workspace NitroImageExample.xcworkspace \
-scheme NitroImageExample \
-sdk iphonesimulator \
-configuration Debug \
-destination 'platform=iOS Simulator,name=iPhone 16' \
build \
CODE_SIGNING_ALLOWED=NO"
run: |
set -o pipefail
xcodebuild \
CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ \
-derivedDataPath build -UseModernBuildSystem=YES \
-workspace NitroImageExample.xcworkspace \
-scheme NitroImageExample \
-sdk iphonesimulator \
-configuration Debug \
-destination 'platform=iOS Simulator,name=iPhone 16' \
-showBuildTimingSummary \
ONLY_ACTIVE_ARCH=YES \
build \
CODE_SIGNING_ALLOWED=NO
Loading