@@ -18,89 +18,24 @@ checkout step for each job: &addWorkspace
1818default config for js : &js_defaults
1919 << : *defaults
2020 docker :
21- - image : circleci/node:8
21+ - image : circleci/node:10
2222
23- default config for macOS : &macos_defaults
24- << : *defaults
25- resource_class : ' medium'
26- macos :
27- xcode : ' 10.1.0'
28-
29- default config for android apk builds : &android_defaults
30- << : *defaults
31- docker :
32- - image : reactnativecommunity/react-native-android
33- resource_class : ' medium'
34- working_directory : ~/async_storage
35- environment :
36- - _JAVA_OPTIONS : ' -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Xmx2048m'
37- - GRADLE_OPTS : ' -Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-XX:+HeapDumpOnOutOfMemoryError -Xmx2048m"'
38- - BUILD_THREADS : 2
3923
4024# ==============================
4125# CACHE CONFIG
4226# ==============================
4327
44- # brew
45- save brew cache : &cache_save_brew
46- name : Saving Brew cache
47- paths :
48- - /usr/local/Homebrew
49- - ~/Library/Caches/Homebrew
50- key : v1-brew-cache-{{ arch }}
51-
52- restore brew cache : &cache_restore_brew
53- name : Restoring Brew cache
54- keys :
55- - v1-brew-cache-{{ arch }}
56-
57- save brew cache for android : &cache_save_brew_android
58- name : Saving Brew cache for android
59- paths :
60- - /usr/local/Homebrew
61- - ~/Library/Caches/Homebrew
62- key : v1-brew-cache-{{ arch }}-android
63-
64- restore brew cache for android : &cache_restore_brew_android
65- name : Restoring Brew cache for android
66- keys :
67- - v1-brew-cache-{{ arch }}-android
68-
6928# yarn
7029save yarn cache : &cache_save_yarn
7130 name : Saving Yarn cache
7231 paths :
7332 - ~/.cache/yarn
74- - ~/Library/Detox
75- key : v1-yarn-cache-{{ checksum "package.json" }}-{{ arch }}
33+ key : yarn-cache-{{ checksum "package.json" }}-{{ arch }}
7634
7735restore yarn cache : &cache_restore_yarn
7836 name : Restoring Yarn cache
7937 keys :
80- - v1-yarn-cache-{{ checksum "package.json" }}-{{ arch }}
81-
82- # gradle
83- save gradle wrapper cache : &cache_save_gradle_wrapper
84- name : Saving Gradle Wrapper cache
85- paths :
86- - ~/.gradle/wrapper
87- key : gradle-wrapper-v1-{{ checksum "example/android/gradle/wrapper/gradle-wrapper.properties" }}
88-
89- save gradle build cache : &cache_save_gradle_build
90- name : Saving Gradle app/build cache
91- paths :
92- - ~/.gradle/caches
93- key : app-build-gradle-v1-{{ checksum "example/android/app/build.gradle" }}
94-
95- restore gradle wrapper cache : &cache_restore_gradle_wrapper
96- name : Restoring Gradle Wrapper cache
97- keys :
98- - gradle-wrapper-v1-{{ checksum "example/android/gradle/wrapper/gradle-wrapper.properties" }}
99-
100- restore gradle build cache : &cache_restore_gradle_build
101- name : Restoring Gradle app/build cache
102- keys :
103- - app-build-gradle-v1-{{ checksum "example/android/app/build.gradle" }}
38+ - yarn-cache-{{ checksum "package.json" }}-{{ arch }}
10439
10540
10641# ==============================
@@ -134,163 +69,24 @@ jobs:
13469 steps :
13570 - *addWorkspace
13671 - run :
137- name : Type check
138- command : yarn test:types
72+ name : Typescript check
73+ command : yarn lerna run test:types
13974
14075 " Test: unit " :
14176 << : *js_defaults
14277 steps :
14378 - *addWorkspace
14479 - run :
145- name : Unit tests run
80+ name : Unit tests
14681 command : yarn test:unit
14782
148- " Test: iOS e2e " :
149- << : *macos_defaults
150- steps :
151- - *addWorkspace
152- - restore-cache : *cache_restore_brew
153- - run :
154- name : Configure OSX Environment
155- command : |
156- HOMEBREW_NO_AUTO_UPDATE=1 brew install node@8 >/dev/null
157- HOMEBREW_NO_AUTO_UPDATE=1 brew tap wix/brew >/dev/null
158- HOMEBREW_NO_AUTO_UPDATE=1 brew install applesimutils >/dev/null
159- touch .watchmanconfig
160- node -v
161- - save-cache : *cache_save_brew
162- - restore-cache : *cache_restore_yarn
163- - run :
164- name : Installing Yarn dependencies
165- command : yarn --pure-lockfile --non-interactive --cache-folder ~/.cache/yarn
166- - save-cache : *cache_save_yarn
167- - run :
168- name : Build iOS app
169- command : yarn build:e2e:ios
170-
171- - run :
172- name : Run e2e tests
173- command : yarn test:e2e:ios
174-
175- " Build: Android release apk " :
176- << : *android_defaults
177- steps :
178- - *addWorkspace
179- - restore-cache : *cache_restore_yarn
180- - run :
181- name : Installing Yarn dependencies
182- command : yarn --pure-lockfile --non-interactive --cache-folder ~/.cache/yarn
183- - save-cache : *cache_save_yarn
184-
185- # Gradle
186- - restore-cache : *cache_restore_gradle_wrapper
187- - restore-cache : *cache_restore_gradle_build
188- - run :
189- name : Downloading Gradle dependencies
190- command : cd example/android && ./gradlew --max-workers 2 fetchDependencies
191- - save-cache : *cache_save_gradle_wrapper
192- - save-cache : *cache_save_gradle_build
193-
194- # Build and test
195- - run :
196- name : Build Android apk
197- command : cd example/android && ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release --max-workers 2
198-
199- - persist_to_workspace :
200- root : ~/async_storage
201- paths :
202- - example/android/app/build/outputs/apk/*
203-
204- " Test: Android e2e " :
205- << : *macos_defaults
206- steps :
207- - *addWorkspace
208- - run :
209- name : Configure env variables
210- command : |
211- echo 'export ANDROID_HOME="/usr/local/share/android-sdk"' >> $BASH_ENV
212- echo 'export ANDROID_SDK_ROOT="/usr/local/share/android-sdk"' >> $BASH_ENV
213- echo 'export PATH="$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/tools/bin:$PATH"' >> $BASH_ENV
214- echo 'export QEMU_AUDIO_DRV=none' >> $BASH_ENV
215- echo 'export JAVA_HOME=/Library/Java/Home' >> $BASH_ENV
216- source $BASH_ENV
217-
218- # Android tools
219- - restore-cache : *cache_restore_brew_android
220- - run :
221- name : Install Android SDK tools
222- command : |
223- HOMEBREW_NO_AUTO_UPDATE=1 brew tap homebrew/cask >/dev/null
224- HOMEBREW_NO_AUTO_UPDATE=1 brew cask install android-sdk >/dev/null
225- HOMEBREW_NO_AUTO_UPDATE=1 brew cask install intel-haxm >/dev/null
226- HOMEBREW_NO_AUTO_UPDATE=1 brew install node@8 >/dev/null >/dev/null
227- - save-cache : *cache_save_brew_android
228-
229- - run :
230- name : Install Android emulator
231- shell : /bin/bash -e
232- command : |
233- yes | sdkmanager "platform-tools" "tools" >/dev/null
234- yes | sdkmanager "platforms;android-28" "system-images;android-21;google_apis;x86" >/dev/null
235- yes | sdkmanager "emulator" --channel=3 >/dev/null
236- yes | sdkmanager "build-tools;28.0.3" >/dev/null
237- yes | sdkmanager --licenses >/dev/null
238- yes | sdkmanager --list
239-
240- - run :
241- name : ADB start/stop
242- command : |
243- adb start-server
244- adb devices
245- adb kill-server
246- ls -la ~/.android
247-
248- - run :
249- name : Create emulator
250- command : |
251- avdmanager create avd \
252- --force \
253- -n "Emu_E2E" \
254- -k "system-images;android-21;google_apis;x86" \
255- -g "google_apis" \
256- -d "Nexus 4"
257-
258-
259-
260- - run :
261- name : Start emulator in background
262- background : true
263- command : |
264- emulator -avd "Emu_E2E" \
265- -cores 1 \
266- -gpu auto \
267- -accel on \
268- -memory 1024 \
269- -no-audio \
270- -no-snapshot \
271- -no-boot-anim \
272- -no-window \
273- -logcat '*:W' | grep -i "ReactNative"
274-
275- - run :
276- name : Wait for emulator to boot
277- command : yarn build:e2e:android
278-
279- - run :
280- name : Wake device
281- command : |
282- adb shell input keyevent 82
283-
284- - run :
285- name : Run e2e tests
286- command : yarn test:e2e:android
28783
28884# ==============================
28985# WORK FLOWS
29086# ==============================
29187workflows :
29288 version : 2
293- build_and_test_wip :
89+ " Basic tests " :
29490 jobs :
29591 - " Setup environment"
29692 - " Test: lint " :
0 commit comments