android-test: gate order stable-self then published; FAIL_FAST default

Matrix runs release self-build before F-Droid APK, then master. First
failure stops. Emulator cold-boots without snapshots by default.
This commit is contained in:
Hernâni Marques 2026-07-17 21:52:40 +02:00
parent b0e186f392
commit a05307f620
No known key found for this signature in database
3 changed files with 22 additions and 12 deletions

View file

@ -36,15 +36,19 @@ Runs several smokes so a single odd developer build cannot be the only sample:
| Variant | What |
|---------|------|
| **published** | F-Droid stable APK (`net.taler.wallet.fdroid` 1.6.1 / 854) |
| **stable-self** | Rebuild tag `wallet-1.6.1` on this host (same source as stable) |
| **master** | Rebuild `origin/master` |
| Order | Variant | What |
|------|---------|------|
| **1 (gate)** | **stable-self** | Rebuild tag `wallet-1.6.1` on this host |
| **2 (gate)** | **published** | F-Droid stable APK (`net.taler.wallet.fdroid` 1.6.1 / 854) |
| **3** | **master** | Rebuild `origin/master` (only if gates pass when `FAIL_FAST=1`) |
**Default:** `FAIL_FAST=1` — first non-zero gate stops the matrix (no master if stable fails).
```bash
./run-android-variant-matrix.sh
STACK=goa ./run-android-variant-matrix.sh
VARIANTS=master,stable-self ./run-android-variant-matrix.sh
VARIANTS=published,stable-self,master,fix GUI=0 ./run-android-variant-matrix.sh
# only the hard gates:
VARIANTS=stable-self,published FAIL_FAST=1 ./run-android-variant-matrix.sh
```
Artifacts + `SUMMARY.txt` under `out-matrix-<timestamp>/`.

View file

@ -68,8 +68,9 @@ export EMULATOR_GPU
: "${EMULATOR_CORES:=2}"
# If no adb device: start headless AVD (0 = require phone/manual emulator)
: "${AUTO_START_EMULATOR:=1}"
: "${EMULATOR_BOOT_TIMEOUT:=180}"
: "${EMULATOR_BOOT_TIMEOUT:=360}"
: "${EMULATOR_LOG:=/tmp/taler-android-emulator.log}"
: "${EMULATOR_NO_SNAPSHOT:=1}"
android_adb_serial() {
adb devices 2>/dev/null | awk '/\tdevice$/{print $1; exit}'
@ -89,6 +90,10 @@ android_emulator_args() {
# Avoid Qt trying to open a display on servers
export QT_QPA_PLATFORM="${QT_QPA_PLATFORM:-offscreen}"
fi
# Broken default_boot snapshots leave adb offline forever — cold boot by default.
if [ "${EMULATOR_NO_SNAPSHOT:-1}" = "1" ]; then
args+=( -no-snapshot -no-snapshot-load -no-snapshot-save )
fi
if [ -n "${EMULATOR_MEMORY:-}" ]; then
args+=( -memory "$EMULATOR_MEMORY" )
fi

View file

@ -2,10 +2,10 @@
# Run Android wallet smoke against **several build variants** so a single
# "weird" developer tree or a bad local build cannot be the only sample.
#
# Default matrix:
# 1) **published** — F-Droid stable APK (bit-for-bit what users install)
# 2) **stable-self** — rebuild the same release **tag** as published (self-build)
# 3) **master** — rebuild origin/master (tip / CI-style)
# Default matrix (gate order — fail → hard stop when FAIL_FAST=1):
# 1) **stable-self** — rebuild release **tag** (same source as published)
# 2) **published** — F-Droid stable APK (what users install)
# 3) **master** — rebuild origin/master (only if 12 pass with FAIL_FAST)
#
# Why stable-self in addition to published?
# Rare, but a published APK *or* a one-off developer build can be odd
@ -40,8 +40,9 @@ ROOT=$(cd "$(dirname "$0")" && pwd)
: "${STABLE_APK_NAME:=net.taler.wallet.fdroid_854.apk}"
: "${MASTER_BRANCH:=master}"
: "${FIX_BRANCH:=dev/hernani-inference/fix-bank-withdraw-auto-exchange}"
: "${VARIANTS:=published,stable-self,master}"
: "${FAIL_FAST:=0}"
# Gate: stable self-build → published F-Droid; then master. FAIL_FAST default on.
: "${VARIANTS:=stable-self,published,master}"
: "${FAIL_FAST:=1}"
: "${GUI:=0}"
: "${STACK:=auto}"