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 | | Variant | What |
|---------|------| |---------|------|
| **published** | F-Droid stable APK (`net.taler.wallet.fdroid` 1.6.1 / 854) | | Order | Variant | What |
| **stable-self** | Rebuild tag `wallet-1.6.1` on this host (same source as stable) | |------|---------|------|
| **master** | Rebuild `origin/master` | | **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 ```bash
./run-android-variant-matrix.sh ./run-android-variant-matrix.sh
STACK=goa ./run-android-variant-matrix.sh STACK=goa ./run-android-variant-matrix.sh
VARIANTS=master,stable-self ./run-android-variant-matrix.sh # only the hard gates:
VARIANTS=published,stable-self,master,fix GUI=0 ./run-android-variant-matrix.sh VARIANTS=stable-self,published FAIL_FAST=1 ./run-android-variant-matrix.sh
``` ```
Artifacts + `SUMMARY.txt` under `out-matrix-<timestamp>/`. Artifacts + `SUMMARY.txt` under `out-matrix-<timestamp>/`.

View file

@ -68,8 +68,9 @@ export EMULATOR_GPU
: "${EMULATOR_CORES:=2}" : "${EMULATOR_CORES:=2}"
# If no adb device: start headless AVD (0 = require phone/manual emulator) # If no adb device: start headless AVD (0 = require phone/manual emulator)
: "${AUTO_START_EMULATOR:=1}" : "${AUTO_START_EMULATOR:=1}"
: "${EMULATOR_BOOT_TIMEOUT:=180}" : "${EMULATOR_BOOT_TIMEOUT:=360}"
: "${EMULATOR_LOG:=/tmp/taler-android-emulator.log}" : "${EMULATOR_LOG:=/tmp/taler-android-emulator.log}"
: "${EMULATOR_NO_SNAPSHOT:=1}"
android_adb_serial() { android_adb_serial() {
adb devices 2>/dev/null | awk '/\tdevice$/{print $1; exit}' 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 # Avoid Qt trying to open a display on servers
export QT_QPA_PLATFORM="${QT_QPA_PLATFORM:-offscreen}" export QT_QPA_PLATFORM="${QT_QPA_PLATFORM:-offscreen}"
fi 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 if [ -n "${EMULATOR_MEMORY:-}" ]; then
args+=( -memory "$EMULATOR_MEMORY" ) args+=( -memory "$EMULATOR_MEMORY" )
fi fi

View file

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