v0.8.07-beta - opruimen mag de uitslag van de backuptest niet bepalen
All checks were successful
Deploy server-up (dev) / deploy (push) Successful in 16m13s

De rondgang doorliep alle vijf de stappen goed en de CI-stap viel er daarna
alsnog op om, zonder melding: tussen "Rondgang geslaagd" en het einde zaten
tweeenhalve seconde en verder niets. Dat is het opruimblok.

- opruimen kan de uitslag niet meer bepalen; mislukt het, dan staat dat er
- het script eindigt expliciet met exitcode 0
- de CI drukt de exitcode van de stap af, want zonder dat getal was niet te
  achterhalen waar een rode job vandaan kwam terwijl het scherm groen was

De postgres-race uit v0.8.06 is bevestigd opgelost: de rondgang liep in een
keer door.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q9eqpADJSRs49SoGGr4NAy
This commit is contained in:
Ramon 2026-08-03 22:58:32 +02:00
parent 9fb31dfa9e
commit 2a50b5a92c
4 changed files with 46 additions and 5 deletions

View file

@ -247,7 +247,7 @@ jobs:
# host opgezocht, niet in deze container. # host opgezocht, niet in deze container.
- name: Backup en terugzetten met echte Docker - name: Backup en terugzetten met echte Docker
run: | run: |
set -euo pipefail set -uo pipefail
PROEF="$DEPLOY_DIR/.backup-rondgang" PROEF="$DEPLOY_DIR/.backup-rondgang"
rm -rf "$PROEF"; mkdir -p "$PROEF" rm -rf "$PROEF"; mkdir -p "$PROEF"
docker run --rm \ docker run --rm \
@ -257,6 +257,13 @@ jobs:
-e PYTHONDONTWRITEBYTECODE=1 \ -e PYTHONDONTWRITEBYTECODE=1 \
"server-up:${VERSION}" \ "server-up:${VERSION}" \
python tools/backup_rondgang.py "$PROEF" python tools/backup_rondgang.py "$PROEF"
code=$?
# De exitcode expliciet tonen. Een run die "Rondgang geslaagd" op het
# scherm zette en tóch rood werd, liet nergens zien waar dat vandaan
# kwam — en zonder dit getal is dat niet te achterhalen.
echo "rondgang exitcode: $code"
rm -rf "$PROEF" || true
[ "$code" -eq 0 ] || exit 1
# `--doctor` is ruim honderd regels shell die alleen tegen een échte # `--doctor` is ruim honderd regels shell die alleen tegen een échte
# installatie draaien. De pytest-suite komt niet verder dan "er is geen # installatie draaien. De pytest-suite komt niet verder dan "er is geen

View file

@ -1,3 +1,24 @@
# v0.8.07-beta — "Rondgang geslaagd" en toch een rode job
De backup-rondgang doorliep alle vijf de stappen goed — dump, archief, alles
weggooien, terugzetten, eigenaar bewaard, database schrijft weer — en de
CI-stap viel er daarna alsnog op om. Zonder melding: tussen "Rondgang geslaagd"
en het einde van de stap zaten tweeënhalve seconde en verder niets.
Dat is het opruimblok. Dat hoort de uitslag niet te bepalen: of een
testcontainer zich laat verwijderen zegt niets over of backups werken. Een fout
daar liet nu de hele stap vallen, en omdat er niets werd afgedrukt was er ook
niets aan te zien.
- opruimen kan de uitslag niet meer bepalen; mislukt het, dan staat dát er
- het script eindigt expliciet met exitcode 0, zodat er geen twijfel over de
afloop kan bestaan
- de CI drukt de exitcode van de stap af. Zonder dat getal was niet te
achterhalen waar een rode job vandaan kwam terwijl het scherm groen was
De postgres-race uit v0.8.06 is hiermee bevestigd opgelost: de rondgang liep in
één keer door.
# v0.8.06-beta — De backuptest in de CI struikelde over postgres # v0.8.06-beta — De backuptest in de CI struikelde over postgres
Vier CI-runs op rij faalden, en niet op iets in Server Up: de backup-rondgang Vier CI-runs op rij faalden, en niet op iets in Server Up: de backup-rondgang

View file

@ -1 +1 @@
0.8.06-beta 0.8.07-beta

View file

@ -219,9 +219,22 @@ def main() -> None:
kop("Rondgang geslaagd") kop("Rondgang geslaagd")
finally: finally:
# Opruimen mag de uitslag niet bepalen. De rondgang was hierboven al
# geslaagd of gefaald; een container die zich niet laat verwijderen of
# een map die vastzit is vervelend, maar zegt niets over backups.
# Eerder kon een fout hier de hele stap laten vallen zónder melding:
# "Rondgang geslaagd" op het scherm en toch een rode job.
try:
subprocess.run(["docker", "rm", "-f", f"{STACK}-db"], subprocess.run(["docker", "rm", "-f", f"{STACK}-db"],
capture_output=True, timeout=120) capture_output=True, timeout=120)
except Exception as e:
print(f" opruimen van de container mislukte: {e}", flush=True)
try:
shutil.rmtree(basis, ignore_errors=True) shutil.rmtree(basis, ignore_errors=True)
except Exception as e:
print(f" opruimen van {basis} mislukte: {e}", flush=True)
main() main()
# Expliciet, zodat er geen twijfel over de afloop kan bestaan.
raise SystemExit(0)