@@ -26,6 +26,13 @@ default config for macOS: &macos_defaults
2626 macos :
2727 xcode : ' 12.1.0'
2828
29+
30+ config for macOS (android) : &macos_defaults_android
31+ << : *defaults
32+ resource_class : ' medium'
33+ macos :
34+ xcode : ' 11.5.0'
35+
2936default config for android apk builds : &android_defaults
3037 << : *defaults
3138 docker :
@@ -41,67 +48,76 @@ default config for android apk builds: &android_defaults
4148# CACHE CONFIG
4249# ==============================
4350
44- # brew
45- save brew cache : &cache_save_brew
46- name : Saving Brew cache
47- paths :
51+ cache keys :
52+ brew ios : &key_brew_ios cache-brew-ios-v3-{{ arch }}
53+ brew android : &key_brew_android cache-brew-android-v3-{{ arch }}
54+ yarn : &key_yarn cache-yarn-{{ checksum "package.json" }}-{{ arch }}
55+ gradle : &key_gradle cache-gradle-{{ checksum "example/android/gradle/wrapper/gradle-wrapper.properties" }}-{{ checksum "package.json" }}-{{ arch }}
56+ pods : &key_pods cache-pods-v1-{{ checksum "example/ios/Podfile" }}-{{ checksum "package.json" }}-{{ arch }}
57+
58+ cache :
59+ # brew
60+ save brew cache for ios : &cache_save_brew_ios
61+ name : Saving Brew cache
62+ paths :
63+ - /usr/local/Homebrew
64+ - ~/Library/Caches/Homebrew
65+ key : *key_brew_ios
66+
67+ restore brew cache for ios : &cache_restore_brew_ios
68+ name : Restoring Brew cache
69+ keys :
70+ - *key_brew_ios
71+
72+ save brew cache for android : &cache_save_brew_android
73+ name : Saving Brew cache for android
74+ paths :
4875 - /usr/local/Homebrew
4976 - ~/Library/Caches/Homebrew
50- key : legacy-brew-cache-node12-{{ arch }}
51-
52- restore brew cache : &cache_restore_brew
53- name : Restoring Brew cache
54- keys :
55- - legacy-brew-cache-node12-{{ 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 : legacy-brew-cache-node12-{{ arch }}-android
63-
64- restore brew cache for android : &cache_restore_brew_android
65- name : Restoring Brew cache for android
66- keys :
67- - legacy-brew-cache-node12-{{ arch }}-android
68-
69- # yarn
70- save yarn cache : &cache_save_yarn
71- name : Saving Yarn cache
72- paths :
73- - ~/.cache/yarn
74- - ~/Library/Detox
75- key : legacy-yarn-cache-{{ checksum "package.json" }}-{{ arch }}
76-
77- restore yarn cache : &cache_restore_yarn
78- name : Restoring Yarn cache
79- keys :
80- - legacy-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-legacy-{{ 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-legacy-{{ 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-legacy-{{ 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-legacy-{{ checksum "example/android/app/build.gradle" }}
104-
77+ key : *key_brew_android
78+
79+ restore brew cache for android : &cache_restore_brew_android
80+ name : Restoring Brew cache for android
81+ keys :
82+ - *key_brew_android
83+
84+ # yarn
85+ save yarn cache : &cache_save_yarn
86+ name : Saving Yarn cache
87+ paths :
88+ - ~/.cache/yarn
89+ - ~/Library/Detox
90+ key : *key_yarn
91+
92+ restore yarn cache : &cache_restore_yarn
93+ name : Restoring Yarn cache
94+ keys :
95+ - *key_yarn
96+
97+ # gradle
98+ save gradle cache : &cache_save_gradle
99+ name : Saving Gradle cache
100+ key : *key_gradle
101+ paths :
102+ - ~/.gradle/wrapper
103+ - ~/.gradle/caches
104+
105+ restore gradle cache : &cache_restore_gradle
106+ name : Restoring Gradle cache
107+ keys :
108+ - *key_gradle
109+
110+ # cocoapods
111+ save pods cache : &cache_save_pods
112+ name : Saving Pods
113+ key : *key_pods
114+ paths :
115+ - example/ios/Pods
116+
117+ restore pods cache : &cache_restore_pods
118+ name : Restoring Pods
119+ keys :
120+ - *key_pods
105121
106122# ==============================
107123# JOBS
@@ -141,26 +157,28 @@ jobs:
141157 << : *macos_defaults
142158 steps :
143159 - *addWorkspace
144- - restore-cache : *cache_restore_brew
160+ - restore-cache : *cache_restore_brew_ios
145161 - run :
146162 name : Configure macOS Environment
147163 command : |
148164 brew bundle --file=.circleci/Brewfile.ios --no-lock
149165 touch .watchmanconfig
150166 echo Node $(node --version)
151- - save-cache : *cache_save_brew
167+ - save-cache : *cache_save_brew_ios
152168 - restore-cache : *cache_restore_yarn
153169 - run :
154170 name : Installing Yarn dependencies
155171 command : yarn --pure-lockfile --non-interactive --cache-folder ~/.cache/yarn
156172 - save-cache : *cache_save_yarn
173+ - restore-cache : *cache_restore_pods
157174 - run :
158175 name : Bundle JS
159176 command : yarn bundle:ios --dev false
160177 - run :
161178 name : Install pod dependencies
162179 working_directory : example/ios
163180 command : pod install
181+ - save-cache : *cache_save_pods
164182 - run :
165183 name : Build iOS app
166184 command : yarn build:e2e:ios
@@ -177,18 +195,12 @@ jobs:
177195 name : Installing Yarn dependencies
178196 command : yarn --pure-lockfile --non-interactive --cache-folder ~/.cache/yarn
179197 - save-cache : *cache_save_yarn
180-
181- # Gradle
182- - restore-cache : *cache_restore_gradle_wrapper
183- - restore-cache : *cache_restore_gradle_build
198+ - restore-cache : *cache_restore_gradle
184199 - run :
185200 name : Downloading Gradle dependencies
186201 working_directory : example/android
187202 command : ./gradlew --max-workers 2 fetchDependencies
188- - save-cache : *cache_save_gradle_wrapper
189- - save-cache : *cache_save_gradle_build
190-
191- # Build and test
203+ - save-cache : *cache_save_gradle
192204 - run :
193205 name : Bundle JS
194206 command : yarn bundle:android --dev false
@@ -203,32 +215,31 @@ jobs:
203215 - example/android/app/build/outputs/apk/*
204216
205217 " Test: Android e2e " :
206- << : *macos_defaults
218+ << : *macos_defaults_android
207219 steps :
208220 - *addWorkspace
209221 - run :
210222 name : Configure env variables
211223 command : |
212224 echo 'export ANDROID_HOME="/usr/local/share/android-sdk"' >> $BASH_ENV
213225 echo 'export ANDROID_SDK_ROOT="/usr/local/share/android-sdk"' >> $BASH_ENV
214- echo 'export PATH="$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/tools/bin:$ PATH"' >> $BASH_ENV
226+ echo 'export PATH="$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:$PATH"' >> $BASH_ENV
215227 echo 'export QEMU_AUDIO_DRV=none' >> $BASH_ENV
216- echo 'export JAVA_HOME=/Library/Java/Home ' >> $BASH_ENV
228+ echo 'export JAVA_HOME=$(/usr/libexec/java_home) ' >> $BASH_ENV
217229 source $BASH_ENV
218-
219- # Android tools
220230 - restore-cache : *cache_restore_brew_android
221231 - run :
222232 name : Install Android SDK tools
223233 command : |
234+ brew update --preinstall
224235 brew bundle --file=.circleci/Brewfile.android --no-lock
225236 - save-cache : *cache_save_brew_android
226237 - run :
227238 name : Install Android emulator
228239 shell : /bin/bash -e
229240 command : |
230241 yes | sdkmanager "platform-tools" "tools" 1> /dev/null
231- yes | sdkmanager "platforms;android-28" "system-images;android-21;google_apis;x86 " 1> /dev/null
242+ yes | sdkmanager "platforms;android-28" "system-images;android-28;default;x86_64 " 1> /dev/null
232243 yes | sdkmanager "emulator" --channel=3 1> /dev/null
233244 yes | sdkmanager "build-tools;28.0.3" 1> /dev/null
234245 yes | sdkmanager --licenses 1> /dev/null
@@ -243,12 +254,11 @@ jobs:
243254 - run :
244255 name : Create emulator
245256 command : |
246- avdmanager create avd \
247- --force \
257+ avdmanager create avd --force \
248258 -n "Emu_E2E" \
249- -k "system-images;android-21;google_apis;x86 " \
250- -g "google_apis " \
251- -d "Nexus 4 "
259+ -k "system-images;android-28;default;x86_64 " \
260+ -g "default " \
261+ -d "pixel "
252262 - run :
253263 name : Start emulator in background
254264 background : true
@@ -311,8 +321,6 @@ workflows:
311321 filters :
312322 branches :
313323 only : master
314- # - "Test: Android e2e":
315- # requires:
316- # - "Test: lint"
317- # - "Test: flow"
318- # - "Build: Android release apk"
324+ - " Test: Android e2e " :
325+ requires :
326+ - " Build: Android release apk"
0 commit comments