Android CI: fail the build on a Gradle error + surface the real cause
The build step ended with `find … *.apk`, which exits 0 even when Gradle failed and no APK exists — so Codemagic marked a failed Gradle run as a green build with no artifact. Now: capture gradle output, use PIPESTATUS to detect failure, print the "What went wrong" / FAILURE block, exit non-zero, and assert an APK exists. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+15
-1
@@ -231,12 +231,26 @@ workflows:
|
|||||||
|
|
||||||
- name: Build the debug APK
|
- name: Build the debug APK
|
||||||
script: |
|
script: |
|
||||||
|
set -e
|
||||||
cd mobile/android
|
cd mobile/android
|
||||||
chmod +x ./gradlew
|
chmod +x ./gradlew
|
||||||
# Debug build type is auto-signed with the Android debug keystore → directly installable, no Play
|
# Debug build type is auto-signed with the Android debug keystore → directly installable, no Play
|
||||||
# account or upload key needed. (A signed release AAB for the Play Store is a later, separate step.)
|
# account or upload key needed. (A signed release AAB for the Play Store is a later, separate step.)
|
||||||
./gradlew assembleDebug --stacktrace
|
# Capture the output so that, on failure, we surface Gradle's actual "What went wrong" block instead
|
||||||
|
# of a wall of internal stack frames — and FAIL the step (a trailing `find` used to exit 0 and mask it).
|
||||||
|
set +e
|
||||||
|
./gradlew assembleDebug --stacktrace 2>&1 | tee /tmp/gradle.log
|
||||||
|
STATUS=${PIPESTATUS[0]}
|
||||||
|
set -e
|
||||||
|
if [ "$STATUS" != "0" ]; then
|
||||||
|
echo "======================= GRADLE FAILURE ======================="
|
||||||
|
grep -n -A 25 "What went wrong" /tmp/gradle.log || true
|
||||||
|
grep -n -A 3 "FAILURE:" /tmp/gradle.log || true
|
||||||
|
echo "=============================================================="
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
echo "APK(s):"; find app/build/outputs -name "*.apk"
|
echo "APK(s):"; find app/build/outputs -name "*.apk"
|
||||||
|
test -n "$(find app/build/outputs -name '*.apk' -print -quit)" || { echo "ERROR: no APK produced"; exit 1; }
|
||||||
artifacts:
|
artifacts:
|
||||||
- mobile/android/app/build/outputs/**/*.apk
|
- mobile/android/app/build/outputs/**/*.apk
|
||||||
# Download the APK from the build page. To get it emailed like TestFlight, add a `publishing.email` block
|
# Download the APK from the build page. To get it emailed like TestFlight, add a `publishing.email` block
|
||||||
|
|||||||
Reference in New Issue
Block a user