From 53a9ceceeba4a003d9ada74b11aa9b28e6c828fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A2ni=20Marques?= Date: Sat, 18 Jul 2026 21:49:53 +0200 Subject: [PATCH] release 1.4.1: generic docs and canonical install path Docs use generic ops/outside-runner wording; install path ~/src/taler-monitoring. VERSION 1.4.1 patch on top of the 1.4.0 scheme release. --- DEPENDENCIES.md | 2 +- README.md | 4 +-- TESTS.md | 2 +- VERSION | 2 +- VERSIONS.md | 49 ++++++++++++++++++---------- android-test/GUI-AUTOMATION-NOTES.md | 4 +-- android-test/README.md | 2 +- host-agent/README.md | 12 +++---- secrets.env.example | 2 +- site-gen/README.md | 18 +++++----- site-gen/ROOT-ON-KOOPA.md | 2 +- site-gen/install-firecuda-timer.sh | 6 +++- site-gen/pull-firecuda-to-koopa.sh | 6 +++- site-gen/run-on-firecuda.sh | 10 +++--- site-gen/settings.conf.example | 4 +-- 15 files changed, 75 insertions(+), 50 deletions(-) diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md index 192a897..8051e9f 100644 --- a/DEPENDENCIES.md +++ b/DEPENDENCIES.md @@ -55,7 +55,7 @@ command -v qrencode zbarimg --- -## firecuda-external (macOS, outside-only timer) +## outside-runner (macOS, outside-only timer) | Need | Notes | |------|--------| diff --git a/README.md b/README.md index 44fe9cd..71dfb9e 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ sibling `~/src/koopa/koopa-admin-secrets`. ### Local file (recommended on laptop) ```bash -cd ~/src/koopa/src/taler-monitoring +cd ~/src/taler-monitoring cp secrets.env.example secrets.env # gitignored $EDITOR secrets.env ./taler-monitoring.sh e2e @@ -387,5 +387,5 @@ If pages are missing publicly: `sudo ~/koopa-caddy/apply-monitoring-live.sh` on ## Version on monitoring pages (v1.3+ / sticky bar) -The sticky bar shows the suite **tag** (e.g. `v1.3.3`) and links to that tag on Forgejo. +The sticky bar shows the suite **tag** (e.g. `v1.4.1`) and links to that tag on Forgejo. Planned **v1.4.0**: fuller L10n (fr-CH for FrancPaysan, de-CH for hacktivism/Taler CH). diff --git a/TESTS.md b/TESTS.md index 66b54cc..85fe7e8 100644 --- a/TESTS.md +++ b/TESTS.md @@ -163,7 +163,7 @@ Skip SPA block: `CHECK_WEBUI_SPA=0`. | **`full`** | `urls inside versions sanity server e2e ladder auth401` | ```bash -cd ~/src/koopa/src/taler-monitoring +cd ~/src/taler-monitoring # secrets.env with bank admin + merchant tokens (see secrets.env.example) ./taler-monitoring.sh -d hacktivism.ch full # same, explicit: diff --git a/VERSION b/VERSION index e21e727..13175fd 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.4.0 \ No newline at end of file +1.4.1 \ No newline at end of file diff --git a/VERSIONS.md b/VERSIONS.md index 2412e13..66ee14f 100644 --- a/VERSIONS.md +++ b/VERSIONS.md @@ -3,21 +3,36 @@ Release history for the standalone **taler-monitoring** suite (https://git.hacktivism.ch/hernani/taler-monitoring). +## Version scheme + +Tags and `VERSION` use **MAJOR.FEATURE.FIX** (three components): + +| Part | Meaning | +|------|---------| +| **MAJOR** | Breaking changes to CLI, layout, or host-agent contract | +| **FEATURE** | New capabilities (phases, HTML features, i18n packs, …) | +| **FIX** | Bugfixes and docs that do not add a feature | + +Git tags: `vMAJOR.FEATURE.FIX` (e.g. `v1.4.1`). File `VERSION` omits the `v` prefix. + | Tag | Date (UTC) | Notes | |-----|------------|--------| -| **v1.3.4** | 2026-07-18 | **Bugfix:** summary line printed raw `$(i18n_text …)` instead of message; aptdeploy remote rsync path `src/src/…`; monpages detects merchant code 21 on any HTTP status + checks bare URLs (no trailing slash); host-agent logs expected public FQDNs. | -| **v1.3.3** | 2026-07-18 | **Docs/fix:** `VERSIONS.md` is git/suite only (no Android blob, no dead `koopa-admin-log` cadence paths); Android stays in `android-test/GUI-AUTOMATION-NOTES.md`. monpages in TESTS; README/host-agent/DEPENDENCIES cleanup. | -| **v1.3.2** | 2026-07-18 | **Bugfix:** drop remaining `koopa-admin-log` suite paths — host-agent/install, path unit, aptdeploy dedupe use **only** `~/src/taler-monitoring`. Reinstall systemd units. | -| **v1.4.0** | *planned* | **L10n** for user-facing outputs that need localization: **fr-CH** (FrancPaysan, Suisse romande) and **de-CH** (hacktivism / Taler CH German). Not implemented yet — after **1.3.x**. | -| **v1.3.1** | 2026-07-18 | **Bugfix:** silent skip when `DEPLOY_WWW_ROOT` not writable left public pages missing (merchant JSON code 21). **monpages** phase + host-agent post-check: verify monitoring HTML via **FQDN** (`https:///monitoring/` etc.). | -| **v1.3** | 2026-07-18 | Sticky bar shows **suite version** and links to the Forgejo **tag** (`…/src/tag/vX.Y.Z`). (supersedes tag name **v1.3.0**) | -| **v1.2** | 2026-07-18 | Language selection: `--lang` / `TALER_MON_LANG` (en\|fr). | -| **v1.1** | 2026-07-18 | i18n chrome: English default; French for FrancPaysan. | -| **v1.0** / **v1** | 2026-07-18 | Initial standalone release (split from `koopa-admin-log`). | +| **v1.5.0** | *planned* | **L10n** packs for user-facing strings that need localization: **fr-CH** (FrancPaysan) and **de-CH** (hacktivism / Taler CH German). | +| **v1.4.1** | 2026-07-18 | **Docs/versioning:** canonical tree `~/src/taler-monitoring`; docs use generic ops/outside-runner wording (no client hostnames); tags always **MAJOR.FEATURE.FIX**. | +| **v1.3.4** | 2026-07-18 | Summary i18n, monpages code-21, aptdeploy rsync path. | +| **v1.3.3** | 2026-07-18 | GIT notes vs GUI notes; monpages in TESTS. | +| **v1.3.2** | 2026-07-18 | Suite paths only `~/src/taler-monitoring` (no admin-log suite tree). | +| **v1.3.1** | 2026-07-18 | monpages FQDN check + deploy no longer silent-skip. | +| **v1.3.0** | 2026-07-18 | Sticky bar suite version + Forgejo tag link. | +| **v1.2.0** | 2026-07-18 | Language selection: `--lang` / `TALER_MON_LANG` (en\|fr). | +| **v1.1.0** | 2026-07-18 | i18n chrome: English default; French for FrancPaysan. | +| **v1.0.0** | 2026-07-18 | Initial standalone release. | -## Sticky bar version (v1.3+) +Older short tags (`v1`, `v1.0`, `v1.1`, `v1.2`, `v1.3`) are obsolete; use the three-component tags above. -Generated HTML shows the installed release tag (e.g. `v1.3.1`) next to the host line. +## Sticky bar version (v1.3.0+) + +Generated HTML shows the installed release tag (e.g. `v1.4.1`) next to the host line. Clicking opens the tag page on Forgejo: `https://git.hacktivism.ch/hernani/taler-monitoring/src/tag/` @@ -26,22 +41,22 @@ Resolved via `git describe --tags` after `update-suite.sh`, with fallback to the ## Public monitoring pages (v1.3.1+) -Host-agent must publish under `DEPLOY_WWW_ROOT` **and** Caddy must `handle` the paths. +Host-agent must publish under `DEPLOY_WWW_ROOT` **and** the reverse proxy must `handle` the paths. If not, public FQDNs return merchant **JSON code 21**. | Check | How | |-------|-----| | Phase | `./taler-monitoring.sh monpages` (or `pages`) | | Auto | host-agent default phases include `monpages`; post-check after HTML write | -| URLs | `https://$MON_HOSTS$HTML_URL_OK` (e.g. `https://taler.hacktivism.ch/monitoring/`) | +| URLs | `https://$MON_HOSTS$HTML_URL_OK` | -Bug (fixed in 1.3.1): rsync to `/var/www/monitoring-sites` was **silently skipped** when not writable, so staging had pages but FQDNs never did. Now that is an **ERROR**, and monpages fails until live apply: +On the stack host (e.g. koopa), publish + Caddy handles: ```bash sudo ~/koopa-caddy/apply-monitoring-live.sh ``` -## Language (v1.2+) +## Language (v1.2.0+) | Method | Example | |--------|---------| @@ -49,11 +64,11 @@ sudo ~/koopa-caddy/apply-monitoring-live.sh | Env | `TALER_MON_LANG=en` or `fr` | | Auto | `*lefrancpaysan*` → fr, else en | -**Note:** Full locale packs (fr-CH / de-CH) for all check messages are scheduled for **v1.4.0**, not 1.3.x. +Full locale packs (fr-CH / de-CH) are scheduled for **v1.5.0**. ## Pin a release ```bash git clone https://git.hacktivism.ch/hernani/taler-monitoring.git ~/src/taler-monitoring -cd ~/src/taler-monitoring && git checkout v1.3.4 +cd ~/src/taler-monitoring && git checkout v1.4.1 ``` diff --git a/android-test/GUI-AUTOMATION-NOTES.md b/android-test/GUI-AUTOMATION-NOTES.md index e7a80e6..f37992a 100644 --- a/android-test/GUI-AUTOMATION-NOTES.md +++ b/android-test/GUI-AUTOMATION-NOTES.md @@ -116,7 +116,7 @@ GUI=1 ./run-android-build-and-smoke.sh ## Platform capability flags (planned + defaults) Automation can run on hosts that support **Android only**, **GUI tooling only** -(conceptual), or **both**. Flags keep that explicit for CI and laptops. +(conceptual), or **both**. Flags keep that explicit for CI and workstations. ### Proposed env flags @@ -152,7 +152,7 @@ with **`-no-window`** and still keep **graphics logic** in the guest: # or let smoke auto-start headless AVD when no phone is plugged in STACK=goa ./run-android-gui-smoke.sh -# laptop: show the emulator window +# ops workstation: show the emulator window WINDOWED=1 ./start-android-emulator.sh --wait # or: EMULATOR_HEADLESS=0 EMULATOR_GPU=host ./start-android-emulator.sh --wait ``` diff --git a/android-test/README.md b/android-test/README.md index 8ed2fb0..977ff0c 100644 --- a/android-test/README.md +++ b/android-test/README.md @@ -104,7 +104,7 @@ Canonical notes (minimal variant, **flags**, Linux defaults): ```bash # headless AVD only (default path for servers) ./start-android-emulator.sh --wait -# windowed (laptops) +# windowed (workstations with display) WINDOWED=1 ./start-android-emulator.sh --wait ``` diff --git a/host-agent/README.md b/host-agent/README.md index fe42dbe..6419f65 100644 --- a/host-agent/README.md +++ b/host-agent/README.md @@ -31,7 +31,7 @@ Thin wrappers only set stack defaults: | `koopa-taler-deploy-test-apt-src-trixie-testing-upgrade` | **upgrade** for testing suite | ```bash -# from laptop / clementine → triggers on koopa-external +# from ops workstation → triggers on koopa-external ./host-agent/run-aptdeploy.sh ./host-agent/run-aptdeploy.sh upgrade ./host-agent/run-aptdeploy.sh fresh @@ -74,7 +74,7 @@ Runs **as user `hernani`** (systemd user, linger). **Primary** mode: `podman exec` on this host into `taler-hacktivism-bank` / `taler-hacktivism-exchange-ansible` / `taler-hacktivism` (IDs `inside.host-*`, not `inside.ssh-*`). - From a **laptop**, leave `INSIDE_PODMAN` off → access mode **`ssh`** via `KOOPA_SSH` + From an **ops workstation**, leave `INSIDE_PODMAN` off → access mode **`ssh`** via `KOOPA_SSH` (`inside.ssh-*`). - Public **`urls` + `versions`** for the stack (`-d hacktivism.ch`). - Writes console HTML for all three sites under @@ -109,7 +109,7 @@ mkdir -p ~/.config/taler-monitoring cp ~/src/taler-monitoring/host-agent/env.example \ ~/.config/taler-monitoring/env -# laptop: +# ops workstation: ./host-agent/install-host-agent.sh --remote koopa-external # or on koopa: @@ -144,16 +144,16 @@ journalctl --user -u taler-monitoring-hacktivism.service -n 50 --no-pager ls ~/monitoring-sites-staging/bank.hacktivism.ch/monitoring_err/ ``` -## Relation to firecuda outside-only timer +## Relation to optional outside-only timer -| | host-agent (koopa) | firecuda site-gen | +| | host-agent (koopa) | outside-runner site-gen | |--|--------------------|-------------------| | Access | **podman on host** | public HTTPS only | | Phases | urls **inside** versions | urls versions | | Trigger | software path + 4h | *could* launchd 4h | | Primary for GOA | **yes** | **off** (optional only) | -**firecuda-external is not scheduled** right now (launchd disabled). Scripts under +**outside-runner is not scheduled** right now (launchd disabled). Scripts under `site-gen/` can still one-shot a public run if needed; see `site-gen/README.md`. No secrets required for default phases. `secrets.env` optional for e2e later. diff --git a/secrets.env.example b/secrets.env.example index 87ec88c..3ce731d 100644 --- a/secrets.env.example +++ b/secrets.env.example @@ -5,7 +5,7 @@ # $EDITOR secrets.env # # Never commit secrets.env. Prefer file paths under koopa-admin-secrets -# for long-term storage; this file is for laptop one-shots / overrides. +# for long-term storage; this file is for workstation one-shots / overrides. # # Load order: env already set > secrets.env > SECRETS_ROOT files > SSH koopa diff --git a/site-gen/README.md b/site-gen/README.md index 482fa58..584dbef 100644 --- a/site-gen/README.md +++ b/site-gen/README.md @@ -14,35 +14,37 @@ Applies to all nine fronts (GOA + FP stage + FP prod) in the default `SITES` lis | Host | Role | |------|------| -| **firecuda-external** | optional runner (public DNS) | +| **optional outside runner** (SSH alias via `FIRECUDA_SSH`) | optional runner (public DNS) | | **koopa-external** | deploy staging + Caddy (root service) | | **host-agents** | primary: GOA + FP on-box (`../host-agent/`) | No secrets in `settings.conf` — only hosts, paths, site list. -## firecuda-external (outside-only) — **disabled for now** +## Optional outside runner (outside-only) — **disabled for now** -**firecuda-external could** run public-only monitoring (`SKIP_SSH=1`, phases +An **optional outside runner** could run public-only monitoring (`SKIP_SSH=1`, phases `urls versions`) on a schedule (launchd every 4h) and write HTML under `~/var/taler-monitoring-sites-work/html/`. Scripts for that still live here (`install-firecuda-timer.sh`, `run-on-firecuda.sh`, plist template). -**Current policy: do not run a real launchd job on firecuda.** +**Current policy: do not run a real launchd job on the outside runner.** Primary GOA monitoring is **koopa host-agent** (`host-agent/`, user `hernani`, -local `podman exec`). Re-enable firecuda only if you explicitly want a second, +local `podman exec`). Re-enable the outside runner only if you explicitly want a second, outside-only view. ```bash # optional one-shot (no timer): -# ssh firecuda-external '~/taler-monitoring-site-gen/site-gen/run-on-firecuda.sh' +# ssh "$FIRECUDA_SSH" # e.g. your outside-runner alias +# ssh "$FIRECUDA_SSH" '~/taler-monitoring-site-gen/site-gen/run-on-firecuda.sh' # if a timer was installed earlier, ensure it is off: -# ssh firecuda-external 'launchctl list | grep taler-monitoring || echo off' +# ssh "$FIRECUDA_SSH" # e.g. your outside-runner alias +# ssh 'launchctl list | grep taler-monitoring || echo off # macOS outside runner' ``` Disabled plists may remain as `*.plist.disabled-*` under `~/Library/LaunchAgents/`. -## Quick start (laptop) +## Quick start (ops workstation) ```bash cd site-gen diff --git a/site-gen/ROOT-ON-KOOPA.md b/site-gen/ROOT-ON-KOOPA.md index 306b044..607d369 100644 --- a/site-gen/ROOT-ON-KOOPA.md +++ b/site-gen/ROOT-ON-KOOPA.md @@ -88,5 +88,5 @@ curl -sS https://bank.hacktivism.ch/monitoring_err/ | head ## Not needed as root -- Running `taler-monitoring` (use **firecuda-external** / laptop) +- Running `taler-monitoring` (use **optional outside runner** (SSH alias via `FIRECUDA_SSH`) / laptop) - Writing into podman Taler containers diff --git a/site-gen/install-firecuda-timer.sh b/site-gen/install-firecuda-timer.sh index 55052e9..576dbff 100755 --- a/site-gen/install-firecuda-timer.sh +++ b/site-gen/install-firecuda-timer.sh @@ -12,7 +12,11 @@ set -euo pipefail ROOT=$(cd "$(dirname "$0")" && pwd) MON_ROOT=$(cd "$ROOT/.." && pwd) -FIRECUDA="${FIRECUDA_SSH:-firecuda-external}" +FIRECUDA="${FIRECUDA_SSH:-}" +if [ -z "$FIRECUDA" ]; then + echo "Set FIRECUDA_SSH to your outside-runner SSH host alias" >&2 + exit 2 +fi REMOTE_BASE="${FIRECUDA_INSTALL_DIR:-taler-monitoring-site-gen}" RUN_NOW=0 [ "${1:-}" = "--run-now" ] && RUN_NOW=1 diff --git a/site-gen/pull-firecuda-to-koopa.sh b/site-gen/pull-firecuda-to-koopa.sh index b1b10ec..43b98e1 100755 --- a/site-gen/pull-firecuda-to-koopa.sh +++ b/site-gen/pull-firecuda-to-koopa.sh @@ -2,7 +2,11 @@ # pull-firecuda-to-koopa.sh — copy HTML from firecuda work dir → koopa staging # Run on laptop (hernani) where both SSH aliases work. set -euo pipefail -FIRECUDA="${FIRECUDA_SSH:-firecuda-external}" +FIRECUDA="${FIRECUDA_SSH:-}" +if [ -z "$FIRECUDA" ]; then + echo "Set FIRECUDA_SSH to your outside-runner SSH host alias" >&2 + exit 2 +fi KOOPA="${DEPLOY_SSH:-koopa-external}" REMOTE_HTML="${FIRECUDA_HTML:-var/taler-monitoring-sites-work/html/}" STAGE="${DEPLOY_STAGING:-/home/hernani/monitoring-sites-staging}" diff --git a/site-gen/run-on-firecuda.sh b/site-gen/run-on-firecuda.sh index 6f77de6..38d26d6 100755 --- a/site-gen/run-on-firecuda.sh +++ b/site-gen/run-on-firecuda.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash -# run-on-firecuda.sh — entrypoint for launchd/cron on firecuda-external. +# run-on-firecuda.sh — entrypoint for launchd/cron on outside-runner. # Outside-only monitoring (SKIP_SSH=1), all 9 sites, then stage HTML to koopa. # -# Installed path on firecuda (default): +# Installed path on outside-runner (default): # ~/taler-monitoring-site-gen/site-gen/run-on-firecuda.sh # set -uo pipefail @@ -16,7 +16,7 @@ STAMP=$(date +%Y%m%d-%H%M%S) LOG="$LOG_DIR/run-${STAMP}.log" exec >>"$LOG" 2>&1 -echo "======== $(date -Iseconds 2>/dev/null || date) firecuda monitoring sites ========" +echo "======== $(date -Iseconds 2>/dev/null || date) outside-runner monitoring sites ========" # Always: public DNS only, no SSH checks into stacks export SKIP_SSH=1 @@ -39,7 +39,7 @@ chmod +x generate-monitoring-sites.sh deploy-monitoring-sites.sh console_to_html ./generate-monitoring-sites.sh ec=$? -# HTML stays on firecuda under WORK_ROOT/html. +# HTML stays on outside-runner under WORK_ROOT/html. # Optional push to koopa if this host can SSH there (often only from laptop): if [ -n "${DEPLOY_SSH:-}" ] && [ "${DEPLOY_FROM_FIRECUDA:-0}" = "1" ]; then if [ -x ./deploy-monitoring-sites.sh ]; then @@ -47,7 +47,7 @@ if [ -n "${DEPLOY_SSH:-}" ] && [ "${DEPLOY_FROM_FIRECUDA:-0}" = "1" ]; then fi else echo "note: HTML at ${WORK_ROOT}/html — pull from laptop:" - echo " rsync -az firecuda-external:var/taler-monitoring-sites-work/html/ \\" + echo " rsync -az outside-runner:var/taler-monitoring-sites-work/html/ \\" echo " koopa-external:monitoring-sites-staging/" echo " # or: ./pull-firecuda-to-koopa.sh" fi diff --git a/site-gen/settings.conf.example b/site-gen/settings.conf.example index f70959b..7b626d1 100644 --- a/site-gen/settings.conf.example +++ b/site-gen/settings.conf.example @@ -2,8 +2,8 @@ # Copy: cp settings.conf.example settings.conf # Never put passwords/tokens here. -# On firecuda the suite runs *locally* (RUNNER_SSH empty). From a laptop you -# can set RUNNER_SSH=firecuda-external to drive a one-off remote run instead. +# On an outside runner the suite runs *locally* (RUNNER_SSH empty). From a laptop you +# can set RUNNER_SSH= to drive a one-off remote run instead. RUNNER_SSH= RUNNER_SSH_FALLBACKS= RUNNER_REMOTE_WORKDIR=/tmp/taler-monitoring-site-gen