19
19
builds :
20
20
description : ' Whether any builds will happen'
21
21
value : ${{ jobs.needs-e2e-build.outputs.builds }}
22
+ android_build_action :
23
+ description : ' Android build action: full, repack, or skip'
24
+ value : ${{ jobs.needs-e2e-build.outputs.android_build_action }}
25
+ ios_build_action :
26
+ description : ' iOS build action: full, repack, or skip'
27
+ value : ${{ jobs.needs-e2e-build.outputs.ios_build_action }}
22
28
23
29
jobs :
24
30
needs-e2e-build :
28
34
android : ${{ steps.set-outputs.outputs.android_final }}
29
35
ios : ${{ steps.set-outputs.outputs.ios_final }}
30
36
builds : ${{ steps.set-outputs.outputs.builds }}
37
+ android_build_action : ${{ steps.set-outputs.outputs.android_build_action }}
38
+ ios_build_action : ${{ steps.set-outputs.outputs.ios_build_action }}
31
39
env :
32
40
# For a `pull_request` event, the head commit hash is `github.event.pull_request.head.sha`.
33
41
# For a `push` event, the head commit hash is `github.sha`.
@@ -111,6 +119,7 @@ jobs:
111
119
- '**/*' # Matches everything for conservative fallback
112
120
list-files : ' shell' # Output lists for comparison
113
121
122
+
114
123
- name : Set final outputs
115
124
id : set-outputs
116
125
run : |
@@ -121,6 +130,8 @@ jobs:
121
130
echo "android_final=false"
122
131
echo "ios_final=false"
123
132
echo "builds=false"
133
+ echo "android_build_action=skip"
134
+ echo "ios_build_action=skip"
124
135
} >> "${GITHUB_OUTPUT}"
125
136
echo "-> Skipping build+E2E tests due to 'skip-e2e' tag"
126
137
exit 0
@@ -136,6 +147,7 @@ jobs:
136
147
ignore_files="${{ steps.filter.outputs.ignore_files }}"
137
148
catch_all_files="${{ steps.filter.outputs.catch_all_files }}"
138
149
150
+
139
151
# Use Cases for State Machine:
140
152
# 1. Purely ignored changes -> Skip both
141
153
# 2. Shared changes -> Build both
@@ -144,7 +156,7 @@ jobs:
144
156
# 5. Android-only changes -> Android only
145
157
# 6. iOS-only changes -> iOS only
146
158
147
- # State Machine
159
+ # State Machine for determining which platforms need attention
148
160
if [[ "$android" == 'true' && "$ios" != 'true' ]]; then
149
161
state="ANDROID_ONLY"
150
162
elif [[ "$ios" == 'true' && "$android" != 'true' ]]; then
@@ -155,31 +167,46 @@ jobs:
155
167
state="SHARED"
156
168
fi
157
169
170
+ # Determine build actions based on path changes + fingerprint
158
171
case "$state" in
159
172
"PURE_IGNORE")
160
173
echo "Ignoring - no mobile code changes"
161
174
android_final="false"
162
175
ios_final="false"
176
+ android_build_action="skip"
177
+ ios_build_action="skip"
163
178
;;
164
179
"SHARED")
165
- echo "Building both platforms"
180
+ echo "Both platforms affected by changes "
166
181
android_final="true"
167
182
ios_final="true"
183
+ # Fingerprint check will happen in Android build workflow
184
+ android_build_action="check_fingerprint"
185
+ # iOS not using fingerprint optimization yet
186
+ ios_build_action="full"
168
187
;;
169
188
"ANDROID_ONLY")
170
- echo "Building Android only"
189
+ echo "Android- only changes "
171
190
android_final="true"
172
191
ios_final="false"
192
+ ios_build_action="skip"
193
+ # For platform-specific changes, always do full build (native code likely changed)
194
+ android_build_action="full"
173
195
;;
174
196
"IOS_ONLY")
175
- echo "Building iOS only"
197
+ echo "iOS- only changes "
176
198
android_final="false"
177
199
ios_final="true"
200
+ android_build_action="skip"
201
+ # iOS not using fingerprint optimization yet
202
+ ios_build_action="full"
178
203
;;
179
204
esac
180
205
181
206
echo "android_final=$android_final" >> "${GITHUB_OUTPUT}"
182
207
echo "ios_final=$ios_final" >> "${GITHUB_OUTPUT}"
208
+ echo "android_build_action=$android_build_action" >> "${GITHUB_OUTPUT}"
209
+ echo "ios_build_action=$ios_build_action" >> "${GITHUB_OUTPUT}"
183
210
184
211
# Check if any builds will happen
185
212
if [[ "$android_final" == 'true' || "$ios_final" == 'true' ]]; then
@@ -188,3 +215,7 @@ jobs:
188
215
builds="false"
189
216
fi
190
217
echo "builds=$builds" >> "${GITHUB_OUTPUT}"
218
+
219
+ echo "Build decisions:"
220
+ echo " Android: $android_build_action (build=$android_final)"
221
+ echo " iOS: $ios_build_action (build=$ios_final)"
0 commit comments