Forráskód Böngészése

refactor(ci): Consolidate quickstart jobs in release.yml (#15269)

Nick Cooke 7 hónapja
szülő
commit
a623ed1a97
1 módosított fájl, 72 hozzáadás és 296 törlés
  1. 72 296
      .github/workflows/release.yml

+ 72 - 296
.github/workflows/release.yml

@@ -1,5 +1,8 @@
 name: release
 
+permissions:
+  contents: read
+
 on:
   pull_request:
     paths:
@@ -150,77 +153,58 @@ jobs:
       if: ${{ always() }}
       run: pod repo remove "${local_repo}"
 
-  abtesting_quickstart:
+  quickstart:
     # Don't run on private repo unless it is a PR.
-    if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
-    needs: buildup_SpecsReleasing_repo
-    env:
-      plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
-      botaccess: ${{ secrets.RELEASE_TESTING_PAT }}
-    runs-on: macos-15
-    steps:
-    - uses: actions/checkout@v4
-    - name: Set Xcode version
-      run: sudo xcode-select -s /Applications/Xcode_16.4.app
-    - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
-    - name: Setup testing repo and quickstart
-      env:
-        LEGACY: true
-      run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh abtesting nightly_release_testing
-    - name: Install Secret GoogleService-Info.plist
-      run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-abtesting.plist.gpg \
-          quickstart-ios/abtesting/GoogleService-Info.plist "$plist_secret"
-    - name: Test swift quickstart
-      env:
-        LEGACY: true
-      run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh ABTesting true)
-    - name: Remove data before upload
-      env:
-        LEGACY: true
-      if: ${{ failure() }}
-      run: scripts/remove_data.sh config
-    - uses: actions/upload-artifact@v4
-      if: ${{ failure() }}
-      with:
-        name: quickstart_artifacts_abtesting
-        path: quickstart-ios/
-
-  auth_quickstart:
-    # Don't run on private repo unless it is a PR.
-    if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
-    needs: buildup_SpecsReleasing_repo
-    env:
-      plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
-      botaccess: ${{ secrets.RELEASE_TESTING_PAT }}
-    runs-on: macos-15
-    steps:
-    - uses: actions/checkout@v4
-    - name: Set Xcode version
-      run: sudo xcode-select -s /Applications/Xcode_16.4.app
-    - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
-    - name: Setup testing repo and quickstart
-      run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh Authentication nightly_release_testing
-    - name: Install Secret GoogleService-Info.plist
-      run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-authentication.plist.gpg \
-          quickstart-ios/authentication/GoogleService-Info.plist "$plist_secret"
-    - name: Test swift quickstart
-      run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Authentication false)
-    - name: Remove data before upload
-      if: ${{ failure() }}
-      run: scripts/remove_data.sh authentication
-    - uses: actions/upload-artifact@v4
-      if: ${{ failure() }}
-      with:
-        name: quickstart_artifacts_auth
-        path: quickstart-ios/
-
-  crashlytics_quickstart:
-    # Don't run on private repo unless it is a PR.
-    if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
+    if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'workflow_dispatch'
     needs: buildup_SpecsReleasing_repo
+    strategy:
+      matrix:
+        include:
+          - product: Performance
+            run_tests: true
+            swift: true
+          - product: Storage
+            run_tests: true
+            swift: true
+            is_legacy: true
+          - product: Config
+            run_tests: true
+            objc: true
+          - product: Messaging
+            run_tests: false
+            objc: true
+            swift: true
+          - product: InAppMessaging
+            run_tests: true
+            objc: true
+            swift: true
+          - product: Firestore
+            run_tests: false
+            objc: true
+          - product: Database
+            run_tests: false
+            objc: true
+            swift: true
+          - product: Authentication
+            run_tests: false
+            objc: true
+          - product: Crashlytics
+            run_tests: true
+            swift: true
+            is_legacy: true
+            setup_command: |
+              mkdir -p quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics
+              # Set the deployed pod location of run and upload-symbols with the development pod version.
+              cp Crashlytics/run quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics/
+              cp Crashlytics/upload-symbols quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics/
+          - product: ABTesting
+            run_tests: true
+            objc: true
+            is_legacy: true
     env:
       plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
       botaccess: ${{ secrets.RELEASE_TESTING_PAT }}
+      LEGACY: ${{ matrix.is_legacy && true || '' }}
     runs-on: macos-15
     steps:
     - uses: actions/checkout@v4
@@ -228,91 +212,37 @@ jobs:
       run: sudo xcode-select -s /Applications/Xcode_16.4.app
     - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
     - name: Setup testing repo and quickstart
-      env:
-        LEGACY: true
-      run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh Crashlytics nightly_release_testing
+      run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh ${{ matrix.product }} nightly_release_testing
     - name: Install Secret GoogleService-Info.plist
-      run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-crashlytics.plist.gpg \
-          quickstart-ios/crashlytics/GoogleService-Info.plist "$plist_secret"
-    - name: Test swift quickstart
-      env:
-        LEGACY: true
       run: |
-        mkdir -p quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics
-        # Set the deployed pod location of run and upload-symbols with the development pod version.
-        cp Crashlytics/run quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics/
-        cp Crashlytics/upload-symbols quickstart-ios/crashlytics/LegacyCrashlyticsQuickstart/Pods/FirebaseCrashlytics/
-        ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Crashlytics true swift)
-    - name: Remove data before upload
-      env:
-        LEGACY: true
-      if: ${{ failure() }}
-      run: scripts/remove_data.sh crashlytics
-    - uses: actions/upload-artifact@v4
-      if: ${{ failure() }}
+        scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-${{ matrix.product }}.plist.gpg \
+          quickstart-ios/${{ matrix.product }}/GoogleService-Info.plist "$plist_secret"
+    - name: Run setup command, if needed.
+      if: matrix.setup_command != ''
+      run: ${{ matrix.setup_command }}
+    - name: Build Obj-C quickstart
+      if: matrix.objc == true
+      uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3
       with:
-        name: quickstart_artifacts_crashlytics
-        path: quickstart-ios/
-
-  database_quickstart:
-    # Don't run on private repo unless it is a PR.
-    if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
-    needs: buildup_SpecsReleasing_repo
-    env:
-      plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
-      botaccess: ${{ secrets.RELEASE_TESTING_PAT }}
-    runs-on: macos-15
-    steps:
-    - uses: actions/checkout@v4
-    - name: Set Xcode version
-      run: sudo xcode-select -s /Applications/Xcode_16.4.app
-    - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
-    - name: Setup testing repo and quickstart
-      run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh database nightly_release_testing
-    - name: Install Secret GoogleService-Info.plist
-      run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-database.plist.gpg \
-          quickstart-ios/database/GoogleService-Info.plist "$plist_secret"
-    - name: Test objc quickstart
-      run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Database false)
-    - name: Test swift quickstart
-      run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Database false swift)
-    - name: Remove data before upload
-      if: ${{ failure() }}
-      run: scripts/remove_data.sh database
-    - uses: actions/upload-artifact@v4
-      if: ${{ failure() }}
+        timeout_minutes: 15
+        max_attempts: 3
+        retry_wait_seconds: 120
+        command: scripts/test_quickstart.sh ${{ matrix.product }} ${{ matrix.run_tests }}
+    - name: Build Swift quickstart
+      if: matrix.swift == true
+      uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3
       with:
-        name: quickstart_artifacts_database
-        path: quickstart-ios/
-
-  firestore_quickstart:
-    # Don't run on private repo unless it is a PR.
-    if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
-    needs: buildup_SpecsReleasing_repo
-    env:
-      plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
-      botaccess: ${{ secrets.RELEASE_TESTING_PAT }}
-    runs-on: macos-15
-    steps:
-    - uses: actions/checkout@v4
-    - name: Set Xcode version
-      run: sudo xcode-select -s /Applications/Xcode_16.4.app
-    - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
-    - name: Setup testing repo and quickstart
-      run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh firestore nightly_release_testing
-    - name: Install Secret GoogleService-Info.plist
-      run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-firestore.plist.gpg \
-          quickstart-ios/firestore/GoogleService-Info.plist "$plist_secret"
-    - name: Test swift quickstart
-      run: ([ -z $plist_secret ] ||
-            scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Firestore false)
+        timeout_minutes: 15
+        max_attempts: 3
+        retry_wait_seconds: 120
+        command: scripts/test_quickstart.sh ${{ matrix.product }} ${{ matrix.run_tests }} swift
     - name: Remove data before upload
       if: ${{ failure() }}
-      run: scripts/remove_data.sh firestore
+      run: scripts/remove_data.sh ${{ matrix.product }}
     - uses: actions/upload-artifact@v4
       if: ${{ failure() }}
       with:
-        name: quickstart_artifacts_firestore
+        name: quickstart_artifacts_${{ matrix.product }}
         path: quickstart-ios/
 
   # TODO: The functions quickstart uses Material which isn't supported by Xcode 15
@@ -349,157 +279,3 @@ jobs:
   #     with:
   #       name: quickstart_artifacts_functions
   #       path: quickstart-ios/
