# ------------------------- # ALIASES # ------------------------- aliases: # ------------------------- # CACHE # ------------------------- - &restore-yarn-cache keys: - v1-yarn-cache-{{ arch }}-{{ checksum "package.json" }}-{{ checksum "tests/package.json" }} - v1-yarn-cache-{{ arch }} - &save-yarn-cache paths: - ~/.cache/yarn key: v1-yarn-cache-{{ arch }}-{{ checksum "package.json" }}-{{ checksum "tests/package.json" }} # ------------------------- # INSTALLATION # ------------------------- - &yarn name: Run Yarn command: | yarn install --non-interactive --cache-folder ~/.cache/yarn cd tests && yarn install --non-interactive --cache-folder ~/.cache/yarn # ------------------------- # ANALYSE # ------------------------- # eslint - &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: &defaults working_directory: ~/react-native-firebase environment: - GIT_COMMIT_DESC: git log --format=oneline -n 1 $CIRCLE_SHA1 - FB_ADMIN_SERVICE_ACCOUNT: $FIREBASE_SERVICE_ACCOUNT # JAVASCRIPT js_defaults: &js_defaults <<: *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: &android_defaults <<: *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: &macos_defaults <<: *defaults resource_class: "large" macos: xcode: "9.4.0" # ------------------------- # JOBS # ------------------------- version: 2 jobs: # Set up a Node environment for downstream jobs checkout-code: <<: *js_defaults steps: - checkout - restore-cache: *restore-yarn-cache - run: *yarn - save-cache: *save-yarn-cache - persist_to_workspace: root: . paths: . analyse: <<: *js_defaults steps: - attach_workspace: at: ~/react-native-firebase - run: *eslint - run: *validate-flow-declarations - run: *validate-ts-declarations jet-test-ios: <<: *macos_defaults steps: - attach_workspace: at: ~/react-native-firebase - run: xcrun simctl boot "iPhone 7 Plus" || true - run: cd tests && yarn run packager-jet || true - run: name: Configure Environment Variables command: | echo 'export PATH=/usr/local/opt/node@8/bin:$PATH' >> $BASH_ENV source $BASH_ENV - run: name: Install Node 8 command: | brew install node@8 brew link node@8 brew tap wix/brew brew install applesimutils node -v - run: *yarn # Download CocoaPods specs via HTTPS (faster than Git) # and install CocoaPods. - run: name: Install CocoaPods command: | cd tests/ios curl https://cocoapods-specs.circleci.com/fetch-cocoapods-repo-from-s3.sh | bash -s cf pod install - run: name: Build iOS Testing App command: cd tests && yarn run build-ios - run: name: Run Jet Tests command: cd tests && yarn run test-ios-cover # ------------------------- # 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