mirror of
https://github.com/firebase/firebase-ios-sdk
synced 2026-11-10 22:45:59 +05:45
252 lines
7.6 KiB
YAML
252 lines
7.6 KiB
YAML
# Copyright 2020 Google LLC
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
name: firestore
|
|
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
# Firestore sources
|
|
- 'Firestore/**'
|
|
|
|
# Interop headers
|
|
- 'Interop/Auth/Public/*.h'
|
|
|
|
# FirebaseCore header change
|
|
- 'FirebaseCore/Sources/Private'
|
|
- 'FirebaseCore/Sources/Public'
|
|
|
|
# Podspec
|
|
- 'FirebaseFirestore.podspec'
|
|
|
|
# CMake
|
|
- 'CMakeLists.txt'
|
|
- 'cmake/**'
|
|
|
|
# Build scripts to which Firestore is sensitive
|
|
#
|
|
# Note that this doesn't include check scripts because changing those will
|
|
# already trigger the check workflow.
|
|
- 'scripts/binary_to_array.py'
|
|
- 'scripts/build.sh'
|
|
- 'scripts/install_prereqs.sh'
|
|
- 'scripts/localize_podfile.swift'
|
|
- 'scripts/pod_lib_lint.rb'
|
|
- 'scripts/run_firestore_emulator.sh'
|
|
- 'scripts/setup_*'
|
|
- 'scripts/sync_project.rb'
|
|
- 'scripts/test_quickstart.sh'
|
|
- 'scripts/xcresult_logs.py'
|
|
|
|
# This workflow
|
|
- '.github/workflows/firestore.yml'
|
|
|
|
# Rebuild on Ruby infrastructure changes.
|
|
- 'Gemfile'
|
|
|
|
schedule:
|
|
# Run every day at 11pm (PST) - cron uses UTC times
|
|
- cron: '0 7 * * *'
|
|
|
|
jobs:
|
|
check:
|
|
# Don't run on private repo unless it is a PR.
|
|
if: github.repository != 'FirebasePrivate/firebase-ios-sdk' || github.event_name == 'pull_request'
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: 3.6
|
|
|
|
- name: Setup check
|
|
run: scripts/setup_check.sh
|
|
|
|
- name: Run check
|
|
run: scripts/check.sh --test-only
|
|
|
|
|
|
cmake:
|
|
# Don't run on private repo unless it is a PR.
|
|
if: github.repository != 'FirebasePrivate/firebase-ios-sdk' || github.event_name == 'pull_request'
|
|
needs: check
|
|
|
|
strategy:
|
|
matrix:
|
|
os: [macos-latest, ubuntu-latest]
|
|
|
|
env:
|
|
MINT_PATH: ${{ github.workspace }}/mint
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Prepare ccache
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ~/.ccache
|
|
key: firestore-ccache-${{ runner.os }}-${{ github.sha }}
|
|
restore-keys: |
|
|
firestore-ccache-${{ runner.os }}-
|
|
|
|
- name: Cache Mint packages
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ${{ env.MINT_PATH }}
|
|
key: ${{ runner.os }}-mint-${{ hashFiles('**/Mintfile') }}
|
|
restore-keys: ${{ runner.os }}-mint-
|
|
|
|
- name: Setup build
|
|
run: scripts/install_prereqs.sh Firestore ${{ runner.os }} cmake
|
|
|
|
- name: Build and test
|
|
run: scripts/third_party/travis/retry.sh scripts/build.sh Firestore ${{ runner.os }} cmake
|
|
|
|
|
|
sanitizers:
|
|
# Don't run on private repo unless it is a PR.
|
|
if: github.repository != 'FirebasePrivate/firebase-ios-sdk' || github.event_name == 'pull_request'
|
|
runs-on: macos-latest
|
|
needs: check
|
|
|
|
strategy:
|
|
matrix:
|
|
sanitizer: [asan, tsan]
|
|
|
|
env:
|
|
SANITIZERS: ${{ matrix.sanitizer }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Prepare ccache
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ~/.ccache
|
|
key: firestore-ccache-${{ runner.os }}-${{ matrix.sanitizer }}-${{ github.sha }}
|
|
restore-keys: |
|
|
firestore-ccache-${{ runner.os }}-${{ matrix.sanitizer }}-
|
|
|
|
- name: Setup build
|
|
run: scripts/install_prereqs.sh Firestore ${{ runner.os }} cmake
|
|
|
|
- name: Build and test
|
|
run: scripts/third_party/travis/retry.sh scripts/build.sh Firestore ${{ runner.os }} cmake
|
|
|
|
|
|
xcodebuild:
|
|
# Don't run on private repo unless it is a PR.
|
|
if: github.repository != 'FirebasePrivate/firebase-ios-sdk' || github.event_name == 'pull_request'
|
|
runs-on: macos-latest
|
|
needs: check
|
|
|
|
strategy:
|
|
matrix:
|
|
target: [iOS, tvOS, macOS]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Setup build
|
|
run: scripts/install_prereqs.sh Firestore ${{ matrix.target }} xcodebuild
|
|
|
|
- name: Build and test
|
|
run: scripts/third_party/travis/retry.sh scripts/build.sh Firestore ${{ matrix.target }} xcodebuild
|
|
|
|
|
|
pod-lib-lint:
|
|
# Don't run on private repo unless it is a PR.
|
|
if: github.repository != 'FirebasePrivate/firebase-ios-sdk' || github.event_name == 'pull_request'
|
|
runs-on: macos-latest
|
|
needs: check
|
|
strategy:
|
|
matrix:
|
|
flags: [
|
|
'--use-static-frameworks',
|
|
'',
|
|
]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Setup Bundler
|
|
run: ./scripts/setup_bundler.sh
|
|
|
|
- name: Pod lib lint
|
|
run: |
|
|
scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseFirestore.podspec \
|
|
${{ matrix.flags }} \
|
|
--platforms=ios \
|
|
--allow-warnings
|
|
|
|
spm:
|
|
# Don't run on private repo unless it is a PR.
|
|
if: github.repository != 'FirebasePrivate/firebase-ios-sdk' || github.event_name == 'pull_request'
|
|
runs-on: macOS-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Xcode 12
|
|
run: sudo xcode-select -s /Applications/Xcode_12.app/Contents/Developer
|
|
- name: Initialize xcodebuild
|
|
run: xcodebuild -list
|
|
- name: iOS Build Test
|
|
run: scripts/third_party/travis/retry.sh ./scripts/build.sh FirebaseFirestore iOS spmbuildonly
|
|
- name: Swift Build
|
|
run: scripts/third_party/travis/retry.sh ./scripts/build.sh FirebaseFirestoreSwift iOS spmbuildonly
|
|
|
|
spm-cron:
|
|
# Don't run on private repo.
|
|
if: github.event_name == 'schedule' && github.repository != 'FirebasePrivate/firebase-ios-sdk'
|
|
runs-on: macOS-latest
|
|
strategy:
|
|
matrix:
|
|
target: [tvOS, macOS, catalyst]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Xcode 12
|
|
run: sudo xcode-select -s /Applications/Xcode_12.app/Contents/Developer
|
|
- name: Initialize xcodebuild
|
|
run: xcodebuild -list
|
|
- name: Build Test
|
|
run: scripts/third_party/travis/retry.sh ./scripts/build.sh FirebaseFirestore ${{ matrix.target }} spmbuildonly
|
|
- name: Swift Build
|
|
run: scripts/third_party/travis/retry.sh ./scripts/build.sh FirebaseFirestoreSwift ${{ matrix.target }} spmbuildonly
|
|
|
|
# Restore when FirebaseUI works with Firebase 7 (#6646)
|
|
quickstart:
|
|
# Don't run on private repo unless it is a PR.
|
|
if: false
|
|
#if: github.repository != 'FirebasePrivate/firebase-ios-sdk' || github.event_name == 'pull_request'
|
|
env:
|
|
plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
|
|
signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
|
|
runs-on: macOS-latest
|
|
needs: check
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Setup quickstart
|
|
run: scripts/setup_quickstart.sh firestore
|
|
- name: Install Secret GoogleService-Info.plist
|
|
run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-firestore.plist.gpg \
|
|
quickstart-ios/firestore/GoogleService-Info.plist "$plist_secret"
|
|
- name: Install Secret FIREGSignInInfo.h
|
|
run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/FIREGSignInInfo.h.gpg \
|
|
quickstart-ios/TestUtils/FIREGSignInInfo.h "$signin_secret"
|
|
- name: Test swift quickstart
|
|
run: ([ -z $plist_secret ] ||
|
|
scripts/third_party/travis/retry.sh scripts/test_quickstart.sh Firestore)
|