Skip to content

Expo DevClient build check [Nightly] #535

Expo DevClient build check [Nightly]

Expo DevClient build check [Nightly] #535

name: Expo DevClient build check [Nightly]
env:
YARN_ENABLE_HARDENED_MODE: 0
SCRIPT_PATH: ${{github.workspace}}/.github/workflows/helper/configureDevClient.js
on:
pull_request:
paths:
- .github/workflows/expo-devclient-build-check-nightly.yml
schedule:
- cron: '0 0 * * *' # after publishing new nightly version on NPM
workflow_call:
workflow_dispatch:
jobs:
expo-devclient-build-check-nightly:
if: github.repository == 'software-mansion/react-native-reanimated'
runs-on: ${{ matrix.platform == 'iOS' && 'macos-15' || 'ubuntu-latest' }}
strategy:
matrix:
platform: ['iOS', 'Android']
fail-fast: false
env:
APP_NAME: ExpoApp
EXPO_TAG: latest
concurrency:
group: ${{ matrix.platform }}-expo-dev-client-${{ github.ref }}
cancel-in-progress: true
steps:
- name: Check out reanimated repository
uses: actions/checkout@v4
- name: Setup Java 17
if: ${{ matrix.platform == 'Android' }}
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: 17
- uses: ruby/setup-ruby@v1
if: ${{ matrix.platform == 'iOS' }}
with:
ruby-version: '3.3' # Not needed with a `.ruby-version` or `.tool-versions`
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- name: Create Expo app
run: npx create-expo-app@latest ${{ env.APP_NAME }} --template blank-typescript
- name: Load Expo tag
working-directory: ${{ env.APP_NAME }}
run: |
if npm view expo dist-tags | grep -q 'next:' ; then
echo "EXPO_TAG=next" >> $GITHUB_ENV
fi
- name: Install Expo
working-directory: ${{ env.APP_NAME }}
run: npm install expo@${{ env.EXPO_TAG }}
- name: Setup configuration
working-directory: ${{ env.APP_NAME }}
run: node ${{ env.SCRIPT_PATH }} setBundleIdentifier
- name: Install Reanimated
working-directory: ${{ env.APP_NAME }}
run: npm install react-native-reanimated@nightly
- name: Install Worklets
working-directory: ${{ env.APP_NAME }}
run: npm install react-native-worklets@nightly
- name: Select Xcode (iOS)
if: ${{ matrix.platform == 'iOS' }}
run: sudo xcode-select --switch /Applications/Xcode_16.4.app
- name: Expo prebuild
working-directory: ${{ env.APP_NAME }}
run: npx expo prebuild
- name: Build app (iOS)
working-directory: ${{ env.APP_NAME }}/ios
if: ${{ matrix.platform == 'iOS' }}
run: xcodebuild -workspace ${{env.APP_NAME}}.xcworkspace -configuration Debug -scheme ${{env.APP_NAME}} -destination "generic/platform=iOS Simulator" -quiet
- name: Build app (Android)
working-directory: ${{ env.APP_NAME }}/android
if: ${{ matrix.platform == 'Android' }}
run: ./gradlew assembleDebug --console=plain