@@ -2,14 +2,6 @@ name: Build and Test
22on :
33 pull_request :
44 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'
135 workflow_dispatch :
146
157jobs :
@@ -21,27 +13,40 @@ jobs:
2113 - name : Checkout the code
2214 uses : actions/checkout@v4
2315
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+
2425 - uses : actions/cache@v3
2526 name : Cache node_modules
2627 id : cache-node-modules
28+ if : steps.verify-dev-changed-files.outputs.files_changed == 'true'
2729 with :
2830 path : |
2931 node_modules
3032 example/node_modules
3133 key : ${{ runner.os }}-nodeModules-${{ hashFiles('package.json') }}-${{ hashFiles('example/package.json') }}
3234
3335 - name : Set up Ruby
36+ if : steps.verify-dev-changed-files.outputs.files_changed == 'true'
3437 uses : ruby/setup-ruby@v1
3538 with :
3639 ruby-version : 2.7
3740 bundler-cache : true
41+
3842 - name : Setup node 16
43+ if : steps.verify-dev-changed-files.outputs.files_changed == 'true'
3944 uses : actions/setup-node@v3
4045 with :
4146 node-version : ' 16'
4247
4348 - 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'
4550 run : |
4651 ls
4752 pwd
5964 - name : Checkout the code
6065 uses : actions/checkout@v4
6166
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+
6278 - uses : actions/cache@v3
6379 name : Cache node_modules
80+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
6481 id : cache-node-modules
6582 with :
6683 path : |
7289 - uses : actions/cache@v3
7390 id : cache-gradle
7491 name : Cache Gradle dependencies
92+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
7593 with :
7694 path : |
7795 ~/.gradle/caches
@@ -80,40 +98,46 @@ jobs:
8098
8199 - name : Set up Ruby
82100 uses : ruby/setup-ruby@v1
101+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
83102 with :
84103 ruby-version : 2.7
85104 bundler-cache : true
86105
87106 - name : Setup node 16
88107 uses : actions/setup-node@v3
108+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
89109 with :
90110 node-version : ' 16'
91111
92112 - name : Set up JDK
93113 uses : actions/setup-java@v3
114+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
94115 with :
95116 distribution : ' zulu'
96117 java-version : 11
97118
98119 - 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'
100121 run : |
101122 cd example/android
102123 ./gradlew build --stacktrace
103124
104125 - name : Run unit tests
126+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
105127 run : |
106128 cd example/android
107129 ./gradlew test --stacktrace
108130
109131 - name : Build APK
132+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
110133 run : |
111134 npm run prepack
112135 cd example/android
113136 ./gradlew assembleRelease
114137 mv app/build/outputs/apk/release/app-release.apk app-release-${{ github.sha }}.apk
115138
116139 - name : Upload APK
140+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
117141 uses : actions/upload-artifact@v3
118142 with :
119143 name : app-release-${{ github.sha }}.apk
@@ -131,8 +155,20 @@ jobs:
131155 - name : Checkout the code
132156 uses : actions/checkout@v4
133157
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+
134169 - uses : actions/cache@v3
135170 name : Cache node_modules
171+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
136172 id : cache-node-modules
137173 with :
138174 path : |
@@ -143,6 +179,7 @@ jobs:
143179
144180 - uses : actions/cache@v3
145181 name : Cache Gradle dependencies
182+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
146183 id : cache-gradle
147184 with :
148185 path : |
@@ -153,23 +190,27 @@ jobs:
153190
154191 - name : Set up Ruby
155192 uses : ruby/setup-ruby@v1
193+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
156194 with :
157195 ruby-version : 2.7
158196 bundler-cache : true
159197
160198 - name : Setup node 16
161199 uses : actions/setup-node@v3
200+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
162201 with :
163202 node-version : ' 16'
164203
165204 - name : Set up JDK
166205 uses : actions/setup-java@v3
206+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
167207 with :
168208 distribution : ' zulu'
169209 java-version : 11
170210
171211 - name : Instrumentation Tests
172212 uses : reactivecircus/android-emulator-runner@v2
213+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
173214 with :
174215 api-level : ${{ matrix.api-level }}
175216 target : ${{ matrix.target }}
@@ -180,10 +221,10 @@ jobs:
180221
181222 - name : Upload Reports
182223 uses : actions/upload-artifact@v3
224+ if : steps.verify-android-changed-files.outputs.files_changed == 'true'
183225 with :
184226 name : Test-Reports
185227 path : ${{ github.workspace }}/example/android/app/build/reports
186- if : always()
187228
188229 ios-build-test :
189230 runs-on : macos-latest
@@ -196,9 +237,21 @@ jobs:
196237 - name : Checkout the code
197238 uses : actions/checkout@v4
198239
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+
199251 - uses : actions/cache@v3
200252 name : Cache node_modules
201253 id : cache-node-modules
254+ if : steps.verify-iOS-changed-files.outputs.files_changed == 'true'
202255 with :
203256 path : |
204257 node_modules
@@ -209,42 +262,52 @@ jobs:
209262 - name : Cache Pods
210263 id : cache-pods
211264 uses : actions/cache@v3
265+ if : steps.verify-iOS-changed-files.outputs.files_changed == 'true'
212266 with :
213267 path : example/ios/Pods
214268 key : ${{ runner.os }}-pods-${{ matrix.cocoapods }}-${{ hashFiles('**/Podfile.lock') }}
215269
216270 - name : Set up Ruby
217271 uses : ruby/setup-ruby@v1
272+ if : steps.verify-iOS-changed-files.outputs.files_changed == 'true'
218273 with :
219274 ruby-version : 2.7
220275 bundler-cache : true
276+
221277 - name : Install Cocoapods
278+ if : steps.verify-iOS-changed-files.outputs.files_changed == 'true'
222279 run : gem install cocoapods -v ${{ matrix.cocoapods }}
280+
223281 - name : Setup node 16
282+ if : steps.verify-iOS-changed-files.outputs.files_changed == 'true'
224283 uses : actions/setup-node@v3
225284 with :
226285 node-version : ' 16'
227286
228287 - 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'
230289 run : |
231290 cd example/ios
232291 pod cache clean --all
233292 pod install
234293
235294 - name : Install xcpretty
295+ if : steps.verify-iOS-changed-files.outputs.files_changed == 'true'
236296 run : gem install xcpretty
237297
238298 - name : Build
299+ if : steps.verify-iOS-changed-files.outputs.files_changed == 'true'
239300 run : |
240301 cd example/ios
241302 xcodebuild -workspace ImageMarkerExample.xcworkspace -scheme ImageMarkerExample -configuration Release -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 12' | xcpretty
303+
242304 - name : Test
305+ if : steps.verify-iOS-changed-files.outputs.files_changed == 'true'
243306 run : |
244307 cd example/ios
245308 xcodebuild -workspace ImageMarkerExample.xcworkspace -scheme ImageMarkerExample -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 12' test | xcpretty
246309
247- native- ci-complete :
310+ ci-complete :
248311 name : Complete CI
249312 needs : [android-build, android-test, ios-build-test]
250313 if : ${{ always() }}
0 commit comments