1+ ---
12version : 2
23
34x-config :
4- - &restore-cache-yarn
5- keys :
6- - ' v2-dependencies-{{ checksum "yarn.lock" }}'
7- - ' v2-dependencies-'
8- - &save-cache-yarn
9- paths : [~/.cache/yarn]
10- key : ' v2-dependencies-{{ checksum "yarn.lock" }}'
5+ x-caching : # caching instructions
6+ - &save-cache-yarn
7+ key : ' v3-yarn-dependencies-{{ arch }}-{{ checksum "yarn.lock" }}'
8+ paths : [~/.cache/yarn, ~/Library/Caches/Yarn]
9+ - &restore-cache-yarn
10+ key : ' v3-yarn-dependencies-{{ arch }}-{{ checksum "yarn.lock" }}'
11+ - &save-cache-bundler
12+ key : ' v2-ruby-dependencies-{{ arch }}-{{ checksum "Gemfile.lock" }}'
13+ paths : [./vendor/bundle]
14+ - &restore-cache-bundler
15+ key : ' v2-ruby-dependencies-{{ arch }}-{{ checksum "Gemfile.lock" }}'
16+ - &save-cache-gradle
17+ key : ' v1-gradle-dependencies-{{ arch }}-{{ checksum "android/build.gradle" }}-{{ checksum "android/app/build.gradle" }}-{{ checksum "node_modules/react-native/package.json" }}'
18+ paths : [~/.gradle]
19+ - &restore-cache-gradle
20+ key : ' v1-gradle-dependencies-{{ arch }}-{{ checksum "android/build.gradle" }}-{{ checksum "android/app/build.gradle" }}-{{ checksum "node_modules/react-native/package.json" }}'
21+ x-commands : # command shorthands
22+ - &set-ruby-version
23+ name : Set Ruby Version
24+ command : echo "ruby-2.4.2" > ~/.ruby-version
25+ - &run-danger
26+ command : yarn run danger --id $task
27+ when : always
1128
1229workflows :
1330 version : 2
1431 analyze :
1532 jobs :
16- - danger
17- - flow
18- - jest
19- - prettier
20- - eslint
21- - data
33+ - cache-yarn-linux
34+ - danger : {requires: [cache-yarn-linux]}
35+ - flow : {requires: [cache-yarn-linux]}
36+ - jest : {requires: [cache-yarn-linux]}
37+ - prettier : {requires: [cache-yarn-linux]}
38+ - eslint : {requires: [cache-yarn-linux]}
39+ - data : {requires: [cache-yarn-linux]}
40+ - ios : {requires: [danger, flow, jest, prettier, eslint, data]}
41+ - android : {requires: [danger, flow, jest, prettier, eslint, data]}
2242
2343jobs :
44+ cache-yarn-linux :
45+ docker : [{image: 'circleci/node:8'}]
46+ steps :
47+ - checkout
48+ - restore_cache : *restore-cache-yarn
49+ - run : yarn install --frozen-lockfile
50+ - run : yarn --version
51+ - save_cache : *save-cache-yarn
52+
2453 danger :
2554 docker : [{image: 'circleci/node:8'}]
26- environment : {task: JS-general}
55+ environment :
56+ task : JS-general
2757 steps :
2858 - checkout
2959 - restore_cache : *restore-cache-yarn
30- - run : yarn install
60+ - run : yarn install --frozen-lockfile
3161 - save_cache : *save-cache-yarn
32- - run : yarn run danger --id $task
62+ - run : * run-danger
3363
3464 flow :
3565 docker : [{image: 'circleci/node:8'}]
36- environment : {task: JS-flow}
66+ environment :
67+ task : JS-flow
3768 steps :
3869 - checkout
3970 - restore_cache : *restore-cache-yarn
40- - run : yarn install
71+ - run : yarn install --frozen-lockfile
4172 - save_cache : *save-cache-yarn
4273 - run : mkdir -p logs/
4374 - run : yarn run bundle-data
4475 - run : yarn run --silent flow check --quiet | tee logs/flow
45- - run : yarn run danger --id $task
76+ - run : * run-danger
4677
4778 jest :
4879 docker : [{image: 'circleci/node:8'}]
49- environment : {task: JS-jest}
80+ environment :
81+ task : JS-jest
82+ JEST_JUNIT_OUTPUT : ./test-results/jest/junit.xml
5083 steps :
5184 - checkout
5285 - restore_cache : *restore-cache-yarn
53- - run : yarn install
86+ - run : yarn install --frozen-lockfile
5487 - save_cache : *save-cache-yarn
55- - run : mkdir -p logs/
88+ - run : mkdir -p logs/ test-results/jest/
5689 - run : yarn run bundle-data
57- - run : yarn run --silent test --coverage 2>&1 | tee logs/jest
58- - run : yarn run danger --id $task
90+ - run : yarn run --silent test --coverage --testResultsProcessor="jest-junit" 2>&1 | tee logs/jest
91+ - run : *run-danger
92+ - store_test_results :
93+ path : ./test-results
5994 - run : yarn global add coveralls
6095 - run :
6196 name : coveralls
@@ -67,11 +102,12 @@ jobs:
67102
68103 prettier :
69104 docker : [{image: 'circleci/node:8'}]
70- environment : {task: JS-prettier}
105+ environment :
106+ task : JS-prettier
71107 steps :
72108 - checkout
73109 - restore_cache : *restore-cache-yarn
74- - run : yarn install
110+ - run : yarn install --frozen-lockfile
75111 - save_cache : *save-cache-yarn
76112 - run : mkdir -p logs/
77113 - run : yarn run prettier
@@ -82,30 +118,89 @@ jobs:
82118 if ! git diff --quiet *.js source/ scripts/; then
83119 git diff *.js source/ scripts/ | tee logs/prettier
84120 fi
85- - run : yarn run danger --id $task
121+ - run : * run-danger
86122
87123 eslint :
88124 docker : [{image: 'circleci/node:8'}]
89- environment : {task: JS-lint}
125+ environment :
126+ task : JS-lint
90127 steps :
91128 - checkout
92129 - restore_cache : *restore-cache-yarn
93- - run : yarn install
130+ - run : yarn install --frozen-lockfile
94131 - save_cache : *save-cache-yarn
95- - run : mkdir -p logs/
132+ - run : mkdir -p logs/ test-results/eslint/
96133 - run : yarn run bundle-data
97134 - run : yarn run --silent lint | tee logs/eslint
98- - run : yarn run danger --id $task
135+ - run : yarn run --silent lint --format junit > test-results/eslint/junit.xml
136+ - run : *run-danger
137+ - store_test_results :
138+ path : ./test-results
99139
100140 data :
101141 docker : [{image: 'circleci/node:8'}]
102- environment : {task: JS-data}
142+ environment :
143+ task : JS-data
103144 steps :
104145 - checkout
105146 - restore_cache : *restore-cache-yarn
106- - run : yarn install
147+ - run : yarn install --frozen-lockfile
107148 - save_cache : *save-cache-yarn
108149 - run : mkdir -p logs/
109150 - run : yarn run --silent validate-data --quiet | tee logs/validate-data
110151 - run : yarn run --silent validate-bus-data | tee logs/validate-bus-data
111- - run : yarn run danger --id $task
152+ - run : *run-danger
153+
154+ android :
155+ docker : [{image: 'circleci/android:api-27-node8-alpha'}]
156+ environment :
157+ task : ANDROID
158+ FASTLANE_SKIP_UPDATE_CHECK : ' 1'
159+ FASTLANE_DISABLE_ANIMATION : ' 1'
160+ steps :
161+ - checkout
162+ - run : yarn --version
163+ - run : *set-ruby-version
164+ - restore_cache : *restore-cache-yarn
165+ - run : yarn install --frozen-lockfile
166+ - save_cache : *save-cache-yarn
167+ - restore_cache : *restore-cache-bundler
168+ - run : bundle check || bundle install --frozen --path ./vendor/bundle
169+ - save_cache : *save-cache-bundler
170+ - restore_cache : *restore-cache-gradle
171+ - run :
172+ name : Download Android dependencies
173+ command : cd android && ./gradlew androidDependencies
174+ environment : {TERM: xterm-256color}
175+ - save_cache : *save-cache-gradle
176+ - run : mkdir -p logs/
177+ - run : touch .env.js
178+ - run : bundle exec fastlane android ci-run | tee ./logs/build
179+ - run : *run-danger
180+
181+ ios :
182+ macos : {xcode: '9.0'}
183+ environment :
184+ task : IOS
185+ FASTLANE_SKIP_UPDATE_CHECK : ' 1'
186+ FASTLANE_DISABLE_ANIMATION : ' 1'
187+ LC_ALL : en_US.UTF-8
188+ LANG : en_US.UTF-8
189+ shell : /bin/bash --login -o pipefail
190+ steps :
191+ - checkout
192+ - run : yarn --version
193+ - run : *set-ruby-version
194+ - restore_cache : *restore-cache-yarn
195+ - run : yarn install --frozen-lockfile
196+ - save_cache : *save-cache-yarn
197+ - restore_cache : *restore-cache-bundler
198+ - run : bundle check || bundle install --frozen --path ./vendor/bundle
199+ - save_cache : *save-cache-bundler
200+ - run : mkdir -p logs/
201+ - run : touch .env.js
202+ - run : bundle exec fastlane ios ci-run | tee ./logs/build
203+ - run :
204+ name : Analyze Fastlane Logfile
205+ command : python2 ./scripts/analyze-gym.py -s 20 < ./logs/build | tee ./logs/analysis || true
206+ - run : *run-danger
0 commit comments