|
@@ -690,12 +690,14 @@ jobs:
|
|
|
gradle_build() {
|
|
gradle_build() {
|
|
|
local task="$1"
|
|
local task="$1"
|
|
|
echo ">> ./gradlew $task"
|
|
echo ">> ./gradlew $task"
|
|
|
|
|
+ set -o pipefail
|
|
|
if ! ./gradlew $task 2>&1 | tee /tmp/gradle-$flavor.log; then
|
|
if ! ./gradlew $task 2>&1 | tee /tmp/gradle-$flavor.log; then
|
|
|
- echo "--- gradle $task FAILED for $flavor ---"
|
|
|
|
|
- # show full log tail for diagnosis but keep beginning
|
|
|
|
|
- echo "=== tail 200 ==="; tail -n 200 /tmp/gradle-$flavor.log || true
|
|
|
|
|
|
|
+ echo "--- gradle $task FAILED for $flavor ---" >&2
|
|
|
|
|
+ echo "=== tail 200 ===" >&2; tail -n 200 /tmp/gradle-$flavor.log 2>/dev/null || true
|
|
|
|
|
+ set +o pipefail
|
|
|
return 1
|
|
return 1
|
|
|
fi
|
|
fi
|
|
|
|
|
+ set +o pipefail
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
# Copy any cargo-built ksud into jniLibs so manager bundles it (mirrors stock CI)
|
|
# Copy any cargo-built ksud into jniLibs so manager bundles it (mirrors stock CI)
|
|
@@ -717,18 +719,25 @@ jobs:
|
|
|
# Save signing config so spoof stomp can restore it
|
|
# Save signing config so spoof stomp can restore it
|
|
|
cp -f gradle.properties /tmp/gradle-$flavor.properties.bak 2>/dev/null || true
|
|
cp -f gradle.properties /tmp/gradle-$flavor.properties.bak 2>/dev/null || true
|
|
|
cp -f /tmp/manager-$flavor.jks /tmp/manager-$flavor.jks.bak 2>/dev/null || true
|
|
cp -f /tmp/manager-$flavor.jks /tmp/manager-$flavor.jks.bak 2>/dev/null || true
|
|
|
- if ! gradle_build "clean assembleRelease"; then
|
|
|
|
|
|
|
+ NEXT_OK=false
|
|
|
|
|
+ if gradle_build "clean assembleRelease"; then
|
|
|
|
|
+ NEXT_OK=true
|
|
|
|
|
+ else
|
|
|
echo "Next normal build failed — see log above" >&2
|
|
echo "Next normal build failed — see log above" >&2
|
|
|
- cat /tmp/gradle-$flavor.log 2>/dev/null | grep -i -E "error|failed|exception" | head -n 50 || true
|
|
|
|
|
|
|
+ cat /tmp/gradle-$flavor.log 2>/dev/null | grep -i -E "error|failed|exception|Could not" | head -n 80 || true
|
|
|
|
|
+ echo "--- gradle log tail 200 ---" >&2; tail -n 200 /tmp/gradle-$flavor.log 2>/dev/null || true
|
|
|
fi
|
|
fi
|
|
|
if [ -x ./spoof ]; then
|
|
if [ -x ./spoof ]; then
|
|
|
echo "Building spoofed variant"
|
|
echo "Building spoofed variant"
|
|
|
chmod +x ./spoof
|
|
chmod +x ./spoof
|
|
|
./spoof || true
|
|
./spoof || true
|
|
|
if gradle_build "clean assembleRelease"; then
|
|
if gradle_build "clean assembleRelease"; then
|
|
|
|
|
+ NEXT_OK=true
|
|
|
for apk in app/build/outputs/apk/release/*.apk; do
|
|
for apk in app/build/outputs/apk/release/*.apk; do
|
|
|
[ -f "$apk" ] && cp -f "$apk" "/tmp/next-spoofed.apk" || true
|
|
[ -f "$apk" ] && cp -f "$apk" "/tmp/next-spoofed.apk" || true
|
|
|
done
|
|
done
|
|
|
|
|
+ else
|
|
|
|
|
+ echo "Next spoofed build failed" >&2; tail -n 100 /tmp/gradle-$flavor.log 2>/dev/null || true
|
|
|
fi
|
|
fi
|
|
|
# Restore normal sources + signing (spoof overwrites files, don't git checkout -- .)
|
|
# Restore normal sources + signing (spoof overwrites files, don't git checkout -- .)
|
|
|
git checkout -- app/src/main/java 2>/dev/null || git checkout -- . 2>/dev/null || true
|
|
git checkout -- app/src/main/java 2>/dev/null || git checkout -- . 2>/dev/null || true
|
|
@@ -737,7 +746,15 @@ jobs:
|
|
|
if [ -f /tmp/manager-$flavor.jks ] && grep -q KEYSTORE gradle.properties 2>/dev/null; then
|
|
if [ -f /tmp/manager-$flavor.jks ] && grep -q KEYSTORE gradle.properties 2>/dev/null; then
|
|
|
echo "Restored signing after spoof"
|
|
echo "Restored signing after spoof"
|
|
|
fi
|
|
fi
|
|
|
- gradle_build "clean assembleRelease" || true
|
|
|
|
|
|
|
+ if ! $NEXT_OK; then
|
|
|
|
|
+ # One final retry of normal after restore
|
|
|
|
|
+ if gradle_build "clean assembleRelease"; then NEXT_OK=true; else echo "Next retry after spoof restore failed" >&2; fi
|
|
|
|
|
+ fi
|
|
|
|
|
+ fi
|
|
|
|
|
+ if ! $NEXT_OK; then
|
|
|
|
|
+ echo "ERROR: all Next gradle builds failed for $flavor" >&2
|
|
|
|
|
+ echo "Uploading gradle log for diagnosis"; cat /tmp/gradle-$flavor.log 2>/dev/null | tail -n 300 || true
|
|
|
|
|
+ exit 1
|
|
|
fi
|
|
fi
|
|
|
elif [ "$flavor" = "kernelsu" ]; then
|
|
elif [ "$flavor" = "kernelsu" ]; then
|
|
|
# tiann/KernelSU: single manager, repack embeds ksud+LKM
|
|
# tiann/KernelSU: single manager, repack embeds ksud+LKM
|
|
@@ -794,6 +811,14 @@ jobs:
|
|
|
fi
|
|
fi
|
|
|
echo "MANAGER_OUT_$flavor=$out" >> "$GITHUB_ENV"
|
|
echo "MANAGER_OUT_$flavor=$out" >> "$GITHUB_ENV"
|
|
|
|
|
|
|
|
|
|
+ - name: Upload gradle logs (${{ matrix.flavor }})
|
|
|
|
|
+ if: always() && steps.gate.outputs.run == 'true'
|
|
|
|
|
+ uses: actions/upload-artifact@v7
|
|
|
|
|
+ with:
|
|
|
|
|
+ name: gradle-log-${{ matrix.flavor }}
|
|
|
|
|
+ path: /tmp/gradle-*.log
|
|
|
|
|
+ if-no-files-found: ignore
|
|
|
|
|
+
|
|
|
- name: Upload built manager APKs (${{ matrix.flavor }})
|
|
- name: Upload built manager APKs (${{ matrix.flavor }})
|
|
|
if: steps.gate.outputs.run == 'true'
|
|
if: steps.gate.outputs.run == 'true'
|
|
|
uses: actions/upload-artifact@v7
|
|
uses: actions/upload-artifact@v7
|