taler-monitoring v1.0: standalone suite
This commit is contained in:
commit
a2afe690b7
73 changed files with 18268 additions and 0 deletions
167
android-test/run-android-build-and-smoke.sh
Executable file
167
android-test/run-android-build-and-smoke.sh
Executable file
|
|
@ -0,0 +1,167 @@
|
|||
#!/usr/bin/env bash
|
||||
# Build GNU Taler Android wallet from source at a git **ref**, then run the same
|
||||
# adb deep-link (or GUI) smoke as run-android-pay-smoke.sh.
|
||||
#
|
||||
# Source (default): $HOME/taler/taler-android
|
||||
# Build: ./gradlew :wallet:assembleFdroidDebug
|
||||
# Package id: net.taler.wallet.fdroid.debug
|
||||
#
|
||||
# Typical refs:
|
||||
# BRANCH=master # tip of master
|
||||
# BRANCH=wallet-1.6.1 # published stable **tag** (self-build)
|
||||
# BRANCH=dev/hernani-inference/fix-… # GOA automation fix branch
|
||||
#
|
||||
# For a multi-variant matrix (master + stable self-build + published APK):
|
||||
# ./run-android-variant-matrix.sh
|
||||
#
|
||||
# Usage:
|
||||
# ./run-android-build-and-smoke.sh
|
||||
# BRANCH=master STACK=goa ./run-android-build-and-smoke.sh
|
||||
# BRANCH=wallet-1.6.1 LABEL=stable-self ./run-android-build-and-smoke.sh
|
||||
# SKIP_PULL=1 BRANCH=master ./run-android-build-and-smoke.sh
|
||||
#
|
||||
set -euo pipefail
|
||||
ROOT=$(cd "$(dirname "$0")" && pwd)
|
||||
SMOKE="$ROOT/run-android-pay-smoke.sh"
|
||||
SRC="${TALER_ANDROID_SRC:-$HOME/taler/taler-android}"
|
||||
SKIP_PULL="${SKIP_PULL:-0}"
|
||||
# Prefer existing inference fix branch for GOA withdraw (spinner/exchange resolve).
|
||||
# Matrix uses BRANCH=master and BRANCH=$STABLE_TAG explicitly.
|
||||
BRANCH="${BRANCH:-dev/hernani-inference/fix-bank-withdraw-auto-exchange}"
|
||||
# Optional human label for logs / artifact names (default = sanitized BRANCH)
|
||||
LABEL="${LABEL:-}"
|
||||
VARIANT="${VARIANT:-fdroidDebug}"
|
||||
export ANDROID_HOME="${ANDROID_HOME:-$HOME/Android/Sdk}"
|
||||
export ANDROID_SDK_ROOT="${ANDROID_SDK_ROOT:-$ANDROID_HOME}"
|
||||
|
||||
if [ ! -x "$SRC/gradlew" ]; then
|
||||
echo "taler-android not found at $SRC (set TALER_ANDROID_SRC=…)" >&2
|
||||
exit 2
|
||||
fi
|
||||
if [ ! -d "$ANDROID_HOME" ]; then
|
||||
echo "ANDROID_HOME missing: $ANDROID_HOME" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
printf 'sdk.dir=%s\n' "$ANDROID_HOME" >"$SRC/local.properties"
|
||||
|
||||
# --- checkout REF (branch, origin/branch, or tag) --------------------------------
|
||||
cd "$SRC"
|
||||
if [ -d .git ]; then
|
||||
git fetch origin --tags 2>/dev/null || git fetch origin 2>/dev/null || true
|
||||
REF="$BRANCH"
|
||||
checked=0
|
||||
if [ -n "$REF" ]; then
|
||||
if git rev-parse --verify "refs/tags/${REF}" >/dev/null 2>&1; then
|
||||
echo "checkout tag ${REF} (stable / release self-build)"
|
||||
git checkout -f "refs/tags/${REF}"
|
||||
checked=1
|
||||
SKIP_PULL=1
|
||||
elif git rev-parse --verify "origin/${REF}" >/dev/null 2>&1; then
|
||||
echo "checkout origin/${REF}"
|
||||
git checkout -B "$REF" "origin/${REF}" 2>/dev/null || git checkout "$REF" 2>/dev/null || true
|
||||
checked=1
|
||||
elif git rev-parse --verify "${REF}" >/dev/null 2>&1; then
|
||||
echo "checkout ${REF}"
|
||||
git checkout -f "$REF"
|
||||
checked=1
|
||||
else
|
||||
echo "WARN: ref '${REF}' not found locally after fetch — staying on current HEAD" >&2
|
||||
fi
|
||||
fi
|
||||
if [ "$SKIP_PULL" != "1" ] && [ "$checked" = "1" ]; then
|
||||
# only pull real branches, never tags
|
||||
if git symbolic-ref -q HEAD >/dev/null 2>&1; then
|
||||
br=$(git rev-parse --abbrev-ref HEAD)
|
||||
git pull --ff-only origin "$br" 2>/dev/null || true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
COMMIT=$(git rev-parse --short=12 HEAD 2>/dev/null || echo unknown)
|
||||
HEAD_DESC=$(git describe --tags --always 2>/dev/null || echo "$COMMIT")
|
||||
BR_NOW=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo detached)
|
||||
if [ -z "$LABEL" ]; then
|
||||
LABEL=$(printf '%s' "$BRANCH" | tr '/:' '--' | tr -c 'A-Za-z0-9._-' '-' | cut -c1-48)
|
||||
fi
|
||||
echo "source: $SRC @ $COMMIT ($HEAD_DESC) ref=$BRANCH label=$LABEL head=$BR_NOW"
|
||||
echo "variant: $VARIANT"
|
||||
|
||||
# Map VARIANT → gradle task
|
||||
case "$VARIANT" in
|
||||
fdroidDebug|FdroidDebug) task=assembleFdroidDebug ;;
|
||||
fdroidRelease|FdroidRelease) task=assembleFdroidRelease ;;
|
||||
nightlyDebug|NightlyDebug) task=assembleNightlyDebug ;;
|
||||
googleDebug|GoogleDebug) task=assembleGoogleDebug ;;
|
||||
*)
|
||||
task="assemble$(printf '%s' "$VARIANT" | python3 -c 'import sys; s=sys.stdin.read().strip(); print(s[:1].upper()+s[1:] if s else "FdroidDebug")')"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Low-RAM hosts: cap JVM
|
||||
export GRADLE_OPTS="${GRADLE_OPTS:--Xmx1280m -Dorg.gradle.daemon=false -Dorg.gradle.workers.max=1}"
|
||||
echo "gradle :wallet:$task …"
|
||||
./gradlew ":wallet:$task" --no-daemon --max-workers="${GRADLE_MAX_WORKERS:-1}" \
|
||||
-Dorg.gradle.jvmargs="${GRADLE_JVMARGS:--Xmx1280m}"
|
||||
|
||||
# Prefer fdroid debug APK if multiple exist
|
||||
APK=$(find "$SRC/wallet/build/outputs/apk" -path '*fdroid*debug*.apk' -type f 2>/dev/null | sort | tail -1)
|
||||
if [ -z "$APK" ] || [ ! -f "$APK" ]; then
|
||||
APK=$(find "$SRC/wallet/build/outputs/apk" -name '*.apk' -type f 2>/dev/null | sort | tail -1)
|
||||
fi
|
||||
if [ -z "$APK" ] || [ ! -f "$APK" ]; then
|
||||
echo "no APK under wallet/build/outputs/apk" >&2
|
||||
exit 4
|
||||
fi
|
||||
echo "built apk: $APK ($(wc -c <"$APK") bytes)"
|
||||
|
||||
PKG="${PKG:-}"
|
||||
if [ -z "$PKG" ] && command -v aapt >/dev/null 2>&1; then
|
||||
PKG=$(aapt dump badging "$APK" 2>/dev/null | sed -n "s/^package: name='\([^']*\)'.*/\1/p" | head -1)
|
||||
fi
|
||||
if [ -z "$PKG" ] && command -v aapt2 >/dev/null 2>&1; then
|
||||
PKG=$(aapt2 dump badging "$APK" 2>/dev/null | sed -n "s/^package: name='\([^']*\)'.*/\1/p" | head -1)
|
||||
fi
|
||||
: "${PKG:=net.taler.wallet.fdroid.debug}"
|
||||
|
||||
mkdir -p "$ROOT/apks" "$ROOT/out"
|
||||
STAMP_APK="$ROOT/apks/wallet-${LABEL}-${COMMIT}.apk"
|
||||
cp -f "$APK" "$STAMP_APK"
|
||||
echo "copied → $STAMP_APK"
|
||||
{
|
||||
echo "label=$LABEL"
|
||||
echo "ref=$BRANCH"
|
||||
echo "commit=$COMMIT"
|
||||
echo "describe=$HEAD_DESC"
|
||||
echo "apk=$STAMP_APK"
|
||||
echo "pkg=$PKG"
|
||||
echo "task=$task"
|
||||
} | tee "$ROOT/out/build-${LABEL}.txt"
|
||||
echo "$COMMIT" >"$ROOT/out/build-commit.txt"
|
||||
echo "$APK" >"$ROOT/out/build-apk-path.txt"
|
||||
|
||||
export APK_PATH="$STAMP_APK"
|
||||
export APK_NAME
|
||||
APK_NAME="$(basename "$STAMP_APK")"
|
||||
export PKG
|
||||
export OUT_DIR="${OUT_DIR:-$ROOT/out-source-$LABEL}"
|
||||
mkdir -p "$OUT_DIR"
|
||||
cp -f "$ROOT/out/build-${LABEL}.txt" "$OUT_DIR/build-meta.txt" 2>/dev/null || true
|
||||
|
||||
SMOKE_CMD="$SMOKE"
|
||||
if [ "${GUI:-0}" = "1" ]; then
|
||||
SMOKE_CMD="$ROOT/run-android-gui-smoke.sh"
|
||||
case "$OUT_DIR" in
|
||||
*-gui) ;;
|
||||
*) OUT_DIR="${OUT_DIR}-gui"; export OUT_DIR; mkdir -p "$OUT_DIR" ;;
|
||||
esac
|
||||
fi
|
||||
echo "=== smoke label=$LABEL PKG=$PKG GUI=${GUI:-0} OUT_DIR=$OUT_DIR ==="
|
||||
# Do not exec: allow matrix wrapper to run multiple variants
|
||||
set +e
|
||||
env APK_DIR="$ROOT/apks" APK_NAME="$APK_NAME" APK_PATH="$APK_PATH" PKG="$PKG" OUT_DIR="$OUT_DIR" \
|
||||
"$SMOKE_CMD"
|
||||
rc=$?
|
||||
set -e
|
||||
echo "=== smoke label=$LABEL exit=$rc ==="
|
||||
exit "$rc"
|
||||
Loading…
Add table
Add a link
Reference in a new issue