-
-  inappmessaging_quickstart:
-    # Don't run on private repo unless it is a PR.
-    if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
-    needs: buildup_SpecsReleasing_repo
-    env:
-      plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
-      botaccess: ${{ secrets.RELEASE_TESTING_PAT }}
-    runs-on: macos-15
-    steps:
-    - uses: actions/checkout@v4
-    - name: Set Xcode version
-      run: sudo xcode-select -s /Applications/Xcode_16.4.app
-    - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
-    - name: Setup testing repo and quickstart
-      run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh inappmessaging nightly_release_testing
-    - name: install secret googleservice-info.plist
-      run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-inappmessaging.plist.gpg \
-          quickstart-ios/inappmessaging/GoogleService-Info.plist "$plist_secret"
-    - name: Test objc quickstart
-      run: ([ -z $plist_secret ] ||
-            scripts/third_party/travis/retry.sh scripts/test_quickstart.sh InAppMessaging true)
-    - name: Test swift quickstart
-      run: ([ -z $plist_secret ] ||
-            scripts/third_party/travis/retry.sh scripts/test_quickstart.sh InAppMessaging true swift)
-    - name: Remove data before upload
-      if: ${{ failure() }}
-      run: scripts/remove_data.sh inappmessaging
-    - uses: actions/upload-artifact@v4
-      if: ${{ failure() }}
-      with:
-        name: quickstart_artifacts_inappmessaging
-        path: quickstart-ios/
-
-  messaging_quickstart:
-    # Don't run on private repo unless it is a PR.
-    if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
-    needs: buildup_SpecsReleasing_repo
-    env:
-      plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
-      botaccess: ${{ secrets.RELEASE_TESTING_PAT }}
-    runs-on: macos-15
-    steps:
-    - uses: actions/checkout@v4
-    - name: Set Xcode version
-      run: sudo xcode-select -s /Applications/Xcode_16.4.app
-    - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
-    - name: Setup testing repo and quickstart
-      run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh messaging nightly_release_testing
-    - name: Install Secret GoogleService-Info.plist
-      run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-messaging.plist.gpg \
-          quickstart-ios/messaging/GoogleService-Info.plist "$plist_secret"
-    - name: Test objc quickstart
-      run: ([ -z $plist_secret ] ||
-            scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Messaging false)
-    - name: Test swift quickstart
-      run: ([ -z $plist_secret ] ||
-            scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Messaging false swift)
-    - name: Remove data before upload
-      if: ${{ failure() }}
-      run: scripts/remove_data.sh messaging
-    - uses: actions/upload-artifact@v4
-      if: ${{ failure() }}
-      with:
-        name: quickstart_artifacts_messaging
-        path: quickstart-ios/
-
-  remoteconfig_quickstart:
-    # Don't run on private repo unless it is a PR.
-    if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
-    needs: buildup_SpecsReleasing_repo
-    env:
-      plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
-      botaccess: ${{ secrets.RELEASE_TESTING_PAT }}
-    runs-on: macos-15
-    steps:
-    - uses: actions/checkout@v4
-    - name: Set Xcode version
-      run: sudo xcode-select -s /Applications/Xcode_16.4.app
-    - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
-    - name: Setup testing repo and quickstart
-      run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh config nightly_release_testing
-    - name: Install Secret GoogleService-Info.plist
-      run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-config.plist.gpg \
-          quickstart-ios/config/GoogleService-Info.plist "$plist_secret"
-    - name: Test Swift Quickstart
-      run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Config true)
-    - name: Remove data before upload
-      if: ${{ failure() }}
-      run: scripts/remove_data.sh config
-    - uses: actions/upload-artifact@v4
-      if: ${{ failure() }}
-      with:
-        name: quickstart_artifacts_config
-        path: quickstart-ios/
-
-  storage_quickstart:
-    # Don't run on private repo unless it is a PR.
-    if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
-    needs: buildup_SpecsReleasing_repo
-    env:
-      plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
-      botaccess: ${{ secrets.RELEASE_TESTING_PAT }}
-      LEGACY: true
-    runs-on: macos-15
-    steps:
-    - uses: actions/checkout@v4
-    - name: Set Xcode version
-      run: sudo xcode-select -s /Applications/Xcode_16.4.app
-    - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
-    - name: Setup testing repo and quickstart
-      run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh storage nightly_release_testing
-    - name: Install Secret GoogleService-Info.plist
-      run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-storage.plist.gpg \
-          quickstart-ios/storage/GoogleService-Info.plist "$plist_secret"
-    - name: Test swift quickstart
-      run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Storage true swift)
-    - name: Remove data before upload
-      if: ${{ failure() }}
-      run: scripts/remove_data.sh storage
-    - uses: actions/upload-artifact@v4
-      if: ${{ failure() }}
-      with:
-        name: quickstart_artifacts_storage
-        path: quickstart-ios/
-
-  performance_quickstart:
-    # Don't run on private repo unless it is a PR.
-    if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
-    needs: buildup_SpecsReleasing_repo
-    env:
-      plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
-      botaccess: ${{ secrets.RELEASE_TESTING_PAT }}
-    runs-on: macos-15
-    steps:
-    - uses: actions/checkout@v4
-    - name: Set Xcode version
-      run: sudo xcode-select -s /Applications/Xcode_16.4.app
-    - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
-    - name: Setup testing repo and quickstart
-      run: BOT_TOKEN="${botaccess}" scripts/setup_quickstart.sh Performance nightly_release_testing
-    - name: Install Secret GoogleService-Info.plist
-      run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-performance.plist.gpg \
-          quickstart-ios/performance/GoogleService-Info.plist "$plist_secret"
-    - name: Test swift quickstart
-      run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Performance true swift)
-    - name: Remove data before upload
-      if: ${{ failure() }}
-      run: scripts/remove_data.sh performance
-    - uses: actions/upload-artifact@v4
-      if: ${{ failure() }}
-      with:
-        name: quickstart_artifacts_performance
-        path: quickstart-ios/