react-native-firebase-compiled
Version:
A well tested, feature rich Firebase implementation for React Native, supporting iOS & Android. Individual module support for Admob, Analytics, Auth, Crash Reporting, Cloud Firestore, Database, Dynamic Links, Functions, Messaging (FCM), Remote Config, Sto
241 lines (204 loc) • 6.43 kB
YAML
# -------------------------
# ALIASES
# -------------------------
aliases:
# -------------------------
# CACHE
# -------------------------
- &restore-yarn-cache
keys:
- yarn-cache-{{ arch }}-{{ checksum "package.json" }}-{{ checksum "yarn.lock" }}-{{ checksum "tests/package.json" }}-{{ checksum "tests/yarn.lock" }}
- yarn-cache-{{ arch }}
- &save-yarn-cache
paths:
- ~/.cache/yarn
- ~/Library/Detox/ios
key: yarn-cache-{{ arch }}-{{ checksum "package.json" }}-{{ checksum "yarn.lock" }}-{{ checksum "tests/package.json" }}-{{ checksum "tests/yarn.lock" }}
- &save-pods-cache
paths:
- ~/react-native-firebase/tests/ios/Pods
key: v2-pods-cache-{{ arch }}-{{ checksum "ios/RNFirebase.podspec" }}-{{ checksum "tests/ios/Podfile" }}-{{ checksum "tests/ios/Podfile.lock" }}
- &restore-pods-cache
keys:
- v2-pods-cache-{{ arch }}-{{ checksum "ios/RNFirebase.podspec" }}-{{ checksum "tests/ios/Podfile" }}-{{ checksum "tests/ios/Podfile.lock" }}
- v2-pods-cache-{{ arch }}
- &save-ios-build-cache
paths:
- ~/react-native-firebase/tests/ios/build/Build
key: v2-ios-build-cache-{{ arch }}-{{ checksum "ios/RNFirebase.podspec" }}-{{ checksum "tests/ios/Podfile" }}-{{ checksum "tests/ios/Podfile.lock" }}
- &restore-ios-build-cache
keys:
- v2-ios-build-cache-{{ arch }}-{{ checksum "ios/RNFirebase.podspec" }}-{{ checksum "tests/ios/Podfile" }}-{{ checksum "tests/ios/Podfile.lock" }}
- v2-ios-build-cache-{{ arch }}
- &save-brew-cache
paths:
- /usr/local/Homebrew
- ~/Library/Caches/Homebrew
key: v3-brew-cache-{{ arch }}
- &restore-brew-cache
keys:
- v3-brew-cache-{{ arch }}
- &configure-jet-detox-environment
name: Configure Jet + Detox Environment
command: |
brew install node@8
brew tap wix/brew
brew install applesimutils
brew install watchman
touch .watchmanconfig
node -v
- &packager-jet
name: Start React Native Pacakager (background)
background: true
command: cd tests && yarn run packager-jet || true
- &packager-warmup
name: Warming up Packager
background: true
command: node .circleci/scripts/packager-warmup.js
# -------------------------
# INSTALLATION
# -------------------------
-
name: Yarn Install ./ and ./tests
command: |
yarn install --non-interactive --cache-folder ~/.cache/yarn & cd tests && yarn install --non-interactive --cache-folder ~/.cache/yarn & wait
# -------------------------
# ANALYSE
# -------------------------
# eslint
-
name: Lint Code
command: yarn run lint
# flow
- &validate-flow-declarations
name: Validate Flow Declarations
command: yarn run validate-flow-declarations
# typescript
- &validate-ts-declarations
name: Validate TypeScript Declarations
command: yarn run validate-ts-declarations
# -------------------------
# DEFAULTS
# -------------------------
defaults:
working_directory: ~/react-native-firebase
environment:
- GIT_COMMIT_DESC: git log --format=oneline -n 1 $CIRCLE_SHA1
# JAVASCRIPT
js_defaults:
<<:
docker:
- image: circleci/node:8
environment:
- PATH: "/opt/yarn/yarn-v1.5.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# ANDROID
android_defaults:
<<:
docker:
- image: circleci/android:api-27-node8-alpha
resource_class: "large"
environment:
- TERM: "dumb"
- ADB_INSTALL_TIMEOUT: 10
- _JAVA_OPTIONS: "-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap"
- GRADLE_OPTS: '-Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-XX:+HeapDumpOnOutOfMemoryError"'
- BUILD_THREADS: 2
# IOS
macos_defaults:
<<:
resource_class: "large"
macos:
xcode: "9.4.0"
# -------------------------
# JOBS
# -------------------------
version: 2
jobs:
# Set up a Node environment for downstream jobs
checkout-code:
<<:
steps:
- checkout
- persist_to_workspace:
root: .
paths: .
analyse:
<<:
steps:
- attach_workspace:
at: ~/react-native-firebase
- restore-cache: *restore-yarn-cache
- run:
- save-cache: *save-yarn-cache
- run:
- run: *validate-flow-declarations
- run: *validate-ts-declarations
jet-test-ios:
<<:
steps:
- attach_workspace:
at: ~/react-native-firebase
- run:
name: Start iPhone 7 Plus simulator (background)
background: true
command: xcrun simctl boot "iPhone 7 Plus" || true
- run:
name: Configure Environment Variables
command: |
echo 'export PATH=/usr/local/opt/node@8/bin:$PATH' >> $BASH_ENV
source $BASH_ENV
# Brew
- restore-cache: *restore-brew-cache
- run: *configure-jet-detox-environment
- save-cache: *save-brew-cache
# Yarn install - to ensure detox post install builds
- restore-cache: *restore-yarn-cache
- run:
- save-cache: *save-yarn-cache
# Pods
- restore-cache: *restore-pods-cache
- run:
name: Install CocoaPods + Pod Install
command: |
cd tests/ios
curl https://cocoapods-specs.circleci.com/fetch-cocoapods-repo-from-s3.sh | bash -s cf
pod install
- save-cache: *save-pods-cache
# must always be after environment config job but before ios build
- run: *packager-jet
- run: *packager-warmup
# XCode Build
- restore-cache: *restore-ios-build-cache
- run:
name: Build iOS Testing App
command: cd tests && yarn run build-ios
- save-cache: *save-ios-build-cache
- run: mkdir ~/detox-artifacts
# Now Test \o/
- run:
name: Run Jet Tests
command: cd tests && yarn run test-ios-cover
# TODO merge coverage output from android and iOS
- run:
name: Submit Coverage
command: yarn run codecov
- store_artifacts:
path: ~/detox-artifacts
- store_artifacts:
path: ~/react-native-firebase/coverage
# -------------------------
# WORK FLOWS
# -------------------------
workflows:
version: 2
Test:
jobs:
# Checkout repo and run Yarn install at root and in tests
- checkout-code
# Run lint, flow, and typescript checks
- analyse:
requires:
- checkout-code
- jet-test-ios:
requires:
- checkout-code