Skip to content

infra.archiving

infra.archiving #258

name: infra.archiving
permissions:
contents: read
on:
workflow_dispatch:
pull_request:
paths:
- '.github/workflows/infra.archiving.yml'
schedule:
# Run every day at 3am (PDT) / 6am (EDT) - cron uses UTC times
# This is set to 3 hours after zip workflow finishes so zip testing can run after.
- cron: '0 10 * * *'
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true
jobs:
# Archive tests for pods that support iOS only.
pods-ios-only-cron:
# Don't run on private repo.
if: github.repository == 'Firebase/firebase-ios-sdk'
runs-on: macos-26
strategy:
matrix:
# These need to be on a single line or else the formatting won't validate.
pod: ["FirebaseAppDistribution", "FirebaseInAppMessaging", "FirebasePerformance"]
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- name: Set Xcode version
run: sudo xcode-select -s /Applications/Xcode_26.4.app/Contents/Developer
- name: Install iOS SDK
uses: nick-fields/retry@ad984534de44a9489a53aefd81eb77f87c70dc60 # v4.0.0
with:
timeout_minutes: 15
max_attempts: 5
retry_wait_seconds: 120
continue_on_error: true
command: xcodebuild -downloadPlatform iOS
- uses: ruby/setup-ruby@89f90524b88a01fe6e0b732220432cc6142926af # v1.313.0
- name: Setup Bundler
run: scripts/setup_bundler.sh
- name: Setup project and archive
uses: nick-fields/retry@ad984534de44a9489a53aefd81eb77f87c70dc60 # v4.0.0
with:
timeout_minutes: 20
max_attempts: 3
retry_wait_seconds: 300
command: scripts/test_archiving.sh ${{ matrix.pod }} ios ArchiveOutputs/ios.xcarchive
# Archive tests for pods that support iOS, tvOS, and macOS.
pods-ios-tvos-macos-cron:
# Don't run on private repo.
if: github.repository == 'Firebase/firebase-ios-sdk'
runs-on: macos-26
strategy:
matrix:
target: [ios, tvos, macos]
# These need to be on a single line or else the formatting won't validate.
pod: ["FirebaseABTesting", "FirebaseAuth", "FirebaseCore", "FirebaseCrashlytics", "FirebaseDatabase", "FirebaseFirestore", "FirebaseFunctions", "FirebaseMessaging", "FirebaseRemoteConfig", "FirebaseStorage"]
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
- name: Set Xcode version
run: sudo xcode-select -s /Applications/Xcode_26.4.app/Contents/Developer
- name: Install SDK
if: matrix.target != 'macos'
uses: nick-fields/retry@ad984534de44a9489a53aefd81eb77f87c70dc60 # v4.0.0
with:
timeout_minutes: 15
max_attempts: 5
retry_wait_seconds: 120
continue_on_error: true
command: |
if [[ "${{ matrix.target }}" == "ios" ]]; then
xcodebuild -downloadPlatform iOS
elif [[ "${{ matrix.target }}" == "tvos" ]]; then
xcodebuild -downloadPlatform tvOS
fi
- uses: ruby/setup-ruby@89f90524b88a01fe6e0b732220432cc6142926af # v1.313.0
- name: Setup Bundler
run: scripts/setup_bundler.sh
- name: Setup project and archive
uses: nick-fields/retry@ad984534de44a9489a53aefd81eb77f87c70dc60 # v4.0.0
with:
# Firestore gets a 60 min. timeout, everything else gets 20 min.
timeout_minutes: ${{ matrix.pod == 'FirebaseFirestore' && 60 || 20 }}
max_attempts: 3
retry_wait_seconds: 300
command: scripts/test_archiving.sh ${{ matrix.pod }} ${{ matrix.target }} ArchiveOutputs/${{ matrix.target }}.xcarchive