This repository has been archived by the owner on Aug 20, 2024. It is now read-only.
spm #45
This file contains 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: spm | |
on: | |
pull_request: | |
paths: | |
- '.github/workflows/spm.yml' | |
- 'Package.swift' | |
- '.swiftpm/*' | |
- 'scripts/build.sh' | |
- 'SwiftPMTests/*' | |
- 'SwiftPM-PlatformExclude' | |
- 'Gemfile*' | |
schedule: | |
# Run every day at 12am (PST) - cron uses UTC times | |
- cron: '0 8 * * *' | |
# This workflow builds and tests the Swift Package Manager. Only iOS runs on PRs | |
# because each platform takes 15-20 minutes after adding Firestore. | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
swift-build-run: | |
# 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' | |
strategy: | |
matrix: | |
os: [macos-12, macos-13] | |
include: | |
- os: macos-12 | |
xcode: Xcode_14.2 | |
test: spm | |
# The integration tests are slow and flaky on Xcode 15, so just build. | |
- os: macos-13 | |
xcode: Xcode_15.2 | |
test: spmbuildonly | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 | |
with: | |
cache_key: spm${{ matrix.os }}-${{ matrix.xcode }}-${{ matrix.target }} | |
- name: Xcode | |
run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer | |
- name: Initialize xcodebuild | |
run: scripts/setup_spm_tests.sh | |
- name: Functions Integration Test Server | |
run: FirebaseFunctions/Backend/start.sh synchronous | |
- name: iOS Unit Tests | |
run: scripts/third_party/travis/retry.sh ./scripts/build.sh Firebase-Package iOS ${{ matrix.test }} | |
# Test iOS Device build since some Firestore dependencies build different files. | |
iOS-Device: | |
# 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' | |
strategy: | |
matrix: | |
os: [macos-12, macos-13] | |
include: | |
- os: macos-12 | |
xcode: Xcode_14.2 | |
- os: macos-13 | |
xcode: Xcode_15.2 | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 | |
with: | |
cache_key: device${{ matrix.os }}${{ matrix.xcode }} | |
- name: Xcode | |
run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer | |
- name: Initialize xcodebuild | |
run: scripts/setup_spm_tests.sh | |
- name: iOS Device and Test Build | |
run: scripts/third_party/travis/retry.sh ./scripts/build.sh Firebase-Package iOS-device spmbuildonly | |
platforms: | |
# 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' | |
strategy: | |
matrix: | |
# Full set of Firebase-Package tests only run on iOS. Run subset on other platforms. | |
target: [tvOS, macOS, catalyst] | |
os: [macos-12, macos-13] | |
include: | |
- os: macos-12 | |
xcode: Xcode_14.2 | |
- os: macos-13 | |
xcode: Xcode_15.2 | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 | |
with: | |
cache_key: platforms${{ matrix.os }}-${{ matrix.xcode }}-${{ matrix.target }} | |
- name: Xcode | |
run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer | |
- name: Initialize xcodebuild | |
run: scripts/setup_spm_tests.sh | |
- name: Objc Import Tests | |
run: scripts/third_party/travis/retry.sh ./scripts/build.sh objc-import-test ${{ matrix.target }} spm | |
- name: Swift Tests | |
run: scripts/third_party/travis/retry.sh ./scripts/build.sh swift-test ${{ matrix.target }} spm | |
- name: Version Tests | |
run: scripts/third_party/travis/retry.sh ./scripts/build.sh version-test ${{ matrix.target }} spm | |
- name: Analytics Build Tests | |
run: scripts/third_party/travis/retry.sh ./scripts/build.sh analytics-import-test ${{ matrix.target }} spm |