diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml index a1b28ce..8febe9c 100644 --- a/.forgejo/workflows/deploy.yml +++ b/.forgejo/workflows/deploy.yml @@ -247,7 +247,7 @@ jobs: # host opgezocht, niet in deze container. - name: Backup en terugzetten met echte Docker run: | - set -euo pipefail + set -uo pipefail PROEF="$DEPLOY_DIR/.backup-rondgang" rm -rf "$PROEF"; mkdir -p "$PROEF" docker run --rm \ @@ -257,6 +257,13 @@ jobs: -e PYTHONDONTWRITEBYTECODE=1 \ "server-up:${VERSION}" \ 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 # installatie draaien. De pytest-suite komt niet verder dan "er is geen diff --git a/CHANGELOG.md b/CHANGELOG.md index e8891d9..a043c8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 Vier CI-runs op rij faalden, en niet op iets in Server Up: de backup-rondgang diff --git a/VERSION b/VERSION index fec0c18..18f96b0 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.8.06-beta +0.8.07-beta diff --git a/tools/backup_rondgang.py b/tools/backup_rondgang.py index 7075ce2..b408e5a 100644 --- a/tools/backup_rondgang.py +++ b/tools/backup_rondgang.py @@ -219,9 +219,22 @@ def main() -> None: kop("Rondgang geslaagd") finally: - subprocess.run(["docker", "rm", "-f", f"{STACK}-db"], - capture_output=True, timeout=120) - shutil.rmtree(basis, ignore_errors=True) + # 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"], + 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) + except Exception as e: + print(f" opruimen van {basis} mislukte: {e}", flush=True) main() +# Expliciet, zodat er geen twijfel over de afloop kan bestaan. +raise SystemExit(0)