From 1904114fb33448888192a956eb1cd123c7241c91 Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Fri, 13 Oct 2017 11:33:01 +0200 Subject: [PATCH 01/15] First attempt, play around with beta --- .circleci/config.yml | 54 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index cfc1eb70187d99..df79f1e8f25e12 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -129,6 +129,50 @@ jobs: npm test -- --maxWorkers=2 npm run lint npm run flow -- check + + # Runs unit tests on iOS devices + test-objc-ios: + <<: *defaults + macos: + xcode: "9.0" + steps: + - checkout + - run: npm install + - run: ./scripts/objc-test-ios.sh + + # Runs unit tests on tvOS devices + test-objc-tvos: + <<: *defaults + macos: + xcode: "9.0" + steps: + - checkout + - run: npm install + - run: ./scripts/objc-test-tvos.sh + + # Runs end to end tests + test-objc-e2e: + <<: *defaults + macos: + xcode: "9.0" + steps: + - checkout + - run: npm install + - run: node ./scripts/run-ci-e2e-tests.js --ios --js --retries 3; + + # Checks podspec + test-podspec: + <<: *defaults + macos: + xcode: "9.0" + steps: + - checkout + - run: npm install + - run: | + if [ -n "$CIRCLE_PR_NUMBER" ]; then + gem install cocoapods + ./scripts/process-podspecs.sh + fi test-website: <<: *defaults @@ -349,12 +393,14 @@ jobs: # Workflows enables us to run multiple jobs in parallel workflows: version: 2 + test_node: jobs: - test-node-8 - test-node-6 # Node 4 tests are already failing on Circle 1.0 # - test-node-4 + website: jobs: - test-website @@ -366,6 +412,7 @@ workflows: only: - /.*-stable/ - master + test_android: jobs: - build-js-bundle: @@ -375,3 +422,10 @@ workflows: - test-android: requires: - build-js-bundle + + test_ios: + jobs: + - test-objc-ios + - test-objc-tvos + - test-objc-e2e + - test-podspec From 1ef2f8854ab339b5ff7872801141803847d47fad Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Fri, 13 Oct 2017 11:45:13 +0200 Subject: [PATCH 02/15] Fix indent and use shared install_dependencies step --- .circleci/config.yml | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index df79f1e8f25e12..54a007e86304d3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -4,6 +4,7 @@ aliases: - v1-dependencies-{{ .Branch }}-{{ checksum "package.json" }} # Fallback in case checksum fails - v1-dependencies-{{ .Branch }}- + - &save-cache paths: - node_modules @@ -14,6 +15,7 @@ aliases: - v1-website-dependencies-{{ .Branch }}-{{ checksum "website/package.json" }} # Fallback in case checksum fails - v1-website-dependencies-{{ .Branch }}- + - &save-cache-website paths: - website/node_modules @@ -24,6 +26,7 @@ aliases: - v1-danger-dependencies-{{ .Branch }}-{{ checksum "danger/package.json" }} # Fallback in case checksum fails - v1-danger-dependencies-{{ .Branch }}- + - &save-cache-danger paths: - danger/node_modules @@ -48,6 +51,7 @@ aliases: - &restore-cache-ndk keys: - v1-android-ndk-r10e-32-64 + - &save-cache-ndk paths: - /opt/ndk @@ -79,6 +83,13 @@ aliases: - ~/watchman key: v1-watchman-v4.9.0 + - &install_node_dependencies + | + npm config set spin=false + npm config set progress=false + npm install --no-package-lock + + defaults: &defaults working_directory: ~/react-native @@ -90,7 +101,7 @@ jobs: - image: circleci/node:8 steps: - checkout - - run: npm install --no-package-lock + - run: *install_node_dependencies - run: | npm test -- --maxWorkers=2 npm run lint @@ -112,7 +123,7 @@ jobs: - image: circleci/node:6.11.0 steps: - checkout - - run: npm install + - run: *install_node_dependencies - run: | npm test -- --maxWorkers=2 npm run lint @@ -124,7 +135,7 @@ jobs: - image: circleci/node:4.8.4 steps: - checkout - - run: npm install + - run: *install_node_dependencies - run: | npm test -- --maxWorkers=2 npm run lint @@ -137,7 +148,7 @@ jobs: xcode: "9.0" steps: - checkout - - run: npm install + - run: *install_node_dependencies - run: ./scripts/objc-test-ios.sh # Runs unit tests on tvOS devices @@ -147,7 +158,7 @@ jobs: xcode: "9.0" steps: - checkout - - run: npm install + - run: *install_node_dependencies - run: ./scripts/objc-test-tvos.sh # Runs end to end tests @@ -157,7 +168,7 @@ jobs: xcode: "9.0" steps: - checkout - - run: npm install + - run: *install_node_dependencies - run: node ./scripts/run-ci-e2e-tests.js --ios --js --retries 3; # Checks podspec @@ -167,12 +178,11 @@ jobs: xcode: "9.0" steps: - checkout - - run: npm install + - run: *install_node_dependencies - run: | - if [ -n "$CIRCLE_PR_NUMBER" ]; then - gem install cocoapods - ./scripts/process-podspecs.sh - fi + if [ -n "$CIRCLE_PR_NUMBER" ]; then + gem install cocoapods && ./scripts/process-podspecs.sh + fi test-website: <<: *defaults @@ -225,7 +235,7 @@ jobs: - image: circleci/node:8 steps: - checkout - - run: npm install --no-package-lock + - run: *install_node_dependencies - run: name: Build JavaScript Bundle command: node local-cli/cli.js bundle --max-workers 2 --platform android --dev true --entry-file ReactAndroid/src/androidTest/js/TestBundle.js --bundle-output ReactAndroid/src/androidTest/assets/AndroidTestBundle.js @@ -302,7 +312,7 @@ jobs: command: | curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install -y nodejs - - run: npm install + - run: *install_node_dependencies # - restore-cache: *restore-cache-watchman # - run: # name: Install Watchman Dependencies From 6299fb15b8d8f96d63d1dc22ff348eaee2366c68 Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Fri, 13 Oct 2017 11:48:49 +0200 Subject: [PATCH 03/15] Comment out podspec tests temporarily to see if they pass on a non-PR build --- .circleci/config.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 54a007e86304d3..54fe2c1be46fe5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -180,9 +180,7 @@ jobs: - checkout - run: *install_node_dependencies - run: | - if [ -n "$CIRCLE_PR_NUMBER" ]; then - gem install cocoapods && ./scripts/process-podspecs.sh - fi + gem install cocoapods && ./scripts/process-podspecs.sh test-website: <<: *defaults From 672d634c1b7d94e27067a69adb654e69684fe163 Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Fri, 13 Oct 2017 12:27:19 +0200 Subject: [PATCH 04/15] Change OS version so CircleCI can run the test --- scripts/run-ci-e2e-tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/run-ci-e2e-tests.js b/scripts/run-ci-e2e-tests.js index 04ee69a2fbacf9..eb9bbe7c190f71 100644 --- a/scripts/run-ci-e2e-tests.js +++ b/scripts/run-ci-e2e-tests.js @@ -175,7 +175,7 @@ try { if (argv.tvos) { return exec('xcodebuild -destination "platform=tvOS Simulator,name=Apple TV 1080p,OS=10.0" -scheme EndToEndTest-tvOS -sdk appletvsimulator test | xcpretty && exit ${PIPESTATUS[0]}').code; } else { - return exec('xcodebuild -destination "platform=iOS Simulator,name=iPhone 5s,OS=10.0" -scheme EndToEndTest -sdk iphonesimulator test | xcpretty && exit ${PIPESTATUS[0]}').code; + return exec('xcodebuild -destination "platform=iOS Simulator,name=iPhone 5s,OS=10.3.1" -scheme EndToEndTest -sdk iphonesimulator test | xcpretty && exit ${PIPESTATUS[0]}').code; } }, numberOfRetries)) { From 14e4e3f78eebcef1751126e43b19dd3b36f0f40e Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Fri, 13 Oct 2017 12:35:04 +0200 Subject: [PATCH 05/15] Remove Travis config --- .travis.yml | 49 ------------------------------------------------- 1 file changed, 49 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 00abb8680236db..00000000000000 --- a/.travis.yml +++ /dev/null @@ -1,49 +0,0 @@ -language: objective-c - -osx_image: xcode8.3 - -install: - - nvm install 8 - - rm -Rf "${TMPDIR}/jest_preprocess_cache" - - brew install yarn --ignore-dependencies - - brew install watchman - - yarn install - -script: - - if [[ "$TEST_TYPE" = objc-ios ]]; then travis_retry travis_wait 30 ./scripts/objc-test-ios.sh test; fi - - if [[ "$TEST_TYPE" = objc-tvos ]]; then travis_retry travis_wait 30 ./scripts/objc-test-tvos.sh; fi - - if [[ "$TEST_TYPE" = e2e-objc ]]; then node ./scripts/run-ci-e2e-tests.js --ios --js --retries 3; fi - - if [[ ( "$TEST_TYPE" = podspecs ) && ( "$TRAVIS_PULL_REQUEST" = "false" ) ]]; then gem install cocoapods && travis_wait 30 ./scripts/process-podspecs.sh; fi - -cache: - - cocoapods - - yarn - -matrix: - - fast_finish: true # Fail the whole build as soon as one test type fails. Should help with Travis capacity issues (very long queues). - -# The order of these tests says which are more likely to run first and fail the whole build fast. -env: - - TEST_TYPE=objc-ios - - TEST_TYPE=podspecs - - TEST_TYPE=e2e-objc - - TEST_TYPE=objc-tvos - -branches: - only: - - master - - /^.*-stable$/ - -notifications: - email: - recipients: - - douglowder@mac.com # Doug Lowder built and maintains Apple TV specific code and wants to be notified about tvOS failures. - - eloy@artsy.net # Eloy DurĂ¡n maintains the podspecs test and wants to be notified about failures. - on_failure: change - on_success: change - slack: - secure: oQL2C966v7/DtxNqfM7WowjY0R5mgLHR2qHkoucwK5iVrmaptnHr8fq01xlj7VT0kDwNLqT3n4+gtCviGw89lq71m3W76c8Pms/10jpjw+LwAfQPVizNw/Bx8MFNNmjDauK/auFxaybiLZupi7zd4xFGOZvScmFdfD4CAAp2OOA= - on_pull_requests: false - on_failure: change - on_success: change - webhooks: https://code.facebook.com/travis/webhook/ From 19837d056c349b1e8cb9e6425ab18bdd6869fe4e Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Fri, 13 Oct 2017 12:39:07 +0200 Subject: [PATCH 06/15] Update some ifs --- .circleci/config.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 54fe2c1be46fe5..129d278b458391 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -110,7 +110,7 @@ jobs: - run: name: Analyze Code command: | - if [ -n "$CIRCLE_PR_NUMBER" ]; then + if [ "$CIRCLE_PR_NUMBER" ]; then npm install github@0.2.4 cat <(echo eslint; npm run lint --silent -- --format=json; echo flow; npm run flow --silent -- check --json) | GITHUB_TOKEN="af6ef0d15709bc91d""06a6217a5a826a226fb57b7" CI_USER=$CIRCLE_PROJECT_USERNAME CI_REPO=$CIRCLE_PROJECT_REPONAME PULL_REQUEST_NUMBER=$CIRCLE_PR_NUMBER node bots/code-analysis-bot.js else @@ -180,7 +180,11 @@ jobs: - checkout - run: *install_node_dependencies - run: | - gem install cocoapods && ./scripts/process-podspecs.sh + if [ "$CIRCLE_PR_NUMBER" ]; then + gem install cocoapods && ./scripts/process-podspecs.sh + else + echo "Skipping testing podspec." + fi test-website: <<: *defaults From b97f1bec74a294e0d23d1d14a494c7ddbb4a12f7 Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Fri, 13 Oct 2017 12:46:28 +0200 Subject: [PATCH 07/15] Fix wrong variable reference --- .circleci/config.yml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 129d278b458391..94ce4381ab8c4e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -106,16 +106,6 @@ jobs: npm test -- --maxWorkers=2 npm run lint npm run flow -- check -# eslint - doesn't run on non-PR builds - - run: - name: Analyze Code - command: | - if [ "$CIRCLE_PR_NUMBER" ]; then - npm install github@0.2.4 - cat <(echo eslint; npm run lint --silent -- --format=json; echo flow; npm run flow --silent -- check --json) | GITHUB_TOKEN="af6ef0d15709bc91d""06a6217a5a826a226fb57b7" CI_USER=$CIRCLE_PROJECT_USERNAME CI_REPO=$CIRCLE_PROJECT_REPONAME PULL_REQUEST_NUMBER=$CIRCLE_PR_NUMBER node bots/code-analysis-bot.js - else - echo "Skipping code analysis." - fi test-node-6: <<: *defaults @@ -180,7 +170,7 @@ jobs: - checkout - run: *install_node_dependencies - run: | - if [ "$CIRCLE_PR_NUMBER" ]; then + if [ "$CI_PULL_REQUEST" ]; then gem install cocoapods && ./scripts/process-podspecs.sh else echo "Skipping testing podspec." From a17e8e56432db52e6a94171080e11f2784132a0d Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Fri, 13 Oct 2017 12:58:45 +0200 Subject: [PATCH 08/15] Cocoapods is already on Circle --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 94ce4381ab8c4e..7b82d1cb4c9811 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -171,7 +171,7 @@ jobs: - run: *install_node_dependencies - run: | if [ "$CI_PULL_REQUEST" ]; then - gem install cocoapods && ./scripts/process-podspecs.sh + ./scripts/process-podspecs.sh else echo "Skipping testing podspec." fi From b43e749966cf723f092cde4576b6d93aabc3c43c Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Fri, 13 Oct 2017 13:01:50 +0200 Subject: [PATCH 09/15] Comments and common test step --- .circleci/config.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 7b82d1cb4c9811..3cf1f41e16e7f7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -89,12 +89,19 @@ aliases: npm config set progress=false npm install --no-package-lock + - &run_javascript_tests + | + npm test -- --maxWorkers=2 + npm run lint + npm run flow -- check defaults: &defaults working_directory: ~/react-native version: 2 jobs: + + # Runs unit tests on Node 8 test-node-8: <<: *defaults docker: @@ -102,11 +109,9 @@ jobs: steps: - checkout - run: *install_node_dependencies - - run: | - npm test -- --maxWorkers=2 - npm run lint - npm run flow -- check + - run: *run_node_tests + # Runs unit tests on Node 6 test-node-6: <<: *defaults docker: @@ -114,11 +119,9 @@ jobs: steps: - checkout - run: *install_node_dependencies - - run: | - npm test -- --maxWorkers=2 - npm run lint - npm run flow -- check + - run: *run_node_tests + # Runs unit tests on Node 4 test-node-4: <<: *defaults docker: @@ -126,10 +129,7 @@ jobs: steps: - checkout - run: *install_node_dependencies - - run: | - npm test -- --maxWorkers=2 - npm run lint - npm run flow -- check + - run: *run_node_tests # Runs unit tests on iOS devices test-objc-ios: From 03f7affa627414e5d7c729fcb74940baed93f9d1 Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Fri, 13 Oct 2017 15:01:05 +0200 Subject: [PATCH 10/15] Prestart iOS simulator and run podspec tests on PRs as well --- .circleci/config.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3cf1f41e16e7f7..0f08f53de16216 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -136,6 +136,9 @@ jobs: <<: *defaults macos: xcode: "9.0" + dependencies: + pre: + - xcrun instruments -w "iPhone 5s (10.3.1)" || true steps: - checkout - run: *install_node_dependencies @@ -146,6 +149,9 @@ jobs: <<: *defaults macos: xcode: "9.0" + dependencies: + pre: + - xcrun instruments -w "Apple TV 1080p (10.0)" || true steps: - checkout - run: *install_node_dependencies @@ -156,6 +162,9 @@ jobs: <<: *defaults macos: xcode: "9.0" + dependencies: + pre: + - xcrun instruments -w "iPhone 5s (10.3.1)" || true steps: - checkout - run: *install_node_dependencies @@ -169,12 +178,7 @@ jobs: steps: - checkout - run: *install_node_dependencies - - run: | - if [ "$CI_PULL_REQUEST" ]; then - ./scripts/process-podspecs.sh - else - echo "Skipping testing podspec." - fi + - run: ./scripts/process-podspecs.sh test-website: <<: *defaults @@ -429,5 +433,5 @@ workflows: jobs: - test-objc-ios - test-objc-tvos - - test-objc-e2e - test-podspec + - test-objc-e2e From bf7dfdeff72c9c51eda6bf20ad814d172c2b36f5 Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Fri, 13 Oct 2017 15:12:34 +0200 Subject: [PATCH 11/15] Fix typo --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0f08f53de16216..6ba9ddce71839e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -89,7 +89,7 @@ aliases: npm config set progress=false npm install --no-package-lock - - &run_javascript_tests + - &run_node_tests | npm test -- --maxWorkers=2 npm run lint From a979ea834f5241a7b46c9031241fa979179ea81b Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Fri, 13 Oct 2017 15:23:06 +0200 Subject: [PATCH 12/15] Use node cache --- .circleci/config.yml | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6ba9ddce71839e..775d8485f4e106 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,11 +1,11 @@ aliases: - - &restore-cache + - &restore-node-cache keys: - v1-dependencies-{{ .Branch }}-{{ checksum "package.json" }} # Fallback in case checksum fails - v1-dependencies-{{ .Branch }}- - - &save-cache + - &save-node-cache paths: - node_modules key: v1-dependencies-{{ .Branch }}-{{ checksum "package.json" }} @@ -108,7 +108,9 @@ jobs: - image: circleci/node:8 steps: - checkout + - restore-cache: *restore_node_cache - run: *install_node_dependencies + - save-cache: *save_node_cache - run: *run_node_tests # Runs unit tests on Node 6 @@ -118,7 +120,9 @@ jobs: - image: circleci/node:6.11.0 steps: - checkout + - restore-cache: *restore_node_cache - run: *install_node_dependencies + - save-cache: *save_node_cache - run: *run_node_tests # Runs unit tests on Node 4 @@ -128,7 +132,9 @@ jobs: - image: circleci/node:4.8.4 steps: - checkout + - restore-cache: *restore_node_cache - run: *install_node_dependencies + - save-cache: *save_node_cache - run: *run_node_tests # Runs unit tests on iOS devices @@ -141,7 +147,9 @@ jobs: - xcrun instruments -w "iPhone 5s (10.3.1)" || true steps: - checkout + - restore-cache: *restore_node_cache - run: *install_node_dependencies + - save-cache: *save_node_cache - run: ./scripts/objc-test-ios.sh # Runs unit tests on tvOS devices @@ -154,7 +162,9 @@ jobs: - xcrun instruments -w "Apple TV 1080p (10.0)" || true steps: - checkout + - restore-cache: *restore_node_cache - run: *install_node_dependencies + - save-cache: *save_node_cache - run: ./scripts/objc-test-tvos.sh # Runs end to end tests @@ -167,7 +177,9 @@ jobs: - xcrun instruments -w "iPhone 5s (10.3.1)" || true steps: - checkout + - restore-cache: *restore_node_cache - run: *install_node_dependencies + - save-cache: *save_node_cache - run: node ./scripts/run-ci-e2e-tests.js --ios --js --retries 3; # Checks podspec @@ -177,7 +189,9 @@ jobs: xcode: "9.0" steps: - checkout + - restore-cache: *restore_node_cache - run: *install_node_dependencies + - save-cache: *save_node_cache - run: ./scripts/process-podspecs.sh test-website: @@ -231,7 +245,9 @@ jobs: - image: circleci/node:8 steps: - checkout + - restore-cache: *restore_node_cache - run: *install_node_dependencies + - save-cache: *save_node_cache - run: name: Build JavaScript Bundle command: node local-cli/cli.js bundle --max-workers 2 --platform android --dev true --entry-file ReactAndroid/src/androidTest/js/TestBundle.js --bundle-output ReactAndroid/src/androidTest/assets/AndroidTestBundle.js @@ -308,7 +324,9 @@ jobs: command: | curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install -y nodejs + - restore-cache: *restore_node_cache - run: *install_node_dependencies + - save-cache: *save_node_cache # - restore-cache: *restore-cache-watchman # - run: # name: Install Watchman Dependencies From 684089d06c88124551212247a4de4a098a30f69e Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Fri, 13 Oct 2017 15:27:01 +0200 Subject: [PATCH 13/15] Fix typos --- .circleci/config.yml | 64 ++++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 775d8485f4e106..55195c30227a0b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -83,13 +83,13 @@ aliases: - ~/watchman key: v1-watchman-v4.9.0 - - &install_node_dependencies + - &install-node-dependencies | npm config set spin=false npm config set progress=false npm install --no-package-lock - - &run_node_tests + - &run-node-tests | npm test -- --maxWorkers=2 npm run lint @@ -108,10 +108,10 @@ jobs: - image: circleci/node:8 steps: - checkout - - restore-cache: *restore_node_cache - - run: *install_node_dependencies - - save-cache: *save_node_cache - - run: *run_node_tests + - restore-cache: *restore-node-cache + - run: *install-node-dependencies + - save-cache: *save-node-cache + - run: *run-node-tests # Runs unit tests on Node 6 test-node-6: @@ -120,10 +120,10 @@ jobs: - image: circleci/node:6.11.0 steps: - checkout - - restore-cache: *restore_node_cache - - run: *install_node_dependencies - - save-cache: *save_node_cache - - run: *run_node_tests + - restore-cache: *restore-node-cache + - run: *install-node-dependencies + - save-cache: *save-node-cache + - run: *run-node-tests # Runs unit tests on Node 4 test-node-4: @@ -132,10 +132,10 @@ jobs: - image: circleci/node:4.8.4 steps: - checkout - - restore-cache: *restore_node_cache - - run: *install_node_dependencies - - save-cache: *save_node_cache - - run: *run_node_tests + - restore-cache: *restore-node-cache + - run: *install-node-dependencies + - save-cache: *save-node-cache + - run: *run-node-tests # Runs unit tests on iOS devices test-objc-ios: @@ -147,9 +147,9 @@ jobs: - xcrun instruments -w "iPhone 5s (10.3.1)" || true steps: - checkout - - restore-cache: *restore_node_cache - - run: *install_node_dependencies - - save-cache: *save_node_cache + - restore-cache: *restore-node-cache + - run: *install-node-dependencies + - save-cache: *save-node-cache - run: ./scripts/objc-test-ios.sh # Runs unit tests on tvOS devices @@ -162,9 +162,9 @@ jobs: - xcrun instruments -w "Apple TV 1080p (10.0)" || true steps: - checkout - - restore-cache: *restore_node_cache - - run: *install_node_dependencies - - save-cache: *save_node_cache + - restore-cache: *restore-node-cache + - run: *install-node-dependencies + - save-cache: *save-node-cache - run: ./scripts/objc-test-tvos.sh # Runs end to end tests @@ -177,9 +177,9 @@ jobs: - xcrun instruments -w "iPhone 5s (10.3.1)" || true steps: - checkout - - restore-cache: *restore_node_cache - - run: *install_node_dependencies - - save-cache: *save_node_cache + - restore-cache: *restore-node-cache + - run: *install-node-dependencies + - save-cache: *save-node-cache - run: node ./scripts/run-ci-e2e-tests.js --ios --js --retries 3; # Checks podspec @@ -189,9 +189,9 @@ jobs: xcode: "9.0" steps: - checkout - - restore-cache: *restore_node_cache - - run: *install_node_dependencies - - save-cache: *save_node_cache + - restore-cache: *restore-node-cache + - run: *install-node-dependencies + - save-cache: *save-node-cache - run: ./scripts/process-podspecs.sh test-website: @@ -245,9 +245,9 @@ jobs: - image: circleci/node:8 steps: - checkout - - restore-cache: *restore_node_cache - - run: *install_node_dependencies - - save-cache: *save_node_cache + - restore-cache: *restore-node-cache + - run: *install-node-dependencies + - save-cache: *save-node-cache - run: name: Build JavaScript Bundle command: node local-cli/cli.js bundle --max-workers 2 --platform android --dev true --entry-file ReactAndroid/src/androidTest/js/TestBundle.js --bundle-output ReactAndroid/src/androidTest/assets/AndroidTestBundle.js @@ -324,9 +324,9 @@ jobs: command: | curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install -y nodejs - - restore-cache: *restore_node_cache - - run: *install_node_dependencies - - save-cache: *save_node_cache + - restore-cache: *restore-node-cache + - run: *install-node-dependencies + - save-cache: *save-node-cache # - restore-cache: *restore-cache-watchman # - run: # name: Install Watchman Dependencies From 4cf9f628c09d4717e026823b79b875dbca8571dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ramos?= <165856+hramos@users.noreply.github.com> Date: Fri, 13 Oct 2017 12:10:52 -0700 Subject: [PATCH 14/15] Update config.yml --- .circleci/config.yml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 55195c30227a0b..967b4832c26f8b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -85,9 +85,7 @@ aliases: - &install-node-dependencies | - npm config set spin=false - npm config set progress=false - npm install --no-package-lock + npm install --no-package-lock --no-spin --no-progress - &run-node-tests | @@ -102,7 +100,7 @@ version: 2 jobs: # Runs unit tests on Node 8 - test-node-8: + test-js-node-8: <<: *defaults docker: - image: circleci/node:8 @@ -114,7 +112,7 @@ jobs: - run: *run-node-tests # Runs unit tests on Node 6 - test-node-6: + test-js-node-6: <<: *defaults docker: - image: circleci/node:6.11.0 @@ -126,7 +124,7 @@ jobs: - run: *run-node-tests # Runs unit tests on Node 4 - test-node-4: + test-js-node-4: <<: *defaults docker: - image: circleci/node:4.8.4 @@ -327,6 +325,7 @@ jobs: - restore-cache: *restore-node-cache - run: *install-node-dependencies - save-cache: *save-node-cache +# TODO: Install and use watchman to speed up builds # - restore-cache: *restore-cache-watchman # - run: # name: Install Watchman Dependencies @@ -390,11 +389,11 @@ jobs: - run: name: Build and Install Test APK command: source scripts/circle-ci-android-setup.sh && NO_BUCKD=1 retry3 buck install ReactAndroid/src/androidTest/buck-runner:instrumentation-tests --config build.threads=$BUILD_THREADS -# Failing test is expected +# TODO: Uncomment, test was already failing on Circle 1.0 # - run: # name: Run Installed APK with Tests # command: node ./scripts/run-android-ci-instrumentation-tests.js --retries 3 --path ./ReactAndroid/src/androidTest/java/com/facebook/react/tests --package com.facebook.react.tests -# Should be disabled pending on https://our.intern.facebook.com/intern/tasks?t=16912142 +# TODO: Should be disabled, pending on https://our.intern.facebook.com/intern/tasks?t=16912142 # - run: # name: Run Android End to End Tests # command: source scripts/circle-ci-android-setup.sh && retry3 node ./scripts/run-ci-e2e-tests.js --android --js --retries 2 @@ -406,7 +405,7 @@ jobs: mkdir -p ~/junit/ find . -type f -regex ".*/build/test-results/debug/.*xml" -exec cp {} ~/junit/ \; find . -type f -regex ".*/outputs/androidTest-results/connected/.*xml" -exec cp {} ~/junit/ \; -# TODO circle does not understand Buck's report, maybe need to transform xml slightly +# TODO: Circle does not understand Buck's report, maybe need to transform xml slightly # find . -type f -regex ".*/buck-out/gen/ReactAndroid/src/test/.*/.*xml" -exec cp {} ~/junit/ \; when: always - store_test_results: @@ -420,10 +419,10 @@ workflows: test_node: jobs: - - test-node-8 - - test-node-6 -# Node 4 tests are already failing on Circle 1.0 -# - test-node-4 + - test-js-node-8 + - test-js-node-6 +# TODO: Node 4 tests are already failing on Circle 1.0 +# - test-js-node-4 website: jobs: @@ -451,5 +450,6 @@ workflows: jobs: - test-objc-ios - test-objc-tvos - - test-podspec +# TODO: Podspec tests are already failing on Travis +# - test-podspec - test-objc-e2e From d751e1e2c542b1b524e3105b2f794c967f24ab31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ramos?= <165856+hramos@users.noreply.github.com> Date: Fri, 13 Oct 2017 12:32:32 -0700 Subject: [PATCH 15/15] Update cache keys Use {{ arch }} to maintain separate caches for macOS and Ubuntu, as the paths differ across OSs. This should only be required by the node_modules cache for now, but I'm updating all cache keys to prevent future breakage if we reuse these caches across OSs. --- .circleci/config.yml | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 967b4832c26f8b..5a41bcb7fb256f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,42 +1,42 @@ aliases: - &restore-node-cache keys: - - v1-dependencies-{{ .Branch }}-{{ checksum "package.json" }} + - v1-dependencies-{{ arch }}-{{ .Branch }}-{{ checksum "package.json" }} # Fallback in case checksum fails - - v1-dependencies-{{ .Branch }}- + - v1-dependencies-{{ arch }}-{{ .Branch }}- - &save-node-cache paths: - node_modules - key: v1-dependencies-{{ .Branch }}-{{ checksum "package.json" }} + key: v1-dependencies-{{ arch }}-{{ .Branch }}-{{ checksum "package.json" }} - &restore-cache-website keys: - - v1-website-dependencies-{{ .Branch }}-{{ checksum "website/package.json" }} + - v1-website-dependencies-{{ arch }}-{{ .Branch }}-{{ checksum "website/package.json" }} # Fallback in case checksum fails - - v1-website-dependencies-{{ .Branch }}- + - v1-website-dependencies-{{ arch }}-{{ .Branch }}- - &save-cache-website paths: - website/node_modules - key: v1-website-dependencies-{{ .Branch }}-{{ checksum "website/package.json" }} + key: v1-website-dependencies-{{ arch }}-{{ .Branch }}-{{ checksum "website/package.json" }} - &restore-cache-danger keys: - - v1-danger-dependencies-{{ .Branch }}-{{ checksum "danger/package.json" }} + - v1-danger-dependencies-{{ arch }}-{{ .Branch }}-{{ checksum "danger/package.json" }} # Fallback in case checksum fails - - v1-danger-dependencies-{{ .Branch }}- + - v1-danger-dependencies-{{ arch }}-{{ .Branch }}- - &save-cache-danger paths: - danger/node_modules - key: v1-danger-dependencies-{{ .Branch }}-{{ checksum "danger/package.json" }} + key: v1-danger-dependencies-{{ arch }}-{{ .Branch }}-{{ checksum "danger/package.json" }} - &restore-cache-android-packages keys: - - v1-android-sdkmanager-packages-{{ checksum "scripts/circle-ci-android-setup.sh" }} + - v1-android-sdkmanager-packages-{{ arch }}-{{ checksum "scripts/circle-ci-android-setup.sh" }} # Fallback in case checksum fails - - v1-android-sdkmanager-packages- + - v1-android-sdkmanager-packages-{{ arch }}- - &save-cache-android-packages paths: - /opt/android/sdk/system-images/android-23 @@ -46,42 +46,42 @@ aliases: - /opt/android/sdk/platforms/android-19 - /opt/android/sdk/build-tools/23.0.1 - /opt/android/sdk/add-ons/addon-google_apis-google-23 - key: v1-android-sdkmanager-packages-{{ checksum "scripts/circle-ci-android-setup.sh" }} + key: v1-android-sdkmanager-packages-{{ arch }}-{{ checksum "scripts/circle-ci-android-setup.sh" }} - &restore-cache-ndk keys: - - v1-android-ndk-r10e-32-64 + - v1-android-ndk-{{ arch }}-r10e-32-64 - &save-cache-ndk paths: - /opt/ndk - key: v1-android-ndk-r10e-32-64 + key: v1-android-ndk-{{ arch }}-r10e-32-64 - &restore-cache-buck-downloads keys: - - v1-buck-downloads-{{ .Branch }}-{{ checksum "ReactAndroid/build.gradle" }} + - v1-buck-downloads-{{ arch }}-{{ .Branch }}-{{ checksum "ReactAndroid/build.gradle" }} # Fallback in case checksum fails - - v1-buck-downloads-{{ .Branch }}- + - v1-buck-downloads-{{ arch }}-{{ .Branch }}- - &save-cache-buck-downloads paths: - "ReactAndroid/build/downloads" - key: v1-buck-downloads-{{ .Branch }}-{{ checksum "ReactAndroid/build.gradle" }} + key: v1-buck-downloads-{{ arch }}-{{ .Branch }}-{{ checksum "ReactAndroid/build.gradle" }} - &restore-cache-buck keys: - - v1-buck-v2017.09.04.02 + - v1-buck-{{ arch }}-v2017.09.04.02 - &save-cache-buck paths: - ~/buck - key: v1-buck-v2017.09.04.02 + key: v1-buck-{{ arch }}-v2017.09.04.02 - &restore-cache-watchman keys: - - v1-watchman-v4.9.0 + - v1-watchman-{{ arch }}-v4.9.0 - &save-cache-watchman paths: - ~/watchman - key: v1-watchman-v4.9.0 + key: v1-watchman-{{ arch }}-v4.9.0 - &install-node-dependencies |