diff --git a/.github/workflows/check-expo-dev-client-action.yml b/.github/workflows/check-expo-dev-client-action.yml new file mode 100644 index 00000000000..e7970190105 --- /dev/null +++ b/.github/workflows/check-expo-dev-client-action.yml @@ -0,0 +1,89 @@ +name: Check Expo dev-client nightly build +on: + workflow_call: + inputs: + expo-dev-client-dist-tag: + required: true + type: string + +env: + SCRIPT_PATH: reanimated_repo/.github/workflows/helper/configureDevClient.js + +jobs: + build_ios: + if: github.repository == 'software-mansion/react-native-reanimated' + runs-on: macos-12 + strategy: + matrix: + react-native-architecture: ['Paper', 'Fabric'] + fail-fast: false + concurrency: + group: ios-expo-dev-client-${{ matrix.react-native-architecture }}-${{inputs.expo-dev-client-dist-tag}}${{ github.ref }} + cancel-in-progress: true + steps: + - name: Check out reanimated repository + uses: actions/checkout@v4 + with: + path: 'reanimated_repo' + - name: Create Expo app + run: npx create-expo-app app + - name: Install expo-dev-client + working-directory: app + run: npm install expo-dev-client@${{ inputs.expo-dev-client-dist-tag }} + - name: Setup configuration + run: node ${{ env.SCRIPT_PATH }} setBundleIdentifier + - name: Expo prebuild + working-directory: app + run: npx expo prebuild + - name: Install Reanimated + working-directory: app + run: npm install react-native-reanimated@nightly + - name: Set Fabric + if: ${{ matrix.react-native-architecture == 'Fabric' }} + run: node ${{ env.SCRIPT_PATH }} setupFabricIOS + - name: Install Pods + working-directory: app/ios + run: pod install + - name: Build app + working-directory: app + run: npx react-native run-ios --terminal terminal + + build_android: + if: github.repository == 'software-mansion/react-native-reanimated' + runs-on: ubuntu-latest + strategy: + matrix: + react-native-architecture: ['Paper', 'Fabric'] + fail-fast: false + concurrency: + group: android-expo-dev-client-${{ matrix.react-native-architecture }}-${{inputs.expo-dev-client-dist-tag}}-${{ github.ref }} + cancel-in-progress: true + steps: + - name: Check out reanimated repository + uses: actions/checkout@v4 + with: + path: 'reanimated_repo' + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '17' + - name: Create Expo app + run: npx create-expo-app app + - name: Install expo-dev-client + working-directory: app + run: npm install expo-dev-client@${{ inputs.expo-dev-client-dist-tag }} + - name: Setup configuration + run: node ${{ env.SCRIPT_PATH }} setBundleIdentifier + - name: Expo prebuild + working-directory: app + run: npx expo prebuild + - name: Install Reanimated + working-directory: app + run: npm install react-native-reanimated@nightly + - name: Set Fabric + if: ${{ matrix.react-native-architecture == 'Fabric' }} + run: node ${{ env.SCRIPT_PATH }} setupFabricAndroid + - name: Build app + working-directory: app/android + run: ./gradlew assembleDebug --console=plain diff --git a/.github/workflows/check-expo-dev-client-nightly.yml b/.github/workflows/check-expo-dev-client-nightly.yml index fb204b9ec79..a7e0ee5f6d6 100644 --- a/.github/workflows/check-expo-dev-client-nightly.yml +++ b/.github/workflows/check-expo-dev-client-nightly.yml @@ -2,84 +2,14 @@ name: Check Expo dev-client nightly build on: pull_request: paths: + - .github/workflows/check-expo-dev-client-action.yml - .github/workflows/check-expo-dev-client-nightly.yml + - .github/workflows/check-expo-dev-client.yml schedule: - cron: '0 0 * * *' # after publishing new nightly version on NPM workflow_dispatch: -env: - SCRIPT_PATH: reanimated_repo/.github/workflows/helper/configureDevClient.js - jobs: - build_ios: - if: github.repository == 'software-mansion/react-native-reanimated' - runs-on: macos-12 - strategy: - matrix: - react-native-architecture: ['Paper', 'Fabric'] - fail-fast: false - concurrency: - group: ios-expo-dev-client-${{ matrix.react-native-architecture }}-${{ github.ref }} - cancel-in-progress: true - steps: - - name: Check out reanimated repository - uses: actions/checkout@v4 - with: - path: 'reanimated_repo' - - name: Create Expo app - run: npx create-expo-app app - - name: Install expo-dev-client - working-directory: app - run: npm install expo-dev-client@next - - name: Setup configuration - run: node ${{ env.SCRIPT_PATH }} setBundleIdentifier - - name: Expo prebuild - working-directory: app - run: npx expo prebuild - - name: Install Reanimated - working-directory: app - run: npm install react-native-reanimated@nightly - - name: Set Fabric - if: ${{ matrix.react-native-architecture == 'Fabric' }} - run: node ${{ env.SCRIPT_PATH }} setupFabricIOS - - name: Install Pods - working-directory: app/ios - run: pod install - - name: Build app - working-directory: app - run: yarn react-native run-ios --simulator='iPhone 14' - - build_android: + call-check-expo-dev-client-workflow: if: github.repository == 'software-mansion/react-native-reanimated' - runs-on: ubuntu-latest - strategy: - matrix: - react-native-architecture: ['Paper', 'Fabric'] - fail-fast: false - concurrency: - group: android-expo-dev-client-${{ matrix.react-native-architecture }}-${{ github.ref }} - cancel-in-progress: true - steps: - - name: Check out reanimated repository - uses: actions/checkout@v4 - with: - path: 'reanimated_repo' - - name: Create Expo app - run: npx create-expo-app app - - name: Install expo-dev-client - working-directory: app - run: npm install expo-dev-client@next - - name: Setup configuration - run: node ${{ env.SCRIPT_PATH }} setBundleIdentifier - - name: Expo prebuild - working-directory: app - run: npx expo prebuild - - name: Install Reanimated - working-directory: app - run: npm install react-native-reanimated@nightly - - name: Set Fabric - if: ${{ matrix.react-native-architecture == 'Fabric' }} - run: node ${{ env.SCRIPT_PATH }} setupFabricAndroid - - name: Build app - working-directory: app/android - run: ./gradlew assembleDebug --console=plain + uses: ./.github/workflows/check-expo-dev-client.yml diff --git a/.github/workflows/check-expo-dev-client.yml b/.github/workflows/check-expo-dev-client.yml new file mode 100644 index 00000000000..65d0b295b57 --- /dev/null +++ b/.github/workflows/check-expo-dev-client.yml @@ -0,0 +1,32 @@ +name: Check Expo dev-client nightly build +on: + workflow_call: + workflow_dispatch: + +jobs: + check-expo-dev-client-next-availability: + runs-on: ubuntu-latest + steps: + - name: Check Expo dev-client next availability + id: check-next-availability + run: | + if npm dist-tag ls expo-dev-client | grep next + then + echo "::set-output name=status::true" + else + echo "::set-output name=status::false" + fi + outputs: + hasNext: ${{ steps.check-next-availability.outputs.status }} + + check-expo-dev-client-next: + needs: check-expo-dev-client-next-availability + if: needs.check-expo-dev-client-next-availability.outputs.hasNext == 'true' + uses: ./.github/workflows/check-expo-dev-client-action.yml + with: + expo-dev-client-dist-tag: next + + check-expo-dev-client-latest: + uses: ./.github/workflows/check-expo-dev-client-action.yml + with: + expo-dev-client-dist-tag: latest