From 064d1910e1ebd28006f71386480c4e997620a462 Mon Sep 17 00:00:00 2001 From: Kilian Finger Date: Sun, 8 Dec 2024 09:33:26 +0100 Subject: [PATCH] ci: adopt matrxi for tests --- .github/workflows/review-android.yml | 38 +++++++++++++------------- .github/workflows/review-ios.yml | 40 ++++++++++++++-------------- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/.github/workflows/review-android.yml b/.github/workflows/review-android.yml index a71e18b9..86834406 100644 --- a/.github/workflows/review-android.yml +++ b/.github/workflows/review-android.yml @@ -5,15 +5,15 @@ on: # Review calls this Workflow jobs: + strategy: + matrix: + new-arch: [ false, true ] build-android: - name: Build Android + name: Build ${{ matrix.new-arch && 'new' || 'old'}} Arch runs-on: ubuntu-latest defaults: run: working-directory: ./packages/react-native-app - strategy: - matrix: - new-arch: [false, true] steps: - name: Checkout uses: actions/checkout@v4 @@ -28,7 +28,7 @@ jobs: java-version: 21 cache: gradle - - name: Cache Android Build + - name: Cache Build uses: actions/cache@v4 id: android-build-cache with: @@ -37,23 +37,23 @@ jobs: ./packages/react-native-app/android/.gradle ./packages/react-native-app/android/app/build ./packages/react-native-app/android/build - key: ${{ runner.os }}-android-build-${{ matrix.new-arch && 'new-arch' || 'old-arch' }}-${{ github.workflow }}-${{ github.sha }} + key: ${{ runner.os }}-android-build-${{ matrix.new-arch && 'new' || 'old' }}-arch-${{ github.workflow }}-${{ github.sha }} restore-keys: | - ${{ runner.os }}-android-build-${{ matrix.new-arch && 'new-arch' || 'old-arch' }}-${{ github.workflow }}-${{ github.sha }} - ${{ runner.os }}-android-build-${{ matrix.new-arch && 'new-arch' || 'old-arch' }}-${{ github.workflow }}- + ${{ runner.os }}-android-build-${{ matrix.new-arch && 'new' || 'old' }}-arch-${{ github.workflow }}-${{ github.sha }} + ${{ runner.os }}-android-build-${{ matrix.new-arch && 'new' || 'old' }}-arch-${{ github.workflow }}- - - name: Build Android + - name: Build if: steps.android-build-cache.outputs.cache-hit != 'true' run: yarn react-native build-android --mode release --tasks assembleRelease --extra-params "-PnewArchEnabled=${{ matrix.new-arch }}" - - name: Upload Android App + - name: Upload App uses: actions/upload-artifact@v4 with: - name: android-app + name: android-app-${{ matrix.new-arch && 'new' || 'old' }}-arch path: ./packages/react-native-app/android/app/build/outputs/apk/release/app-release.apk test-android: - name: Test Android + name: Test needs: [build-android] runs-on: ubuntu-latest defaults: @@ -72,7 +72,7 @@ jobs: - name: Gradle cache uses: gradle/actions/setup-gradle@v3 - - name: Cache Android Virtual Device + - name: Cache Virtual Device uses: actions/cache@v4 id: android-virtual-device-cache with: @@ -81,7 +81,7 @@ jobs: ~/.android/adb* key: android-virtual-device-api-level-33 - - name: Create Android Virtual Device + - name: Create Virtual Device if: steps.android-virtual-device-cache.outputs.cache-hit != 'true' uses: reactivecircus/android-emulator-runner@v2 with: @@ -97,13 +97,13 @@ jobs: curl -Ls "https://get.maestro.mobile.dev" | bash echo "$HOME/.maestro/bin" >> "$GITHUB_PATH" - - name: Download Android App + - name: Download App uses: actions/download-artifact@v4 with: - name: android-app + name: android-app-${{ matrix.new-arch && 'new' || 'old' }}-arch path: ./packages/react-native-app/android/ - - name: Test Android + - name: Run Tests uses: reactivecircus/android-emulator-runner@v2 with: api-level: 33 @@ -115,11 +115,11 @@ jobs: adb install ./android/app-release.apk maestro test ./e2e/show-map.yml --format junit - - name: Upload Android Report + - name: Upload Report if: always() uses: actions/upload-artifact@v4 with: - name: Android Report + name: Android Report ${{ matrix.new-arch && 'new' || 'old' }} Arch path: | ./packages/react-native-app/report.xml ~/.maestro/tests/**/* diff --git a/.github/workflows/review-ios.yml b/.github/workflows/review-ios.yml index bd145f93..0c4056e6 100644 --- a/.github/workflows/review-ios.yml +++ b/.github/workflows/review-ios.yml @@ -5,15 +5,15 @@ on: # Review calls this Workflow jobs: + strategy: + matrix: + new-arch: [ false, true ] build-ios: - name: Build iOS + name: Build ${{ matrix.new-arch && 'new' || 'old'}} Arch runs-on: macos-latest defaults: run: working-directory: ./packages/react-native-app - strategy: - matrix: - new-arch: [false, true] steps: - name: Checkout uses: actions/checkout@v4 @@ -26,34 +26,34 @@ jobs: id: cocoapods-cache with: path: ./packages/react-native-app/ios/Pods - key: ${{ runner.os }}-cocoapods-${{ matrix.new-arch && 'new-arch' || 'old-arch' }}-${{ hashFiles('./packages/react-native-app/ios/Podfile.lock') }} + key: ${{ runner.os }}-cocoapods-${{ matrix.new-arch && 'new' || 'old' }}-arch-${{ hashFiles('./packages/react-native-app/ios/Podfile.lock') }} restore-keys: | - ${{ runner.os }}-cocoapods-${{ matrix.new-arch && 'new-arch' || 'old-arch' }}-${{ hashFiles('./packages/react-native-app/ios/Podfile.lock') }} - ${{ runner.os }}-cocoapods-${{ matrix.new-arch && 'new-arch' || 'old-arch' }}- + ${{ runner.os }}-cocoapods-${{ matrix.new-arch && 'new' || 'old' }}-arch-${{ hashFiles('./packages/react-native-app/ios/Podfile.lock') }} + ${{ runner.os }}-cocoapods-${{ matrix.new-arch && 'new' || 'old' }}-arch- - name: Install Cocoapods if: steps.cocoapods-cache.outputs.cache-hit != 'true' run: RCT_NEW_ARCH_ENABLED=${{ matrix.new-arch && '1' || '0' }} yarn pod:install - - name: Cache iOS Build + - name: Cache Build uses: actions/cache@v4 id: ios-build-cache with: path: ./packages/react-native-app/ios/build - key: ${{ runner.os }}-ios-build-${{ matrix.new-arch && 'new-arch' || 'old-arch' }}-${{ github.workflow }}-${{ github.sha }} + key: ${{ runner.os }}-ios-build-${{ matrix.new-arch && 'new' || 'old' }}-arch-${{ github.workflow }}-${{ github.sha }} restore-keys: | - ${{ runner.os }}-ios-build-${{ matrix.new-arch && 'new-arch' || 'old-arch' }}-${{ github.workflow }}-${{ github.sha }} - ${{ runner.os }}-ios-build-${{ matrix.new-arch && 'new-arch' || 'old-arch' }}-${{ github.workflow }}- + ${{ runner.os }}-ios-build-${{ matrix.new-arch && 'new' || 'old' }}-arch-${{ github.workflow }}-${{ github.sha }} + ${{ runner.os }}-ios-build-${{ matrix.new-arch && 'new' || 'old' }}-arch-${{ github.workflow }}- - - name: Build iOS + - name: Build if: steps.ios-build-cache.outputs.cache-hit != 'true' # Like `react-native build-ios --mode Release` but adapted for simulators run: xcodebuild -workspace ios/MapLibreReactNativeExample.xcworkspace -scheme MapLibreReactNativeExample -configuration Release -sdk iphonesimulator -derivedDataPath ios/build - - name: Upload iOS App + - name: Upload App uses: actions/upload-artifact@v4 with: - name: ios-app + name: ios-app-${{ matrix.new-arch && 'new' || 'old' }}-arch # `.app` is a directory, so we have to archive one level above path: | ./packages/react-native-app/ios/build/Build/Products/Release-iphonesimulator @@ -61,7 +61,7 @@ jobs: ./packages/react-native-app/ios/build/Build/Products/Release-iphonesimulator/MapLibreReactNativeExample.app test-ios: - name: Test iOS + name: Test needs: [build-ios] runs-on: macos-latest defaults: @@ -76,23 +76,23 @@ jobs: curl -Ls "https://get.maestro.mobile.dev" | bash echo "$HOME/.maestro/bin" >> "$GITHUB_PATH" - - name: Download iOS App + - name: Download App uses: actions/download-artifact@v4 with: - name: ios-app + name: ios-app-${{ matrix.new-arch && 'new' || 'old' }}-arch path: ./packages/react-native-app/ios - - name: Test iOS + - name: Run Tests run: | xcrun simctl boot "iPhone 15 Pro" xcrun simctl install booted ./ios/MapLibreReactNativeExample.app maestro test ./e2e/show-map.yml --format junit - - name: Upload iOS Report + - name: Upload Report if: always() uses: actions/upload-artifact@v4 with: - name: iOS Report + name: iOS Report ${{ matrix.new-arch && 'new' || 'old' }} Arch path: | ./packages/react-native-app/report.xml ~/.maestro/tests/**/*