2026-05-21 21:21:04 +02:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
# Runs the Firebase Test Lab Dagger pipeline with Gradle/Dagger noise filtered out.
|
2026-05-21 21:23:12 +02:00
|
|
|
# Retries up to 3 times on transient Dagger engine connectivity errors.
|
2026-05-21 21:21:04 +02:00
|
|
|
set -uo pipefail
|
|
|
|
|
|
2026-05-21 21:23:12 +02:00
|
|
|
OUT=$(mktemp)
|
2026-05-21 21:21:04 +02:00
|
|
|
RC_FILE=$(mktemp)
|
2026-05-21 21:23:12 +02:00
|
|
|
trap 'rm -f "$OUT" "$RC_FILE"' EXIT
|
2026-05-21 21:21:04 +02:00
|
|
|
|
|
|
|
|
_strip_ansi() {
|
|
|
|
|
sed 's/\x1b\[[0-9;]*[mGKHFJ]//g'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_filter_noise() {
|
|
|
|
|
grep -vE \
|
|
|
|
|
'> Task :.+(UP-TO-DATE|NO-SOURCE)'\
|
|
|
|
|
'|[0-9]+ files found for path '\''lib/'\
|
|
|
|
|
'|^Inputs:'\
|
|
|
|
|
'|^[[:space:]]+-[[:space:]]/'\
|
|
|
|
|
'|\[Incubating\]'\
|
|
|
|
|
'|Deprecated Gradle features'\
|
|
|
|
|
'|warning-mode all'\
|
|
|
|
|
'|please refer to https://docs\.gradle'\
|
|
|
|
|
'|[0-9]+ actionable tasks'\
|
|
|
|
|
'|^warning: \[options\]'\
|
|
|
|
|
'|^Note: Some input files'\
|
|
|
|
|
'|^\s*[┆│]\s*$' \
|
|
|
|
|
|| true
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-21 21:23:12 +02:00
|
|
|
_run() {
|
|
|
|
|
: > "$OUT" ; : > "$RC_FILE"
|
|
|
|
|
{
|
|
|
|
|
dagger call --progress=plain -q -m ci --source=. test-android-firebase \
|
|
|
|
|
--service-account-key env:FIREBASE_TEST_LAB_SERVICE_ACCOUNT_KEY \
|
|
|
|
|
--project-id "$FIREBASE_PROJECT_ID"
|
|
|
|
|
echo $? > "$RC_FILE"
|
|
|
|
|
} 2>&1 | tee "$OUT" | _strip_ansi | _filter_noise
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for attempt in 1 2 3; do
|
|
|
|
|
_run && break
|
|
|
|
|
RC=$(cat "$RC_FILE" 2>/dev/null || echo 1)
|
|
|
|
|
if [ "$attempt" -lt 3 ] && grep -qE "connection reset|context canceled|connection refused|No Dagger server responded" "$OUT"; then
|
|
|
|
|
echo "[firebase] dagger connectivity error on attempt $attempt/3, retrying..." >&2
|
|
|
|
|
else
|
|
|
|
|
exit "$RC"
|
|
|
|
|
fi
|
|
|
|
|
done
|
2026-05-21 21:21:04 +02:00
|
|
|
|
2026-05-21 21:23:12 +02:00
|
|
|
exit "$(cat "$RC_FILE" 2>/dev/null || echo 0)"
|