deploy: selfheal-Wrapper um Binary-Nachbau und dms-worker.env erweitert
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
Drei beim ersten echten 131-Testlauf gefundene Luecken geschlossen: - rollout-131-selfheal.sh prueft/baut jetzt fehlende Ziel-Binaries nach (dms-app, dms-worker, connect-app), statt anzunehmen dass rollout-131-apply.sh das schon erledigt hat. - rollout-131-selfheal.sh leitet dms-worker.env aus dms-app.env ab, falls sie fehlt (identische Logik wie in rollout-131-apply.sh, dort aber nie erreicht, wenn das Skript vorher an fehlenden TODO-Werten abbricht). - rollout-131-healthcheck.sh liest die tatsaechlichen Listen-Adressen aus den Env-Dateien statt fest angenommene Ports (dms-app lief real auf 127.0.0.1:8096, nicht dem angenommenen 8600). Weiterhin kein systemctl-Aufruf in beiden Skripten. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
2cfe8b5c84
commit
a684b46c5c
2 files changed
+84
-9
No files matched your search
Regular → Executable
+31
-9
@@ -4,6 +4,8 @@
|
||||
# (curl gegen bekannte Ports). Aufruf: ./deploy/rollout-131-healthcheck.sh
|
||||
set -uo pipefail
|
||||
|
||||
ENV_DIR="${NEXARCH_ROLLOUT_ENV_DIR:-/etc/nexarch}"
|
||||
|
||||
check() {
|
||||
local name="$1" url="$2"
|
||||
local code
|
||||
@@ -15,6 +17,27 @@ check() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Liest die tatsaechliche Listen-Adresse aus der echten Env-Datei statt einen
|
||||
# Port zu raten -- kein Autodiscovery des Dienstes selbst, nur der schon
|
||||
# konfigurierten Adresse, damit der Check nicht an falsch angenommenen Ports
|
||||
# vorbeilaeuft (siehe Fund vom 2026-09-26: dms-app lief real auf 8096, nicht
|
||||
# auf dem zuvor angenommenen 8600).
|
||||
listen_addr() {
|
||||
local file="$1" var="$2" default="$3"
|
||||
local line
|
||||
line="$(grep "^${var}=" "$file" 2>/dev/null || true)"
|
||||
if [ -n "$line" ] && ! echo "$line" | grep -q '# TODO'; then
|
||||
echo "${line#*=}"
|
||||
else
|
||||
echo "$default"
|
||||
fi
|
||||
}
|
||||
|
||||
DMS_APP_ADDR=$(listen_addr "$ENV_DIR/dms-app.env" NEXARCH_DMS_APP_LISTEN_ADDR "127.0.0.1:8600")
|
||||
DMS_WORKER_METRICS_ADDR=$(listen_addr "$ENV_DIR/dms-worker.env" NEXARCH_DMS_WORKER_METRICS_ADDR "127.0.0.1:8601")
|
||||
DMS_KOSIT_ADDR=$(listen_addr "$ENV_DIR/dms-worker.env" NEXARCH_DMS_WORKER_KOSIT_ADDR "127.0.0.1:8610")
|
||||
CONNECT_APP_ADDR=$(listen_addr "$ENV_DIR/connect-app.env" NEXARCH_CONNECT_APP_LISTEN_ADDR "127.0.0.1:9500")
|
||||
|
||||
echo "== Core (bereits laufend erwartet) =="
|
||||
check "nexarch-core" "http://127.0.0.1:8080/healthz"
|
||||
check "account-api" "http://127.0.0.1:8099/healthz"
|
||||
@@ -23,16 +46,15 @@ check "kek-api" "http://127.0.0.1:8102/healthz"
|
||||
check "policy-api" "http://127.0.0.1:8093/healthz"
|
||||
|
||||
echo "== DMS (Erstinstallation durch diesen Rollout) =="
|
||||
check "dms-app" "http://127.0.0.1:8600/healthz"
|
||||
check "dms-worker-metrics" "http://127.0.0.1:8601/metrics"
|
||||
check "dms-kosit-sidecar" "http://127.0.0.1:8610/healthz"
|
||||
check "dms-app" "http://${DMS_APP_ADDR}/healthz"
|
||||
check "dms-worker-metrics" "http://${DMS_WORKER_METRICS_ADDR}/metrics"
|
||||
check "dms-kosit-sidecar" "http://${DMS_KOSIT_ADDR}/healthz"
|
||||
|
||||
echo "== Connect (Erstinstallation durch diesen Rollout) =="
|
||||
check "connect-app" "http://127.0.0.1:9500/healthz"
|
||||
check "connect-app" "http://${CONNECT_APP_ADDR}/healthz"
|
||||
|
||||
echo
|
||||
echo "Hinweis: Ports/Pfade aus deploy/ports.tsv bzw. den jeweiligen"
|
||||
echo "BETRIEB-UMGEBUNGSVARIABLEN.md-Dokumenten je Modul; falls ein Dienst auf"
|
||||
echo "einer anderen Adresse laeuft als hier angenommen, dieses Skript"
|
||||
echo "entsprechend anpassen (kein Autodiscovery, um keine falsche Sicherheit"
|
||||
echo "vorzutaeuschen)."
|
||||
echo "Hinweis: Adressen werden aus den echten Env-Dateien gelesen"
|
||||
echo "(NEXARCH_*_LISTEN_ADDR); ohne gesetzten Wert greift der Platzhalter aus"
|
||||
echo "deploy/ports.tsv. Kein Autodiscovery des Dienstes selbst, um keine"
|
||||
echo "falsche Sicherheit vorzutaeuschen."
|
||||
@@ -136,6 +136,59 @@ while [ "$attempt" -lt "$MAX_ATTEMPTS" ]; do
|
||||
chown -R nexarch:nexarch "$DMS_INSTALL_DIR" "$CONNECT_INSTALL_DIR" "$DMS_STORAGE_DIR" "$DMS_STAGING_DIR" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
log "== Binaries pruefen (nachbauen falls sie fehlen) =="
|
||||
for triple in "$DMS_INSTALL_DIR/bin/dms-app:$REPO_DIR/dms:./cmd/app" \
|
||||
"$DMS_INSTALL_DIR/bin/dms-worker:$REPO_DIR/dms:./cmd/worker" \
|
||||
"$CONNECT_INSTALL_DIR/bin/connect-app:$REPO_DIR/connect:./cmd/connect-app"; do
|
||||
bin="${triple%%:*}"; rest="${triple#*:}"; moddir="${rest%%:*}"; pkg="${rest#*:}"
|
||||
if [ ! -x "$bin" ]; then
|
||||
if [ -f "$moddir/go.mod" ]; then
|
||||
if ( cd "$moddir" && go build -o "$bin" "$pkg" ) 2>/tmp/rollout-selfheal-buildbin.log; then
|
||||
log "repariert: ${bin} nachgebaut (aus ${moddir}, ${pkg})."
|
||||
fixed_this_round=1
|
||||
else
|
||||
blockers+=("Binary ${bin} fehlt und konnte nicht gebaut werden -- siehe /tmp/rollout-selfheal-buildbin.log")
|
||||
tail -20 /tmp/rollout-selfheal-buildbin.log >&2 || true
|
||||
fi
|
||||
else
|
||||
blockers+=("Binary ${bin} fehlt, Modulverzeichnis ${moddir} nicht gefunden.")
|
||||
fi
|
||||
fi
|
||||
done
|
||||
if id nexarch >/dev/null 2>&1; then
|
||||
chown -R nexarch:nexarch "$DMS_INSTALL_DIR" "$CONNECT_INSTALL_DIR" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
log "== dms-worker.env pruefen (aus dms-app.env ableiten falls sie fehlt) =="
|
||||
if [ ! -f "$DMS_ENV" ]; then
|
||||
blockers+=("dms-app.env fehlt, dms-worker.env kann noch nicht abgeleitet werden.")
|
||||
elif [ ! -f "$ENV_DIR/dms-worker.env" ]; then
|
||||
for v in NEXARCH_DMS_APP_TENANT_DSN NEXARCH_DMS_APP_TENANT_SLUG \
|
||||
NEXARCH_DMS_APP_STORAGE_DIR NEXARCH_DMS_APP_STORAGE_SIGNING_SECRET \
|
||||
NEXARCH_DMS_APP_STORAGE_PUBLIC_BASE_URL NEXARCH_DMS_APP_USAGE_ENDPOINT_URL \
|
||||
NEXARCH_DMS_APP_USAGE_CLIENT_ID NEXARCH_DMS_APP_USAGE_CLIENT_SECRET \
|
||||
NEXARCH_DMS_APP_KEK_ENDPOINT_URL NEXARCH_DMS_APP_KEK_CLIENT_ID \
|
||||
NEXARCH_DMS_APP_KEK_CLIENT_SECRET NEXARCH_DMS_APP_RETENTION_BASE_URL; do
|
||||
line="$(grep "^${v}=" "$DMS_ENV" 2>/dev/null || true)"
|
||||
if [ -n "$line" ] && ! echo "$line" | grep -q '# TODO'; then
|
||||
worker_name="NEXARCH_DMS_WORKER_${v#NEXARCH_DMS_APP_}"
|
||||
worker_value="${line#*=}"
|
||||
echo "${worker_name}=${worker_value}" >> "$ENV_DIR/dms-worker.env"
|
||||
fi
|
||||
done
|
||||
{
|
||||
echo "NEXARCH_DMS_WORKER_METRICS_ADDR=127.0.0.1:8601"
|
||||
echo "NEXARCH_DMS_WORKER_KOSIT_ADDR=127.0.0.1:8610"
|
||||
echo "NEXARCH_DMS_WORKER_CONCURRENCY=2"
|
||||
} >> "$ENV_DIR/dms-worker.env"
|
||||
chmod 600 "$ENV_DIR/dms-worker.env"
|
||||
if id nexarch >/dev/null 2>&1; then
|
||||
chown nexarch:nexarch "$ENV_DIR/dms-worker.env"
|
||||
fi
|
||||
log "repariert: ${ENV_DIR}/dms-worker.env angelegt (Werte aus dms-app.env uebernommen)."
|
||||
fixed_this_round=1
|
||||
fi
|
||||
|
||||
log "== systemd-Unit-Dateien pruefen (nur Datei-Kopie, kein systemctl) =="
|
||||
for unit in nexarch-connect-app nexarch-dms-app nexarch-dms-worker; do
|
||||
tmpl="$SCRIPT_DIR/systemd/${unit}.service.tmpl"
|
||||
|
||||
Reference in new issue
Block a user