@@ -2,14 +2,6 @@ name: Build and Test
2
2
on :
3
3
pull_request :
4
4
types : [opened, synchronize, reopened]
5
- paths :
6
- - ' example/**'
7
- - ' android/**'
8
- - ' ios/**'
9
- - ' src/**'
10
- - ' assets/**'
11
- - ' package.json'
12
- - ' react-native-image-marker.podspec'
13
5
workflow_dispatch :
14
6
15
7
jobs :
@@ -21,27 +13,40 @@ jobs:
21
13
- name : Checkout the code
22
14
uses : actions/checkout@v4
23
15
16
+ - name : Verify Dev Changed files
17
+ uses :
tj-actions/[email protected]
18
+ id : verify-dev-changed-files
19
+ with :
20
+ files : |
21
+ !*.md
22
+ !*.MD
23
+ !*.yml
24
+
24
25
- uses : actions/cache@v3
25
26
name : Cache node_modules
26
27
id : cache-node-modules
28
+ if : steps.verify-dev-changed-files.outputs.files_changed == 'true'
27
29
with :
28
30
path : |
29
31
node_modules
30
32
example/node_modules
31
33
key : ${{ runner.os }}-nodeModules-${{ hashFiles('package.json') }}-${{ hashFiles('example/package.json') }}
32
34
33
35
- name : Set up Ruby
36
+ if : steps.verify-dev-changed-files.outputs.files_changed == 'true'
34
37
uses : ruby/setup-ruby@v1
35
38
with :
36
39
ruby-version : 2.7
37
40
bundler-cache : true
41
+
38
42
- name : Setup node 16
43
+ if : steps.verify-dev-changed-files.outputs.files_changed == 'true'
39
44
uses : actions/setup-node@v3
40
45
with :
41
46
node-version : ' 16'
42
47
43
48
- name : Install npm dependencies
44
- if : steps.cache-node-modules.outputs.cache-hit != 'true'
49
+ if : steps.cache-node-modules.outputs.cache-hit != 'true' && steps.verify-dev-changed-files.outputs.files_changed == 'true'
45
50
run : |
46
51
ls
47
52
pwd
59
64
- name : Checkout the code
60
65
uses : actions/checkout@v4
61
66
67
+ - name : Verify Android Changed files
68
+ uses :
tj-actions/[email protected]
69
+ id : verify-android-changed-files
70
+ with :
71
+ files : |
72
+ android/**
73
+ src/**
74
+ assets/**
75
+ package.json
76
+ !example/ios/**
77
+
62
78
- uses : actions/cache@v3
63
79
name : Cache node_modules
80
+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
64
81
id : cache-node-modules
65
82
with :
66
83
path : |
72
89
- uses : actions/cache@v3
73
90
id : cache-gradle
74
91
name : Cache Gradle dependencies
92
+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
75
93
with :
76
94
path : |
77
95
~/.gradle/caches
@@ -80,40 +98,46 @@ jobs:
80
98
81
99
- name : Set up Ruby
82
100
uses : ruby/setup-ruby@v1
101
+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
83
102
with :
84
103
ruby-version : 2.7
85
104
bundler-cache : true
86
105
87
106
- name : Setup node 16
88
107
uses : actions/setup-node@v3
108
+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
89
109
with :
90
110
node-version : ' 16'
91
111
92
112
- name : Set up JDK
93
113
uses : actions/setup-java@v3
114
+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
94
115
with :
95
116
distribution : ' zulu'
96
117
java-version : 11
97
118
98
119
- name : Install Gradle dependencies
99
- if : steps.cache-gradle.outputs.cache-hit != 'true'
120
+ if : steps.cache-gradle.outputs.cache-hit != 'true' && steps.verify-android-changed-files.outputs.files_changed == 'true'
100
121
run : |
101
122
cd example/android
102
123
./gradlew build --stacktrace
103
124
104
125
- name : Run unit tests
126
+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
105
127
run : |
106
128
cd example/android
107
129
./gradlew test --stacktrace
108
130
109
131
- name : Build APK
132
+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
110
133
run : |
111
134
npm run prepack
112
135
cd example/android
113
136
./gradlew assembleRelease
114
137
mv app/build/outputs/apk/release/app-release.apk app-release-${{ github.sha }}.apk
115
138
116
139
- name : Upload APK
140
+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
117
141
uses : actions/upload-artifact@v3
118
142
with :
119
143
name : app-release-${{ github.sha }}.apk
@@ -131,8 +155,20 @@ jobs:
131
155
- name : Checkout the code
132
156
uses : actions/checkout@v4
133
157
158
+ - name : Verify Android Changed files
159
+ uses :
tj-actions/[email protected]
160
+ id : verify-android-changed-files
161
+ with :
162
+ files : |
163
+ android/**
164
+ src/**
165
+ assets/**
166
+ package.json
167
+ !example/ios/**
168
+
134
169
- uses : actions/cache@v3
135
170
name : Cache node_modules
171
+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
136
172
id : cache-node-modules
137
173
with :
138
174
path : |
@@ -143,6 +179,7 @@ jobs:
143
179
144
180
- uses : actions/cache@v3
145
181
name : Cache Gradle dependencies
182
+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
146
183
id : cache-gradle
147
184
with :
148
185
path : |
@@ -153,23 +190,27 @@ jobs:
153
190
154
191
- name : Set up Ruby
155
192
uses : ruby/setup-ruby@v1
193
+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
156
194
with :
157
195
ruby-version : 2.7
158
196
bundler-cache : true
159
197
160
198
- name : Setup node 16
161
199
uses : actions/setup-node@v3
200
+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
162
201
with :
163
202
node-version : ' 16'
164
203
165
204
- name : Set up JDK
166
205
uses : actions/setup-java@v3
206
+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
167
207
with :
168
208
distribution : ' zulu'
169
209
java-version : 11
170
210
171
211
- name : Instrumentation Tests
172
212
uses : reactivecircus/android-emulator-runner@v2
213
+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
173
214
with :
174
215
api-level : ${{ matrix.api-level }}
175
216
target : ${{ matrix.target }}
@@ -180,10 +221,10 @@ jobs:
180
221
181
222
- name : Upload Reports
182
223
uses : actions/upload-artifact@v3
224
+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
183
225
with :
184
226
name : Test-Reports
185
227
path : ${{ github.workspace }}/example/android/app/build/reports
186
- if : always()
187
228
188
229
ios-build-test :
189
230
runs-on : macos-latest
@@ -196,9 +237,21 @@ jobs:
196
237
- name : Checkout the code
197
238
uses : actions/checkout@v4
198
239
240
+ - name : Verify iOS Changed files
241
+ uses :
tj-actions/[email protected]
242
+ id : verify-iOS-changed-files
243
+ with :
244
+ files : |
245
+ ios/**
246
+ src/**
247
+ assets/**
248
+ package.json
249
+ !example/android/**
250
+
199
251
- uses : actions/cache@v3
200
252
name : Cache node_modules
201
253
id : cache-node-modules
254
+ if : steps.verify-iOS-changed-files.outputs.files_changed == 'true'
202
255
with :
203
256
path : |
204
257
node_modules
@@ -209,42 +262,52 @@ jobs:
209
262
- name : Cache Pods
210
263
id : cache-pods
211
264
uses : actions/cache@v3
265
+ if : steps.verify-iOS-changed-files.outputs.files_changed == 'true'
212
266
with :
213
267
path : example/ios/Pods
214
268
key : ${{ runner.os }}-pods-${{ matrix.cocoapods }}-${{ hashFiles('**/Podfile.lock') }}
215
269
216
270
- name : Set up Ruby
217
271
uses : ruby/setup-ruby@v1
272
+ if : steps.verify-iOS-changed-files.outputs.files_changed == 'true'
218
273
with :
219
274
ruby-version : 2.7
220
275
bundler-cache : true
276
+
221
277
- name : Install Cocoapods
278
+ if : steps.verify-iOS-changed-files.outputs.files_changed == 'true'
222
279
run : gem install cocoapods -v ${{ matrix.cocoapods }}
280
+
223
281
- name : Setup node 16
282
+ if : steps.verify-iOS-changed-files.outputs.files_changed == 'true'
224
283
uses : actions/setup-node@v3
225
284
with :
226
285
node-version : ' 16'
227
286
228
287
- name : Install Pods
229
- if : steps.cache-pods.outputs.cache-hit != 'true'
288
+ if : steps.cache-pods.outputs.cache-hit != 'true' && steps.verify-iOS-changed-files.outputs.files_changed == 'true'
230
289
run : |
231
290
cd example/ios
232
291
pod cache clean --all
233
292
pod install
234
293
235
294
- name : Install xcpretty
295
+ if : steps.verify-iOS-changed-files.outputs.files_changed == 'true'
236
296
run : gem install xcpretty
237
297
238
298
- name : Build
299
+ if : steps.verify-iOS-changed-files.outputs.files_changed == 'true'
239
300
run : |
240
301
cd example/ios
241
302
xcodebuild -workspace ImageMarkerExample.xcworkspace -scheme ImageMarkerExample -configuration Release -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 12' | xcpretty
303
+
242
304
- name : Test
305
+ if : steps.verify-iOS-changed-files.outputs.files_changed == 'true'
243
306
run : |
244
307
cd example/ios
245
308
xcodebuild -workspace ImageMarkerExample.xcworkspace -scheme ImageMarkerExample -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 12' test | xcpretty
246
309
247
- native- ci-complete :
310
+ ci-complete :
248
311
name : Complete CI
249
312
needs : [android-build, android-test, ios-build-test]
250
313
if : ${{ always() }}
0 commit comments