@@ -26,6 +26,13 @@ default config for macOS: &macos_defaults
26
26
macos :
27
27
xcode : ' 12.1.0'
28
28
29
+
30
+ config for macOS (android) : &macos_defaults_android
31
+ << : *defaults
32
+ resource_class : ' medium'
33
+ macos :
34
+ xcode : ' 11.5.0'
35
+
29
36
default config for android apk builds : &android_defaults
30
37
<< : *defaults
31
38
docker :
@@ -41,67 +48,76 @@ default config for android apk builds: &android_defaults
41
48
# CACHE CONFIG
42
49
# ==============================
43
50
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 :
48
75
- /usr/local/Homebrew
49
76
- ~/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
105
121
106
122
# ==============================
107
123
# JOBS
@@ -141,26 +157,28 @@ jobs:
141
157
<< : *macos_defaults
142
158
steps :
143
159
- *addWorkspace
144
- - restore-cache : *cache_restore_brew
160
+ - restore-cache : *cache_restore_brew_ios
145
161
- run :
146
162
name : Configure macOS Environment
147
163
command : |
148
164
brew bundle --file=.circleci/Brewfile.ios --no-lock
149
165
touch .watchmanconfig
150
166
echo Node $(node --version)
151
- - save-cache : *cache_save_brew
167
+ - save-cache : *cache_save_brew_ios
152
168
- restore-cache : *cache_restore_yarn
153
169
- run :
154
170
name : Installing Yarn dependencies
155
171
command : yarn --pure-lockfile --non-interactive --cache-folder ~/.cache/yarn
156
172
- save-cache : *cache_save_yarn
173
+ - restore-cache : *cache_restore_pods
157
174
- run :
158
175
name : Bundle JS
159
176
command : yarn bundle:ios --dev false
160
177
- run :
161
178
name : Install pod dependencies
162
179
working_directory : example/ios
163
180
command : pod install
181
+ - save-cache : *cache_save_pods
164
182
- run :
165
183
name : Build iOS app
166
184
command : yarn build:e2e:ios
@@ -177,18 +195,12 @@ jobs:
177
195
name : Installing Yarn dependencies
178
196
command : yarn --pure-lockfile --non-interactive --cache-folder ~/.cache/yarn
179
197
- 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
184
199
- run :
185
200
name : Downloading Gradle dependencies
186
201
working_directory : example/android
187
202
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
192
204
- run :
193
205
name : Bundle JS
194
206
command : yarn bundle:android --dev false
@@ -203,32 +215,31 @@ jobs:
203
215
- example/android/app/build/outputs/apk/*
204
216
205
217
" Test: Android e2e " :
206
- << : *macos_defaults
218
+ << : *macos_defaults_android
207
219
steps :
208
220
- *addWorkspace
209
221
- run :
210
222
name : Configure env variables
211
223
command : |
212
224
echo 'export ANDROID_HOME="/usr/local/share/android-sdk"' >> $BASH_ENV
213
225
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
215
227
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
217
229
source $BASH_ENV
218
-
219
- # Android tools
220
230
- restore-cache : *cache_restore_brew_android
221
231
- run :
222
232
name : Install Android SDK tools
223
233
command : |
234
+ brew update --preinstall
224
235
brew bundle --file=.circleci/Brewfile.android --no-lock
225
236
- save-cache : *cache_save_brew_android
226
237
- run :
227
238
name : Install Android emulator
228
239
shell : /bin/bash -e
229
240
command : |
230
241
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
232
243
yes | sdkmanager "emulator" --channel=3 1> /dev/null
233
244
yes | sdkmanager "build-tools;28.0.3" 1> /dev/null
234
245
yes | sdkmanager --licenses 1> /dev/null
@@ -243,12 +254,11 @@ jobs:
243
254
- run :
244
255
name : Create emulator
245
256
command : |
246
- avdmanager create avd \
247
- --force \
257
+ avdmanager create avd --force \
248
258
-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 "
252
262
- run :
253
263
name : Start emulator in background
254
264
background : true
@@ -311,8 +321,6 @@ workflows:
311
321
filters :
312
322
branches :
313
323
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