functions #3178
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: functions | |
on: | |
pull_request: | |
paths: | |
- 'FirebaseFunctions**' | |
- 'FirebaseSharedSwift**' | |
- '.github/workflows/functions.yml' | |
- 'FirebaseAuth/Interop/*.h' | |
- 'FirebaseMessaging/Interop/*.h' | |
- 'FirebaseTestingSupport/Functions/**' | |
- 'FirebaseCombineSwift/Sources/Functions/**' | |
- 'scripts/setup_quickstart.sh' | |
- 'Gemfile*' | |
schedule: | |
# Run every day at 1am (PST) - cron uses UTC times | |
- cron: '0 9 * * *' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
pod-lib-lint: | |
# 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: | |
target: [ios, tvos, macos, watchos] | |
build-env: | |
- os: macos-14 | |
xcode: Xcode_15.2 | |
- os: macos-15 | |
xcode: Xcode_16.1 | |
runs-on: ${{ matrix.build-env.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
- name: Xcode | |
run: sudo xcode-select -s /Applications/${{ matrix.build-env.xcode }}.app/Contents/Developer | |
- name: Setup Bundler | |
run: scripts/setup_bundler.sh | |
# The integration tests are flaky on Xcode 15 so only run the unit tests. The integration tests still run with SPM. | |
# - name: Integration Test Server | |
# run: FirebaseFunctions/Backend/start.sh synchronous | |
- name: Build and test | |
run: | | |
scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseFunctions.podspec \ | |
--test-specs=unit --platforms=${{ matrix.target }} | |
spm-package-resolved: | |
runs-on: macos-14 | |
env: | |
FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1 | |
outputs: | |
cache_key: ${{ steps.generate_cache_key.outputs.cache_key }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Generate Swift Package.resolved | |
id: swift_package_resolve | |
run: | | |
swift package resolve | |
- name: Generate cache key | |
id: generate_cache_key | |
run: | | |
cache_key="${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}" | |
echo "cache_key=${cache_key}" >> "$GITHUB_OUTPUT" | |
- uses: actions/cache/save@v4 | |
id: cache | |
with: | |
path: .build | |
key: ${{ steps.generate_cache_key.outputs.cache_key }} | |
spm-integration: | |
# 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' | |
needs: [spm-package-resolved] | |
strategy: | |
matrix: | |
os: [macos-14] | |
xcode: [Xcode_15.4] | |
runs-on: ${{ matrix.os }} | |
env: | |
FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache/restore@v4 | |
with: | |
path: .build | |
key: ${{needs.spm-package-resolved.outputs.cache_key}} | |
- name: Initialize xcodebuild | |
run: scripts/setup_spm_tests.sh | |
- name: Integration Test Server | |
run: FirebaseFunctions/Backend/start.sh synchronous | |
- name: Xcode | |
run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer | |
- name: iOS Swift Integration Tests (including Swift library) | |
run: scripts/third_party/travis/retry.sh ./scripts/build.sh FirebaseFunctionsIntegration iOS spm | |
- name: iOS ObjC Integration Tests (using Swift library) | |
run: scripts/third_party/travis/retry.sh ./scripts/build.sh FirebaseFunctionsObjCIntegration iOS spm | |
- name: Combine Unit Tests | |
run: scripts/third_party/travis/retry.sh ./scripts/build.sh FunctionsCombineUnit iOS spm | |
spm-unit: | |
# Don't run on private repo. | |
if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' | |
needs: [spm-package-resolved] | |
strategy: | |
matrix: | |
include: | |
- os: macos-13 | |
xcode: Xcode_15.2 | |
target: iOS | |
- os: macos-14 | |
xcode: Xcode_15.4 | |
target: iOS | |
- os: macos-15 | |
xcode: Xcode_16.1 | |
target: iOS | |
- os: macos-15 | |
xcode: Xcode_16.1 | |
target: tvOS | |
- os: macos-15 | |
xcode: Xcode_16.1 | |
target: macOS | |
- os: macos-15 | |
xcode: Xcode_16.1 | |
target: watchOS | |
- os: macos-15 | |
xcode: Xcode_16.1 | |
target: catalyst | |
- os: macos-15 | |
xcode: Xcode_16.1 | |
target: visionOS | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache/restore@v4 | |
with: | |
path: .build | |
key: ${{needs.spm-package-resolved.outputs.cache_key}} | |
- name: Xcode | |
run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer | |
- name: Initialize xcodebuild | |
run: scripts/setup_spm_tests.sh | |
- name: Unit Tests | |
run: scripts/third_party/travis/retry.sh ./scripts/build.sh FirebaseFunctionsUnit ${{ matrix.target }} spm | |
# TODO: Move to macos-14 and Xcode 15. The legacy quickstart uses material which doesn't build on Xcode 15. | |
# 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' | |
# env: | |
# plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} | |
# signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} | |
# LEGACY: true | |
# # TODO: Move to macos-14 and Xcode 15. The legacy quickstart uses material which doesn't build on Xcode 15. | |
# runs-on: macos-12 | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: ruby/setup-ruby@v1 | |
# - name: Setup quickstart | |
# run: scripts/setup_quickstart.sh functions | |
# - name: install secret googleservice-info.plist | |
# run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-functions.plist.gpg \ | |
# quickstart-ios/functions/GoogleService-Info.plist "$plist_secret" | |
# - name: Setup custom URL scheme | |
# run: sed -i '' 's/REVERSED_CLIENT_ID/com.googleusercontent.apps.1025801074639-6p6ebi8amuklcjrto20gvpe295smm8u6/' quickstart-ios/functions/LegacyFunctionsQuickstart/FunctionsExample/Info.plist | |
# - name: Test objc quickstart | |
# run: ([ -z $plist_secret ] || | |
# scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Functions true) | |
# - name: Test swift quickstart | |
# run: ([ -z $plist_secret ] || | |
# scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Functions true swift) | |
# quickstart-ftl-cron-only: | |
# # Don't run on private repo | |
# if: github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule' | |
# env: | |
# plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} | |
# signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} | |
# LEGACY: true | |
# # TODO: Move to macos-14 and Xcode 15. The legacy quickstart uses material which doesn't build on Xcode 15. | |
# runs-on: macos-12 | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: ruby/setup-ruby@v1 | |
# - uses: actions/setup-python@v5 | |
# with: | |
# python-version: '3.11' | |
# - name: Setup quickstart | |
# run: scripts/setup_quickstart.sh functions | |
# - name: install secret googleservice-info.plist | |
# run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-functions.plist.gpg \ | |
# quickstart-ios/functions/GoogleService-Info.plist "$plist_secret" | |
# - name: Setup custom URL scheme | |
# run: sed -i '' 's/REVERSED_CLIENT_ID/com.googleusercontent.apps.1025801074639-6p6ebi8amuklcjrto20gvpe295smm8u6/' quickstart-ios/functions/LegacyFunctionsQuickstart/FunctionsExample/Info.plist | |
# - name: Build objc quickstart | |
# run: ([ -z $plist_secret ] || | |
# scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Functions) | |
# - name: Build swift quickstart | |
# run: ([ -z $plist_secret ] || | |
# scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Functions swift) | |
# - id: ftl_test | |
# uses: FirebaseExtended/github-actions/firebase-test-lab@v1.4 | |
# with: | |
# credentials_json: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS }} | |
# testapp_dir: quickstart-ios/build-for-testing | |
# test_type: "xctest" | |
functions-cron-only: | |
# Don't run on private repo. | |
if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' | |
runs-on: macos-14 | |
strategy: | |
matrix: | |
target: [ios, tvos, macos] | |
flags: [ | |
'--use-static-frameworks', | |
] | |
needs: pod-lib-lint | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
- name: Setup Bundler | |
run: scripts/setup_bundler.sh | |
- name: Integration Test Server | |
run: FirebaseFunctions/Backend/start.sh synchronous | |
- name: PodLibLint Functions Cron | |
run: | | |
scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb \ | |
FirebaseFunctions.podspec --platforms=${{ matrix.target }} --use-static-frameworks |