performance #3266
This file contains hidden or 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
# Merge the yml file to main branch for the cron job schedule to be effective. | |
# Reference: https://github.community/t/on-schedule-per-branch/17525 | |
name: performance | |
permissions: | |
contents: read | |
on: | |
workflow_dispatch: | |
pull_request: | |
paths: | |
# Performance sources | |
- 'FirebasePerformance/**' | |
# Podspec | |
- 'FirebasePerformance.podspec' | |
# YML configuration file | |
- '.github/workflows/performance.yml' | |
# Re-usable workflows depended on by this file. | |
- '.github/workflows/common.yml' | |
- '.github/workflows/common_cocoapods.yml' | |
- '.github/workflows/common_catalyst.yml' | |
- '.github/workflows/common_quickstart.yml' | |
- '.github/workflows/common_cocoapods_cron.yml' | |
# Rebuild on Ruby infrastructure changes | |
- 'Gemfile*' | |
schedule: | |
# Run every day at 12am (PDT) / 3am (EDT) - cron uses UTC times | |
# Specified in format 'minutes hours day month dayofweek' | |
- cron: '0 7 * * *' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
spm: | |
uses: ./.github/workflows/common.yml | |
with: | |
target: PerformanceUnit | |
platforms: iOS, tvOS | |
catalyst: | |
uses: ./.github/workflows/common_catalyst.yml | |
with: | |
product: FirebasePerformance | |
target: | |
buildonly: true | |
# Build and run the unit tests for Firebase performance SDK. | |
performance: | |
# 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-15 | |
strategy: | |
matrix: | |
target: [iOS, tvOS] | |
test: [unit, proddev] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: mikehardy/buildcache-action@c87cea0ccd718971d6cc39e672c4f26815b6c126 | |
with: | |
cache_key: ${{ matrix.target }}${{ matrix.test }} | |
- uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 | |
- name: Xcode | |
run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer | |
- name: Setup Bundler | |
run: scripts/setup_bundler.sh | |
- name: Install xcpretty | |
run: gem install xcpretty | |
- name: BuildAndTest # can be replaced with pod lib lint with CocoaPods 1.10 | |
run: scripts/third_party/travis/retry.sh scripts/build.sh Performance ${{ matrix.target }} ${{ matrix.test }} | |
pod_lib_lint: | |
uses: ./.github/workflows/common_cocoapods.yml | |
with: | |
product: FirebasePerformance | |
platforms: iOS, tvOS | |
#TODO: tests are not supported with Xcode 15 because the test spec depends on the iOS 8 GDCWebServer | |
buildonly_platforms: iOS, tvOS | |
# TODO: The legacy ObjC quickstarts don't run with Xcode 15, re-able if we get these working. | |
quickstart: | |
uses: ./.github/workflows/common_quickstart.yml | |
with: | |
product: Performance | |
is_legacy: false | |
quickstart_type: swift | |
setup_command: scripts/setup_quickstart.sh performance | |
plist_src_path: scripts/gha-encrypted/qs-performance.plist.gpg | |
plist_dst_path: quickstart-ios/performance/GoogleService-Info.plist | |
secrets: | |
plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} | |
quickstart-ftl-cron-only: | |
if: github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule' | |
env: | |
plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }} | |
runs-on: macos-15 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Xcode | |
run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer | |
- name: Setup quickstart | |
run: scripts/setup_quickstart.sh performance | |
- 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: Build swift quickstart | |
run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Performance swift) | |
# - name: Build objc quickstart | |
# run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh Performance) | |
- 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" | |
performance-cron-only: | |
needs: pod_lib_lint | |
uses: ./.github/workflows/common_cocoapods_cron.yml | |
with: | |
product: FirebasePerformance | |
platforms: '[ "ios", "tvos" ]' | |
flags: '[ "--skip-tests --use-static-frameworks" ]' |