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:
parent
e359cf79c2
commit
4296ac946c
3 changed files with 36 additions and 32 deletions
|
|
@ -245,15 +245,15 @@ Scripts **today** implement Android only; they should honour:
|
||||||
|
|
||||||
| Variant | Source | Severity | Purpose |
|
| Variant | Source | Severity | Purpose |
|
||||||
|---------|--------|----------|---------|
|
|---------|--------|----------|---------|
|
||||||
| **stable-self** | stable tag rebuilt | WARN | Our rebuild — never hard-blocks |
|
| **stable-self** | **only** rebuild of current stable tag | WARN | Self-build vs published for **one** release |
|
||||||
| **published** | F-Droid current APK | **≤14d → BLOCKER**, else WARN | What users install |
|
| **published** | F-Droid current APK | **≤14d → BLOCKER**, else WARN | What users install |
|
||||||
| **older / milestones** | tags ~**3 / 6 / 9 / 12 mo** | **always WARN** | Long-horizon regression, if tags exist |
|
| **older / milestones** | F-Droid APK ~**3 / 6 / 9 / 12 mo** | **always WARN** | No self-build of old tags |
|
||||||
| **master** | `origin/master` | WARN | Tip — never hard-blocks |
|
| **master** | `origin/master` rebuild | WARN | Tip — never hard-blocks |
|
||||||
| **fix** (optional) | inference branch | soft | GOA automation fixes |
|
| **fix** (optional) | inference branch | soft | GOA automation fixes |
|
||||||
|
|
||||||
**Blocker window:** only releases ≤ 14 days.
|
**Self-build:** current stable only (plus master/fix if requested) — not older releases.
|
||||||
**Milestones:** nearest tags to 90/180/270/365 days (±50d) — warn only.
|
**Blocker window:** releases ≤ 14 days.
|
||||||
Default matrix: `stable-self,published,older,master`.
|
**Milestones:** nearest tags to 90/180/270/365d with a still-hosted F-Droid APK.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,14 +38,15 @@ Runs several smokes so a single odd developer build cannot be the only sample:
|
||||||
|---------|------|
|
|---------|------|
|
||||||
| Order | Variant | Severity | What |
|
| Order | Variant | Severity | What |
|
||||||
|------|---------|----------|------|
|
|------|---------|----------|------|
|
||||||
| **1** | **stable-self** | WARN | Rebuild current stable tag |
|
| **1** | **stable-self** | WARN | **Only** self-build: current stable tag |
|
||||||
| **2** | **published** | age ≤14d → **BLOCKER**, else WARN | Current F-Droid APK |
|
| **2** | **published** | age ≤14d → **BLOCKER**, else WARN | Current F-Droid APK |
|
||||||
| **3** | **older / milestones** | **always WARN** | Tags nearest **3 / 6 / 9 / 12 months** (if available) |
|
| **3** | **older / milestones** | **always WARN** | F-Droid APKs nearest **3 / 6 / 9 / 12 months** (if still hosted) — **no self-build** |
|
||||||
| **4** | **master** | WARN | Rebuild `origin/master` |
|
| **4** | **master** | WARN | Rebuild `origin/master` |
|
||||||
|
|
||||||
**Milestones:** `MILESTONE_DAYS="90 180 270 365"` (± `MILESTONE_TOLERANCE_DAYS=50`).
|
**Self-build policy:** only **current published stable** (`stable-self`) + optional **master**.
|
||||||
Failures there are warnings only — never hard blockers.
|
Historical versions: published F-Droid APK only; skip if APK gone.
|
||||||
**Young releases only** (≤ 14 days): hard blocker on fail.
|
**Milestones:** `MILESTONE_DAYS="90 180 270 365"` (±50d), warn only.
|
||||||
|
**Young releases** (≤ 14 days): hard blocker on fail.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./run-android-variant-matrix.sh
|
./run-android-variant-matrix.sh
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,8 @@ export SERIAL ANDROID_SERIAL
|
||||||
echo "device: $SERIAL" | tee -a "$SUMMARY"
|
echo "device: $SERIAL" | tee -a "$SUMMARY"
|
||||||
|
|
||||||
# --- expand VARIANTS (token "older" → concrete older-pub / older-self entries) ---
|
# --- 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() {
|
append_older_warn() {
|
||||||
local t="$1" age="$2" target="${3:-}"
|
local t="$1" age="$2" target="${3:-}"
|
||||||
local vn meta apk_vc apk_url
|
local vn meta apk_vc apk_url
|
||||||
|
|
@ -83,11 +84,13 @@ append_older_warn() {
|
||||||
apk_url="${meta#*|}"
|
apk_url="${meta#*|}"
|
||||||
if fdroid_apk_exists "$apk_url"; then
|
if fdroid_apk_exists "$apk_url"; then
|
||||||
out+=("older-pub:${vn}:${apk_vc}:warn")
|
out+=("older-pub:${vn}:${apk_vc}:warn")
|
||||||
return
|
return 0
|
||||||
fi
|
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
|
fi
|
||||||
out+=("older-self:${t}:warn")
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
expand_variants() {
|
expand_variants() {
|
||||||
|
|
@ -101,16 +104,20 @@ expand_variants() {
|
||||||
[ -n "$v" ] || continue
|
[ -n "$v" ] || continue
|
||||||
if [ "$v" = "older" ] || [ "$v" = "older-releases" ] || [ "$v" = "milestones" ]; then
|
if [ "$v" = "older" ] || [ "$v" = "older-releases" ] || [ "$v" = "milestones" ]; then
|
||||||
[ "$INCLUDE_OLDER" = "1" ] || continue
|
[ "$INCLUDE_OLDER" = "1" ] || continue
|
||||||
# Prefer 3/6/9/12-month samples (always WARN). Fall back: nothing if no tags nearby.
|
# 3/6/9/12-month samples: published APK only, always WARN.
|
||||||
local found=0
|
local found=0 queued=0
|
||||||
while read -r t age target; do
|
while read -r t age target; do
|
||||||
[ -n "$t" ] || continue
|
[ -n "$t" ] || continue
|
||||||
[ "$t" = "$STABLE_TAG" ] && continue
|
[ "$t" = "$STABLE_TAG" ] && continue
|
||||||
append_older_warn "$t" "$age" "$target"
|
|
||||||
found=1
|
found=1
|
||||||
|
if append_older_warn "$t" "$age" "$target"; then
|
||||||
|
queued=$((queued + 1))
|
||||||
|
fi
|
||||||
done < <(select_milestone_tags "$STABLE_TAG" 2>/dev/null || true)
|
done < <(select_milestone_tags "$STABLE_TAG" 2>/dev/null || true)
|
||||||
if [ "$found" = "0" ]; then
|
if [ "$found" = "0" ]; then
|
||||||
echo " (no milestone tags within ±${MILESTONE_TOLERANCE_DAYS}d of $MILESTONE_DAYS)" | tee -a "$SUMMARY"
|
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
|
fi
|
||||||
else
|
else
|
||||||
out+=("$v")
|
out+=("$v")
|
||||||
|
|
@ -278,24 +285,20 @@ for raw in "${VLIST[@]}"; do
|
||||||
v="$label"
|
v="$label"
|
||||||
;;
|
;;
|
||||||
older-self:*)
|
older-self:*)
|
||||||
# older-self:TAG:SEV or older-self:TAG
|
# Explicit older-self is disabled by policy (self-build = current stable only).
|
||||||
IFS=':' read -r _ tag sev <<<"$v"
|
echo "SKIP $v — self-build only for current stable ($STABLE_TAG); use older-pub or published" | tee -a "$SUMMARY"
|
||||||
: "${sev:=$(severity_for_tag "$tag")}"
|
RESULTS+=("$v:SKIP(no-selfbuild-older)")
|
||||||
label="older-self-${tag}"
|
continue
|
||||||
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"
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
# 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
|
if [[ "$v" =~ ^wallet-[0-9] ]]; then
|
||||||
sev=$(severity_for_tag "$v")
|
echo "SKIP self-build $v — only current stable self-build ($STABLE_TAG) is enabled" | tee -a "$SUMMARY"
|
||||||
run_selfbuild "ref-${v}" "$v" "$sev" || rc=$?
|
RESULTS+=("$v:SKIP(no-selfbuild-older)")
|
||||||
else
|
continue
|
||||||
sev=warn
|
|
||||||
run_selfbuild "ref-${v//\//-}" "$v" warn || rc=$?
|
|
||||||
fi
|
fi
|
||||||
|
sev=warn
|
||||||
|
run_selfbuild "ref-${v//\//-}" "$v" warn || rc=$?
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue