messaging #3358
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: messaging | |
on: | |
pull_request: | |
paths: | |
# Messaging sources | |
- 'FirebaseMessaging/**' | |
# Interop headers | |
- 'Interop/Analytics/Public/*.h' | |
# Podspec | |
- 'FirebaseMessaging.podspec' | |
# This file | |
- '.github/workflows/messaging.yml' | |
# Rebuild on Ruby infrastructure changes | |
- 'Gemfile*' | |
schedule: | |
# Run every day at 10pm (PST) - cron uses UTC times | |
- cron: '0 6 * * *' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
# TODO(#12205) Update the build.sh script for this job from "test" instead of "build" | |
messaging-integration-tests: | |
# 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 }} | |
runs-on: macos-14 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 | |
with: | |
cache_key: integration | |
- name: Configure test keychain | |
run: scripts/configure_test_keychain.sh | |
- uses: ruby/setup-ruby@v1 | |
- name: Setup Bundler | |
run: scripts/setup_bundler.sh | |
- name: Install xcpretty | |
run: gem install xcpretty | |
- name: Install Secret GoogleService-Info.plist | |
run: | | |
mkdir FirebaseMessaging/Tests/IntegrationTests/Resources | |
scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ | |
FirebaseMessaging/Tests/IntegrationTests/Resources/GoogleService-Info.plist "$plist_secret" | |
- name: Xcode | |
run: sudo xcode-select -s /Applications/Xcode_15.2.app/Contents/Developer | |
- name: BuildAndTest | |
run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/build.sh Messaging all) | |
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: | |
podspec: [FirebaseMessagingInterop.podspec, FirebaseMessaging.podspec] | |
target: [ios, tvos, macos --skip-tests, watchos --skip-tests] # skipping tests on mac because of keychain access | |
os: [macos-14] | |
include: | |
- os: macos-14 | |
xcode: Xcode_15.3 | |
tests: --test-specs=unit | |
- os: macos-14 | |
xcode: Xcode_16 | |
tests: --skip-tests | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
- name: Setup Bundler | |
run: scripts/setup_bundler.sh | |
- name: Xcode | |
run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer | |
- name: Build and test | |
run: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb ${{ matrix.podspec }} ${{ matrix.tests }} --platforms=${{ matrix.target }} | |
spm-package-resolved: | |
env: | |
FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1 | |
runs-on: macos-14 | |
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: | |
# 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: | |
include: | |
- os: macos-13 | |
xcode: Xcode_15.2 | |
target: iOS spm | |
- os: macos-14 | |
xcode: Xcode_15.4 | |
target: iOS spmbuildonly | |
- os: macos-15 | |
xcode: Xcode_16 | |
target: iOS spm | |
- os: macos-15 | |
xcode: Xcode_16 | |
target: tvOS spmbuildonly | |
- os: macos-15 | |
xcode: Xcode_16 | |
target: macOS spmbuildonly | |
- os: macos-15 | |
xcode: Xcode_16 | |
target: watchOS spmbuildonly | |
- os: macos-15 | |
xcode: Xcode_16 | |
target: catalyst spmbuildonly | |
- os: macos-15 | |
xcode: Xcode_16 | |
target: visionOS spmbuildonly | |
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: Initialize xcodebuild | |
run: scripts/setup_spm_tests.sh | |
- name: Xcode | |
run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer | |
- name: Unit Tests | |
run: scripts/third_party/travis/retry.sh ./scripts/build.sh MessagingUnit ${{ matrix.target }} | |
catalyst: | |
# 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' | |
runs-on: macos-14 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 | |
with: | |
cache_key: catalyst${{ matrix.os }} | |
- uses: ruby/setup-ruby@v1 | |
- name: Setup Bundler | |
run: scripts/setup_bundler.sh | |
- name: Setup project and Build Catalyst | |
run: scripts/test_catalyst.sh FirebaseMessaging test FirebaseMessaging-Unit-unit | |
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 }} | |
strategy: | |
matrix: | |
include: | |
- os: macos-14 | |
xcode: Xcode_15.3 | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
- name: Setup quickstart | |
run: scripts/setup_quickstart.sh messaging | |
- 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: Xcode | |
run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer | |
- 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) | |
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 }} | |
runs-on: macos-14 | |
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 messaging | |
- 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: Build objc quickstart | |
run: ([ -z $plist_secret ] || | |
scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Messaging) | |
- name: Build swift quickstart | |
run: ([ -z $plist_secret ] || | |
scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Messaging swift) | |
- id: ftl_test | |
uses: FirebaseExtended/github-actions/[email protected] | |
with: | |
credentials_json: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS }} | |
testapp_dir: quickstart-ios/build-for-testing | |
test_type: "xctest" | |
messaging-cron-only: | |
# Don't run on private repo. | |
if: github.event_name == 'schedule' && github.repository == 'Firebase/firebase-ios-sdk' | |
strategy: | |
matrix: | |
target: [ios, tvos, macos --skip-tests, watchos --skip-tests] | |
os: [macos-14, macos-13] | |
include: | |
- os: macos-14 | |
xcode: Xcode_15.3 | |
tests: --test-specs=unit | |
- os: macos-13 | |
xcode: Xcode_15.2 | |
tests: --skip-tests | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
- name: Setup Bundler | |
run: scripts/setup_bundler.sh | |
- name: Xcode | |
run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer | |
- name: PodLibLint Messaging Cron | |
run: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseMessaging.podspec ${{ matrix.tests }} --platforms=${{ matrix.target }} --use-static-frameworks | |
messaging-sample-build-test: | |
# 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 }} | |
runs-on: macos-13 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 | |
with: | |
cache_key: sample${{ matrix.os }} | |
- uses: ruby/setup-ruby@v1 | |
- name: Setup Bundler | |
run: scripts/setup_bundler.sh | |
- name: Install Secret GoogleService-Info.plist | |
run: | | |
scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ | |
FirebaseMessaging/Apps/Shared/GoogleService-Info.plist "$plist_secret" | |
- name: Prereqs | |
run: scripts/install_prereqs.sh MessagingSample iOS | |
- name: Xcode | |
run: sudo xcode-select -s /Applications/Xcode_15.2.app/Contents/Developer | |
- name: Build | |
run: ([ -z $plist_secret ] || scripts/build.sh MessagingSample iOS) | |
messaging-swiftui-sample-build-test: | |
# 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 }} | |
runs-on: macos-13 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 | |
with: | |
cache_key: sample${{ matrix.os }} | |
- uses: ruby/setup-ruby@v1 | |
- name: Setup Bundler | |
run: scripts/setup_bundler.sh | |
- name: Install Secret GoogleService-Info.plist | |
run: | | |
scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ | |
FirebaseMessaging/Apps/Shared/GoogleService-Info.plist "$plist_secret" | |
- name: Prereqs | |
run: scripts/install_prereqs.sh SwiftUISample iOS | |
- name: Xcode | |
run: sudo xcode-select -s /Applications/Xcode_15.2.app/Contents/Developer | |
- name: Build | |
run: ([ -z $plist_secret ] || scripts/build.sh SwiftUISample iOS) | |
messaging-watchos-standalone-sample-build-test: | |
# 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 }} | |
runs-on: macos-13 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 | |
with: | |
cache_key: watch-sample${{ matrix.os }} | |
- uses: ruby/setup-ruby@v1 | |
- name: Setup Bundler | |
run: scripts/setup_bundler.sh | |
- name: Install Secret GoogleService-Info.plist | |
run: | | |
scripts/decrypt_gha_secret.sh scripts/gha-encrypted/messaging-sample-plist.gpg \ | |
FirebaseMessaging/Apps/Shared/GoogleService-Info.plist "$plist_secret" | |
- name: Prereqs | |
run: scripts/install_prereqs.sh MessagingSampleStandaloneWatchApp watchOS | |
- name: Xcode | |
run: sudo xcode-select -s /Applications/Xcode_15.2.app/Contents/Developer | |
- name: Build | |
run: ([ -z $plist_secret ] || scripts/build.sh MessagingSampleStandaloneWatchApp watchOS) | |