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:
parent
b0e186f392
commit
a05307f620
3 changed files with 22 additions and 12 deletions
|
|
@ -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>/`.
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 1–2 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}"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue