fix #1308
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [master, beta, ci2] | |
| pull_request: | |
| branches: [master, beta] | |
| workflow_dispatch: | |
| jobs: | |
| cancel_previous: | |
| if: ${{ github.event_name != 'push' }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: styfle/[email protected] | |
| with: | |
| workflow_id: ${{ github.event.workflow.id }} | |
| build-and-test: | |
| needs: cancel_previous | |
| runs-on: 'ubuntu-latest' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| # Workaround for corepack enable in node | |
| # Source: (https://github.com/actions/setup-node/issues/899#issuecomment-1828798029) | |
| - name: devbox installer | |
| uses: jetify-com/[email protected] | |
| with: | |
| enable-cache: 'true' | |
| - name: build | |
| run: devbox run build | |
| run-e2e-ios: | |
| runs-on: ['macos-15' ] | |
| env: | |
| YARN_ENABLE_HARDENED_MODE: 0 | |
| XCODE_VERSION: '26.1.1' | |
| strategy: | |
| matrix: | |
| include: | |
| - name: ios-min | |
| ios-device: "iPhone 14" | |
| ios-runtime: "18.5" | |
| - name: ios-latest | |
| ios-device: "iPhone 17" | |
| ios-runtime: "26.1" | |
| steps: | |
| - uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: '26.1.1' | |
| - uses: actions/checkout@v4 | |
| - name: CocoaPods cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/Library/Caches/CocoaPods | |
| key: cocoapods-${{ runner.os }}-${{ env.XCODE_VERSION }}-${{ hashFiles('examples/E2E/ios/Podfile.lock') }} | |
| restore-keys: | | |
| cocoapods-${{ runner.os }}-${{ env.XCODE_VERSION }}- | |
| cocoapods-${{ runner.os }}- | |
| - name: DerivedData cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/Library/Developer/Xcode/DerivedData | |
| key: derived-${{ runner.os }}-${{ env.XCODE_VERSION }}-${{ hashFiles('examples/E2E/ios/Podfile.lock') }} | |
| restore-keys: | | |
| derived-${{ runner.os }}-${{ env.XCODE_VERSION }}- | |
| derived-${{ runner.os }}- | |
| - name: devbox installer | |
| uses: jetify-com/[email protected] | |
| with: | |
| enable-cache: 'true' | |
| # --omit-nix-env is important to use the macos system c toolchain instead of the nix toolchain | |
| - name: iOS setup (simulators, pods) | |
| env: | |
| IOS_DEVICE_NAMES: ${{ matrix.ios-device }} | |
| IOS_RUNTIME: ${{ matrix.ios-runtime }} | |
| run: | | |
| set -euo pipefail | |
| devbox shell --omit-nix-env --command "devbox run setup-ios && yarn install && yarn e2e install && yarn e2e pods" | |
| - name: iOS build | |
| run: | | |
| set -euo pipefail | |
| devbox shell --omit-nix-env --command "yarn build && yarn e2e build:ios" | |
| - name: iOS E2E Tests | |
| env: | |
| DETOX_IOS_DEVICE: ${{ matrix.ios-device }} | |
| run: | | |
| set -euo pipefail | |
| devbox shell --omit-nix-env --command "DETOX_IOS_DEVICE='${{ matrix.ios-device }}' yarn e2e test:ios" | |
| run-e2e-android: | |
| runs-on: 'ubuntu-22.04' | |
| strategy: | |
| matrix: | |
| include: | |
| - name: android-min | |
| avd-name: pixel_API21_x86_64 | |
| start-script: start-android-minsdk | |
| - name: android-latest | |
| avd-name: medium_phone_API33_x86_64 | |
| start-script: start-android-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Yarn cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cache/yarn | |
| .yarn/cache | |
| key: yarn-${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} | |
| restore-keys: | | |
| yarn-${{ runner.os }}- | |
| - name: devbox installer | |
| uses: jetify-com/[email protected] | |
| with: | |
| enable-cache: 'true' | |
| - name: Gradle cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}-${{ hashFiles('**/buildSrc/**/*.kt') }} | |
| - name: AVD cache | |
| uses: actions/cache@v4 | |
| id: avd-cache | |
| with: | |
| path: | | |
| ~/.android/avd/* | |
| ~/.android/adb* | |
| key: avd-${{ matrix.avd-name }} | |
| - name: Android setup (AVD + deps) | |
| env: | |
| DETOX_AVD: ${{ matrix.avd-name }} | |
| EMU_HEADLESS: "1" | |
| AVD_FLAVOR: ${{ startsWith(matrix.avd-name, 'pixel') && 'minsdk' || 'latest' }} | |
| run: | | |
| set -euo pipefail | |
| devbox run ${{ matrix.start-script }} | |
| devbox run setup-android | |
| yarn install | |
| yarn e2e install | |
| - name: Android build | |
| run: | | |
| set -euo pipefail | |
| devbox run setup-android | |
| yarn build | |
| yarn e2e build:android | |
| - name: Android E2E Tests | |
| env: | |
| DETOX_AVD: ${{ matrix.avd-name }} | |
| run: devbox run test-android |