@@ -3,38 +3,49 @@ version: 2.1
3
3
aliases :
4
4
- &save-cache-yarn
5
5
save_cache :
6
- key : v1- yarn-packages-{{ checksum "yarn.lock" }}
6
+ key : yarn-packages-{{ .Environment.CACHE_VERSION }} -{{ checksum "yarn.lock" }}
7
7
paths :
8
8
- ~/.cache/yarn
9
9
- &restore-cache-yarn
10
10
restore_cache :
11
11
name : Restore Yarn Package Cache
12
12
keys :
13
- - v1- yarn-packages-{{ checksum "yarn.lock" }}
14
- - &save-cache-detox
13
+ - yarn-packages-{{ .Environment.CACHE_VERSION }} -{{ checksum "yarn.lock" }}
14
+ - &save-cache-detox-env
15
15
save_cache :
16
- key : v1-detox-{{ checksum "yarn.lock"}}
16
+ key : detox-env-{{ .Environment.CACHE_VERSION }}-{{ arch }}-{{ .Environment.CIRCLE_WORKING_DIRECTORY }}
17
+ paths :
18
+ - /usr/local/Homebrew
19
+ - ~/Library/Caches/Homebrew
20
+ - &restore-cache-detox-env
21
+ restore_cache :
22
+ name : Restoring Detox Env Cache
23
+ keys :
24
+ - detox-env-{{ .Environment.CACHE_VERSION }}-{{ arch }}-{{ .Environment.CIRCLE_WORKING_DIRECTORY }}
25
+ - &save-cache-detox-app
26
+ save_cache :
27
+ key : detox-app-{{ .Environment.CACHE_VERSION }}-{{ checksum "yarn.lock"}}
17
28
paths :
18
29
- node_modules
19
30
- ios/Pods
20
- - &restore-cache-detox
31
+ - &restore-cache-detox-app
21
32
restore_cache :
22
- name : Restoring Detox Cache
33
+ name : Restoring Detox App Cache
23
34
keys :
24
- - v1- detox-{{ checksum "yarn.lock"}}
35
+ - detox-app-{{ .Environment.CACHE_VERSION }} -{{ checksum "yarn.lock"}}
25
36
- &save-android-build-cache
26
37
save_cache :
27
38
paths :
28
39
- ~/.gradle/caches
29
40
- ~/.gradle/wrapper
30
41
- ~/.android/build-cache
31
- key : v1- gradle-build-cache-{{ checksum "android/build.gradle" }}-{{ checksum "android/app/build.gradle" }}-{{ checksum "yarn.lock" }}
42
+ key : gradle-build-cache-{{ .Environment.CACHE_VERSION }} -{{ checksum "android/build.gradle" }}-{{ checksum "android/app/build.gradle" }}-{{ checksum "yarn.lock" }}
32
43
when : always # Ensures build assets are cached even on failed builds
33
44
- &restore-android-build-cache
34
45
restore_cache :
35
46
name : Restoring Android & Gradle cache
36
47
keys :
37
- - v1- gradle-build-cache-{{ checksum "android/build.gradle" }}-{{ checksum "android/app/build.gradle" }}-{{ checksum "yarn.lock" }}
48
+ - gradle-build-cache-{{ .Environment.CACHE_VERSION }} -{{ checksum "android/build.gradle" }}-{{ checksum "android/app/build.gradle" }}-{{ checksum "yarn.lock" }}
38
49
- &attach-workspace
39
50
attach_workspace :
40
51
at : ~/react-native-url-polyfill
@@ -46,7 +57,7 @@ executors:
46
57
working_directory : ~/react-native-url-polyfill
47
58
xcode-11 :
48
59
macos :
49
- xcode : 11
60
+ xcode : 11.7.0
50
61
environment :
51
62
HOMEBREW_NO_AUTO_UPDATE : 1
52
63
xcode-12 :
@@ -73,48 +84,22 @@ commands:
73
84
yarn install --frozen-lockfile --no-progress --non-interactive --cache-folder ~/.cache/yarn
74
85
install-detox :
75
86
steps :
87
+ - *restore-cache-detox-env
76
88
- run :
77
89
name : Install Detox
78
90
command : |
79
- brew update
80
91
brew tap wix/brew
81
92
brew install applesimutils
82
93
yarn global add detox-cli
83
94
- run :
84
95
name : Clean Detox
85
96
command : |
86
97
detox clean-framework-cache && detox build-framework-cache
87
- test-detox-ios :
88
- steps :
89
- - *attach-workspace
90
- - *restore-cache-detox
91
- - install-yarn-dependencies
92
- - install-detox
93
- - run :
94
- name : Install Pods
95
- command : |
96
- curl https://cocoapods-specs.circleci.com/fetch-cocoapods-repo-from-s3.sh | bash -s cf
97
- cd ios && pod install --repo-update
98
- - run :
99
- name : Run Detox on iOS
100
- command : yarn e2e:ios
101
- - *save-cache-detox
102
- test-hermes-android :
103
- steps :
104
- - *attach-workspace
105
- - *restore-android-build-cache
106
- - install-yarn-dependencies
107
- - run :
108
- name : Enable Hermes
109
- command : sed -i "s/enableHermes:\sfalse/enableHermes:\ true/g" android/app/build.gradle
110
- - run :
111
- name : Build APK
112
- command : cd android && ./gradlew assembleRelease
113
- - *save-android-build-cache
98
+ - *save-cache-detox-env
114
99
test-hermes-ios :
115
100
steps :
116
101
- *attach-workspace
117
- - *restore-cache-detox
102
+ - *restore-cache-detox-app
118
103
- run :
119
104
name : Enable Hermes
120
105
command : npx shx sed -i "s/:hermes_enabled\s=>\sfalse/:hermes_enabled => true/g" ios/Podfile
@@ -144,7 +129,8 @@ jobs:
144
129
- *save-cache-yarn
145
130
- persist_to_workspace :
146
131
root : .
147
- paths : .
132
+ paths :
133
+ - .
148
134
lint :
149
135
executor : default
150
136
steps :
@@ -159,36 +145,58 @@ jobs:
159
145
- run :
160
146
name : Run Jest
161
147
command : yarn test
162
- rn-0-60-test-ios :
163
- executor : xcode-11
164
- working_directory : ~/react-native-url-polyfill/detox/rn-0.60
165
- steps :
166
- - test-detox-ios
167
- rn-0-63-test-ios :
168
- executor : xcode-11
169
- working_directory : ~/react-native-url-polyfill/detox/rn-0.63
148
+ test-ios :
149
+ parameters :
150
+ executor :
151
+ default : xcode-12
152
+ type : executor
153
+ react-native-version :
154
+ type : string
155
+ executor : << parameters.executor >>
156
+ working_directory : ~/react-native-url-polyfill/detox/rn-<< parameters.react-native-version >>
170
157
steps :
171
- - test-detox-ios
172
- rn-0-63-test-hermes-android :
158
+ - *attach-workspace
159
+ - *restore-cache-detox-app
160
+ - install-yarn-dependencies
161
+ - install-detox
162
+ - run :
163
+ name : Fetch Pods specs
164
+ command : curl https://cocoapods-specs.circleci.com/fetch-cocoapods-repo-from-s3.sh | bash -s cf
165
+ - run :
166
+ name : Install Pods
167
+ command : cd ios && pod install --repo-update
168
+ - run :
169
+ name : Run Detox on iOS
170
+ command : yarn e2e:ios
171
+ - *save-cache-detox-app
172
+ test-hermes-android :
173
+ parameters :
174
+ react-native-version :
175
+ type : string
173
176
executor : android
174
- working_directory : ~/react-native-url-polyfill/detox/rn-0.63
175
- steps :
176
- - test-hermes-android
177
- rn-0-64-test-ios :
178
- executor : xcode-12
179
- working_directory : ~/react-native-url-polyfill/detox/rn-0.64
177
+ working_directory : ~/react-native-url-polyfill/detox/rn-<< parameters.react-native-version >>
180
178
steps :
181
- - test-detox-ios
182
- rn-0-64-test-hermes-ios :
183
- executor : xcode-12
184
- working_directory : ~/react-native-url-polyfill/detox/rn-0.64
179
+ - *attach-workspace
180
+ - run :
181
+ name : Enable Hermes
182
+ command : sed -i "s/enableHermes:\sfalse/enableHermes:\ true/g" android/app/build.gradle
183
+ - *restore-android-build-cache
184
+ - install-yarn-dependencies
185
+ - run :
186
+ name : Build APK
187
+ command : cd android && ./gradlew assembleRelease
188
+ - *save-android-build-cache
189
+ test-hermes-ios :
190
+ parameters :
191
+ executor :
192
+ default : xcode-12
193
+ type : executor
194
+ react-native-version :
195
+ type : string
196
+ executor : << parameters.executor >>
197
+ working_directory : ~/react-native-url-polyfill/detox/rn-<< parameters.react-native-version >>
185
198
steps :
186
199
- test-hermes-ios
187
- rn-0-64-test-hermes-android :
188
- executor : android
189
- working_directory : ~/react-native-url-polyfill/detox/rn-0.64
190
- steps :
191
- - test-hermes-android
192
200
193
201
workflows :
194
202
tests :
@@ -200,27 +208,30 @@ workflows:
200
208
- test-js :
201
209
requires :
202
210
- checkout
203
- - rn-0-60-test-ios :
204
- requires :
205
- - lint
206
- - test-js
207
- - rn-0-63-test-ios :
211
+ - test-ios :
212
+ name : test-ios-0.60
213
+ executor : xcode-11
214
+ react-native-version : ' 0.60'
208
215
requires :
209
216
- lint
210
217
- test-js
211
- - rn-0-63-test-hermes-android :
218
+ - test-ios :
219
+ matrix :
220
+ parameters :
221
+ react-native-version : ['0.63', '0.64']
212
222
requires :
213
223
- lint
214
224
- test-js
215
- - rn-0-64-test-ios :
225
+ - test-hermes-ios :
226
+ matrix :
227
+ parameters :
228
+ react-native-version : ['0.64']
216
229
requires :
217
- - lint
218
- - test-js
219
- - rn-0-64-test-hermes-ios :
220
- requires :
221
- - lint
222
- - test-js
223
- - rn-0-64-test-hermes-android :
230
+ - test-ios-<< matrix.react-native-version >>
231
+ - test-hermes-android :
232
+ matrix :
233
+ parameters :
234
+ react-native-version : ['0.63', '0.64']
224
235
requires :
225
236
- lint
226
237
- test-js
0 commit comments