11aliases :
22 - &restore-node-cache
33 keys :
4- - v1-dependencies-{{ arch }}-{{ .Branch }}-{{ checksum "package.json" }}
4+ - v1-dependencies-{{ arch }}-{{ checksum "package.json" }}
55 # Fallback in case checksum fails
6- - v1-dependencies-{{ arch }}-{{ .Branch }}-
6+ - v1-dependencies-{{ arch }}-
77
88 - &save-node-cache
99 paths :
1010 - node_modules
11- key : v1-dependencies-{{ arch }}-{{ .Branch }}-{{ checksum "package.json" }}
11+ key : v1-dependencies-{{ arch }}-{{ checksum "package.json" }}
1212
1313 - &restore-cache-analysis
1414 keys :
15- - v1-analysis-dependencies-{{ arch }}-{{ .Branch }}-{{ checksum "package.json" }}{{ checksum "danger/package.json" }}
15+ - v1-analysis-dependencies-{{ arch }}-{{ checksum "package.json" }}{{ checksum "danger/package.json" }}
1616 # Fallback in case checksum fails
17- - v1-analysis-dependencies-{{ arch }}-{{ .Branch }}-
17+ - v1-analysis-dependencies-{{ arch }}-
1818 - &save-cache-analysis
1919 paths :
2020 - danger/node_modules
2121 - node_modules
22- key : v1-analysis-dependencies-{{ arch }}-{{ .Branch }}-{{ checksum "package.json" }}{{ checksum "danger/package.json" }}
22+ key : v1-analysis-dependencies-{{ arch }}-{{ checksum "package.json" }}{{ checksum "danger/package.json" }}
2323
2424 - &restore-cache-android-packages
2525 keys :
26- - v1 -android-sdkmanager-packages-{{ arch }}-{{ checksum "scripts/circle-ci-android-setup.sh" }}
26+ - v2 -android-sdkmanager-packages-{{ arch }}-{{ checksum "scripts/circle-ci-android-setup.sh" }}
2727 # Fallback in case checksum fails
28- - v1 -android-sdkmanager-packages-{{ arch }}-
28+ - v2 -android-sdkmanager-packages-{{ arch }}-
2929 - &save-cache-android-packages
3030 paths :
31- - /opt/android/sdk/system-images/android-23
32- - /opt/android/sdk/system-images/android-19
33- - /opt/android/sdk/platforms/android-26
34- - /opt/android/sdk/platforms/android-23
35- - /opt/android/sdk/platforms/android-19
36- - /opt/android/sdk/build-tools/23.0.1
37- - /opt/android/sdk/add-ons/addon-google_apis-google-23
38- key : v1-android-sdkmanager-packages-{{ arch }}-{{ checksum "scripts/circle-ci-android-setup.sh" }}
31+ - /opt/android/sdk
32+ key : v2-android-sdkmanager-packages-{{ arch }}-{{ checksum "scripts/circle-ci-android-setup.sh" }}
3933
4034 - &restore-cache-ndk
4135 keys :
@@ -50,23 +44,13 @@ aliases:
5044 - /opt/ndk
5145 key : v1-android-ndk-{{ arch }}-r10e-32-64
5246
53- - &restore-cache-buck-downloads
54- keys :
55- - v1-buck-downloads-{{ arch }}-{{ .Branch }}-{{ checksum "ReactAndroid/build.gradle" }}
56- # Fallback in case checksum fails
57- - v1-buck-downloads-{{ arch }}-{{ .Branch }}-
58- - &save-cache-buck-downloads
59- paths :
60- - " ReactAndroid/build/downloads"
61- key : v1-buck-downloads-{{ arch }}-{{ .Branch }}-{{ checksum "ReactAndroid/build.gradle" }}
62-
6347 - &restore-cache-buck
6448 keys :
65- - v1 -buck-{{ arch }}-v2017.11.16.01
49+ - v2 -buck-{{ arch }}-v2017.11.16.01
6650 - &save-cache-buck
6751 paths :
6852 - ~/buck
69- key : v1 -buck-{{ arch }}-v2017.11.16.01
53+ key : v2 -buck-{{ arch }}-v2017.11.16.01
7054
7155 - &restore-cache-watchman
7256 keys :
@@ -83,7 +67,7 @@ aliases:
8367 - &install-buck
8468 |
8569 if [[ ! -e ~/buck ]]; then
86- git clone https://github.com/facebook/buck.git ~/buck --branch v2017.09.04.02 --depth=1
70+ git clone https://github.com/facebook/buck.git ~/buck --branch v2017.11.16.01 --depth=1
8771 fi
8872 cd ~/buck && ant
8973 buck --version
@@ -151,14 +135,45 @@ aliases:
151135 sudo apt-get update -y
152136 sudo apt-get install ant autoconf automake g++ gcc libqt5widgets5 lib32z1 lib32stdc++6 make maven python-dev python3-dev qml-module-qtquick-controls qtdeclarative5-dev file -y
153137
154- - &install-android-app-dependencies
155- |
156- buck fetch ReactAndroid/src/test/java/com/facebook/react/modules
157- buck fetch ReactAndroid/src/main/java/com/facebook/react
158- buck fetch ReactAndroid/src/main/java/com/facebook/react/shell
159- buck fetch ReactAndroid/src/test/...
160- buck fetch ReactAndroid/src/androidTest/...
161- ./gradlew :ReactAndroid:downloadBoost :ReactAndroid:downloadDoubleConversion :ReactAndroid:downloadFolly :ReactAndroid:downloadGlog :ReactAndroid:downloadJSCHeaders
138+ - &build-android-app
139+ name : Build Android App
140+ command : |
141+ buck build ReactAndroid/src/main/java/com/facebook/react
142+ buck build ReactAndroid/src/main/java/com/facebook/react/shell
143+
144+ - &wait-for-avd
145+ name : Wait for Android Virtual Device
146+ command : source scripts/circle-ci-android-setup.sh && waitForAVD
147+
148+ - &check-js-bundle
149+ name : Check for JavaScript Bundle
150+ command : |
151+ if [[ ! -e ReactAndroid/src/androidTest/assets/AndroidTestBundle.js ]]; then
152+ echo "JavaScript bundle missing, verify build-js-bundle step"; exit 1;
153+ else
154+ echo "JavaScript bundle found.";
155+ fi
156+
157+ - &compile-native-libs
158+ name : Compile Native Libs for Unit and Integration Tests
159+ command : ./gradlew :ReactAndroid:packageReactNdkLibsForBuck -Pjobs=$BUILD_THREADS -Pcom.android.build.threadPoolSize=1
160+ no_output_timeout : 6m
161+
162+ - &run-android-unit-tests
163+ name : Unit Tests
164+ command : buck test ReactAndroid/src/test/... --config build.threads=$BUILD_THREADS
165+
166+ - &run-android-integration-tests
167+ name : Build and Install Test APK
168+ 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
169+
170+ - &collect-android-test-results
171+ name : Collect Test Results
172+ command : |
173+ mkdir -p ~/junit/
174+ find . -type f -regex ".*/build/test-results/debug/.*xml" -exec cp {} ~/junit/ \;
175+ find . -type f -regex ".*/outputs/androidTest-results/connected/.*xml" -exec cp {} ~/junit/ \;
176+ when : always
162177
163178defaults : &defaults
164179 working_directory : ~/react-native
@@ -295,9 +310,12 @@ jobs:
295310 - restore-cache : *restore-node-cache
296311 - run : *install-node-dependencies
297312 - save-cache : *save-node-cache
298- - restore-cache : *restore-cache-buck-downloads
299- - run : *install-android-app-dependencies
300- - save-cache : *save-cache-buck-downloads
313+ - run : buck fetch ReactAndroid/src/test/java/com/facebook/react/modules
314+ - run : buck fetch ReactAndroid/src/main/java/com/facebook/react
315+ - run : buck fetch ReactAndroid/src/main/java/com/facebook/react/shell
316+ - run : buck fetch ReactAndroid/src/test/...
317+ - run : buck fetch ReactAndroid/src/androidTest/...
318+ - run : ./gradlew :ReactAndroid:downloadBoost :ReactAndroid:downloadDoubleConversion :ReactAndroid:downloadFolly :ReactAndroid:downloadGlog :ReactAndroid:downloadJSCHeaders
301319
302320 - run :
303321 name : Publish React Native Package
@@ -359,63 +377,42 @@ jobs:
359377 - restore-cache : *restore-cache-ndk
360378 - run : *install-ndk
361379 - save-cache : *save-cache-ndk
380+
362381 - restore-cache : *restore-cache-buck
363382 - run : *install-buck
364383 - save-cache : *save-cache-buck
384+
365385 - run : *install-node
386+
366387 - restore-cache : *restore-node-cache
367388 - run : *install-node-dependencies
368389 - save-cache : *save-node-cache
369- - restore-cache : *restore-cache-buck-downloads
370- - run : *install-android-app-dependencies
371- - save-cache : *save-cache-buck-downloads
372390
373- - run :
374- name : Build Android App
375- command : |
376- buck build ReactAndroid/src/main/java/com/facebook/react
377- buck build ReactAndroid/src/main/java/com/facebook/react/shell
378-
379- # Wait for AVD to finish booting before running tests
380- - run :
381- name : Wait for Android Virtual Device
382- command : source scripts/circle-ci-android-setup.sh && waitForAVD
383-
391+ - run : buck fetch ReactAndroid/src/test/java/com/facebook/react/modules
392+ - run : buck fetch ReactAndroid/src/main/java/com/facebook/react
393+ - run : buck fetch ReactAndroid/src/main/java/com/facebook/react/shell
394+ - run : buck fetch ReactAndroid/src/test/...
395+ - run : buck fetch ReactAndroid/src/androidTest/...
396+ - run : ./gradlew :ReactAndroid:downloadBoost :ReactAndroid:downloadDoubleConversion :ReactAndroid:downloadFolly :ReactAndroid:downloadGlog :ReactAndroid:downloadJSCHeaders
397+
398+ - run : *build-android-app
399+ - run : *compile-native-libs
400+
384401 # The JavaScript Bundle is built as part of the build-js-bundle workflow,
385402 # and is required for instrumentation tests.
386403 - attach_workspace :
387404 at : ReactAndroid/src/androidTest/assets/
388- - run :
389- name : Check for JavaScript Bundle
390- command : |
391- if [[ ! -e ReactAndroid/src/androidTest/assets/AndroidTestBundle.js ]]; then
392- echo "JavaScript bundle missing, verify build-js-bundle step"; exit 1;
393- else
394- echo "JavaScript bundle found.";
395- fi
396-
405+ - run : *check-js-bundle
406+
407+ # Wait for AVD to finish booting before running tests
408+ - run : *wait-for-avd
409+
397410 # Tests
398- - run :
399- name : Compile Native Libs for Unit and Integration Tests
400- command : ./gradlew :ReactAndroid:packageReactNdkLibsForBuck -Pjobs=$BUILD_THREADS -Pcom.android.build.threadPoolSize=1
401- no_output_timeout : 6m
402- - run :
403- name : Unit Tests
404- command : buck test ReactAndroid/src/test/... --config build.threads=$BUILD_THREADS
405-
406- # Integration Tests
407- - run :
408- name : Build and Install Test APK
409- 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
411+ - run : *run-android-unit-tests
412+ - run : *run-android-integration-tests
410413
411414 # post (always runs)
412- - run :
413- name : Collect Test Results
414- command : |
415- mkdir -p ~/junit/
416- find . -type f -regex ".*/build/test-results/debug/.*xml" -exec cp {} ~/junit/ \;
417- find . -type f -regex ".*/outputs/androidTest-results/connected/.*xml" -exec cp {} ~/junit/ \;
418- when : always
415+ - run : *collect-android-test-results
419416 - store_test_results :
420417 path : ~/junit
421418 - store_artifacts :
@@ -457,7 +454,8 @@ jobs:
457454 else
458455 echo "Skipping code analysis."
459456 fi
460-
457+ when : always
458+
461459# Workflows enables us to run multiple jobs in parallel
462460workflows :
463461 version : 2
0 commit comments