android-test: self-build only current stable, not older releases

Milestone/older matrix slots use F-Droid APKs when still hosted; skip
if missing. Rebuild remains limited to stable-self (and master/fix).
This commit is contained in:
Hernâni Marques 2026-07-17 21:57:33 +02:00
parent 984b2d6434
commit cae26e96b2
No known key found for this signature in database
GPG key ID: CB5738652768F7E9
3 changed files with 36 additions and 32 deletions

View file

@ -67,7 +67,8 @@ export SERIAL ANDROID_SERIAL
echo "device: $SERIAL" | tee -a "$SUMMARY"
# --- expand VARIANTS (token "older" → concrete older-pub / older-self entries) ---
# Append one older release as WARN-only (pub APK if possible, else self-build).
# Append one older release as WARN-only — **F-Droid APK only** (no self-build).
# Returns 0 if queued, 1 if skipped (no published APK).
append_older_warn() {
local t="$1" age="$2" target="${3:-}"
local vn meta apk_vc apk_url
@ -83,11 +84,13 @@ append_older_warn() {
apk_url="${meta#*|}"
if fdroid_apk_exists "$apk_url"; then
out+=("older-pub:${vn}:${apk_vc}:warn")
return
return 0
fi
echo " (no F-Droid APK for $vn — self-build only)" | tee -a "$SUMMARY"
echo " SKIP $t — no F-Droid APK at ${apk_url:-?} (self-build only for current stable)" | tee -a "$SUMMARY"
else
echo " SKIP $t — cannot map F-Droid versionCode (self-build only for current stable)" | tee -a "$SUMMARY"
fi
out+=("older-self:${t}:warn")
return 1
}
expand_variants() {
@ -101,16 +104,20 @@ expand_variants() {
[ -n "$v" ] || continue
if [ "$v" = "older" ] || [ "$v" = "older-releases" ] || [ "$v" = "milestones" ]; then
[ "$INCLUDE_OLDER" = "1" ] || continue
# Prefer 3/6/9/12-month samples (always WARN). Fall back: nothing if no tags nearby.
local found=0
# 3/6/9/12-month samples: published APK only, always WARN.
local found=0 queued=0
while read -r t age target; do
[ -n "$t" ] || continue
[ "$t" = "$STABLE_TAG" ] && continue
append_older_warn "$t" "$age" "$target"
found=1
if append_older_warn "$t" "$age" "$target"; then
queued=$((queued + 1))
fi
done < <(select_milestone_tags "$STABLE_TAG" 2>/dev/null || true)
if [ "$found" = "0" ]; then
echo " (no milestone tags within ±${MILESTONE_TOLERANCE_DAYS}d of $MILESTONE_DAYS)" | tee -a "$SUMMARY"
elif [ "$queued" = "0" ]; then
echo " (milestone tags found but none still on F-Droid — no older APK smokes)" | tee -a "$SUMMARY"
fi
else
out+=("$v")
@ -278,24 +285,20 @@ for raw in "${VLIST[@]}"; do
v="$label"
;;
older-self:*)
# older-self:TAG:SEV or older-self:TAG
IFS=':' read -r _ tag sev <<<"$v"
: "${sev:=$(severity_for_tag "$tag")}"
label="older-self-${tag}"
age=$(release_age_days "$tag" 2>/dev/null || echo "?")
echo "older self-build $tag age_days=$age severity=$sev" | tee -a "$SUMMARY"
run_selfbuild "$label" "$tag" "$sev" || rc=$?
v="$label"
# Explicit older-self is disabled by policy (self-build = current stable only).
echo "SKIP $v — self-build only for current stable ($STABLE_TAG); use older-pub or published" | tee -a "$SUMMARY"
RESULTS+=("$v:SKIP(no-selfbuild-older)")
continue
;;
*)
# raw git ref — warn unless looks like wallet-X.Y and young
# raw git ref: only master-like / fix via named tokens; bare wallet-* tags → no self-build
if [[ "$v" =~ ^wallet-[0-9] ]]; then
sev=$(severity_for_tag "$v")
run_selfbuild "ref-${v}" "$v" "$sev" || rc=$?
else
sev=warn
run_selfbuild "ref-${v//\//-}" "$v" warn || rc=$?
echo "SKIP self-build $v — only current stable self-build ($STABLE_TAG) is enabled" | tee -a "$SUMMARY"
RESULTS+=("$v:SKIP(no-selfbuild-older)")
continue
fi
sev=warn
run_selfbuild "ref-${v//\//-}" "$v" warn || rc=$?
;;
esac