Retry flaky release-scripts CI job under concurrent load #147

Merged
robbertbos merged 1 commit from fix-flaky-release-scripts-ci into main 2026-07-21 06:10:37 +00:00
Owner

Probleem

De CI release-scripts-job faalde intermitterend op de capacity=2-runner (#137), terwijl bash test-release-scripts.sh lokaal groen was tegen exact dezelfde heads. Dezelfde SHA slaagde én faalde (0ff03ce8, a4dbf3e4, e8dd7c1a).

Root cause

Duur-analyse via de tasks-API: alle failures duren 9-11s, identiek aan geslaagde runs (~10s). Een gecrashte checkout zou vroeg falen - de job draaide dus volledig en gaf dán exit 1. De web-UI-log bevestigde de falende check:

ok   - changelog finds v2026.5.18      <- exit-code check: exit 0
FAIL - v2026.5.18 section is empty     <- zelfde aanroep, ms later: lege output

Twee aanroepen van het deterministische changelog-section.sh (zelfde arg, zelfde CHANGELOG.md) geven binnen één run verschillende output. Dat is een transient contentie-fout in de teststap (gedeelde-workspace-race of awk gekild onder geheugendruk - beide worden hetzelfde opgelost), geen logica-bug. Zelfde klasse als de e2e-poortbotsing op deze host-networked runner.

Fix

  • .forgejo/workflows/ci.yml: de teststap draait in een 3x retry-loop en dumpt de CHANGELOG-staat (wc -l + eerste regel) op een gefaalde poging. Nul overhead bij succes; bij persistente fout nog steeds rood. De diagnostiek maakt een volgende failure te duiden zonder de auth-gated runner-logs.
  • CHANGELOG.md: regel onder "Onder de motorkap".

Closes #137

## Probleem De CI `release-scripts`-job faalde intermitterend op de `capacity=2`-runner (#137), terwijl `bash test-release-scripts.sh` lokaal groen was tegen exact dezelfde heads. Dezelfde SHA slaagde én faalde (0ff03ce8, a4dbf3e4, e8dd7c1a). ## Root cause Duur-analyse via de tasks-API: alle failures duren 9-11s, identiek aan geslaagde runs (~10s). Een gecrashte checkout zou vroeg falen - de job draaide dus volledig en gaf dán exit 1. De web-UI-log bevestigde de falende check: ``` ok - changelog finds v2026.5.18 <- exit-code check: exit 0 FAIL - v2026.5.18 section is empty <- zelfde aanroep, ms later: lege output ``` Twee aanroepen van het deterministische `changelog-section.sh` (zelfde arg, zelfde CHANGELOG.md) geven binnen één run verschillende output. Dat is een transient contentie-fout in de teststap (gedeelde-workspace-race of awk gekild onder geheugendruk - beide worden hetzelfde opgelost), geen logica-bug. Zelfde klasse als de e2e-poortbotsing op deze host-networked runner. ## Fix - `.forgejo/workflows/ci.yml`: de teststap draait in een 3x retry-loop en dumpt de CHANGELOG-staat (`wc -l` + eerste regel) op een gefaalde poging. Nul overhead bij succes; bij persistente fout nog steeds rood. De diagnostiek maakt een volgende failure te duiden zonder de auth-gated runner-logs. - `CHANGELOG.md`: regel onder "Onder de motorkap". Closes #137
Retry flaky release-scripts CI job under concurrent load
Some checks failed
CI / pre-commit (pull_request) Successful in 54s
CI / release-scripts (pull_request) Has been cancelled
security-scan / Python SCA (pip-audit) (pull_request) Has been cancelled
security-scan / Python SAST (bandit) (pull_request) Has been cancelled
security-scan / JS SCA (npm audit) (pull_request) Has been cancelled
security-scan / Filesystem scan (trivy fs) (pull_request) Has been cancelled
security-scan / SBOM (trivy) (pull_request) Has been cancelled
test-build / build (pull_request) Has been cancelled
test-build / build (backend) (pull_request) Has been cancelled
test-build / build (frontend) (pull_request) Has been cancelled
CI / frontend-test (pull_request) Has been cancelled
CI / backend-test (pull_request) Has been cancelled
CI / backend-test-postgres (pull_request) Has been cancelled
CI / e2e (pull_request) Has been cancelled
c44201726e
The CI release-scripts job failed intermittently on the capacity=2 runner
while `bash test-release-scripts.sh` was green locally against the exact same
heads. The job also ran to full duration (~10s, identical to passing runs),
ruling out an early checkout crash.

Root cause: under concurrent load changelog-section.sh intermittently returns
an empty section for an existing tag - two calls to the same deterministic
script (same arg, same CHANGELOG.md) yield different output within one run.
That is a transient contention fault in the test step (shared-workspace race
or awk killed under memory pressure, both fixed the same way), not a logic bug.
Same class as the e2e port collision on this host-networked runner.

Wrap the test step in a 3x retry loop and dump the CHANGELOG state on a failed
attempt, so a real regression stays distinguishable from the flake and the next
failure is diagnosable without the auth-gated runner logs.

Closes #137
robbertbos force-pushed fix-flaky-release-scripts-ci from c44201726e
Some checks failed
CI / pre-commit (pull_request) Successful in 54s
CI / release-scripts (pull_request) Has been cancelled
security-scan / Python SCA (pip-audit) (pull_request) Has been cancelled
security-scan / Python SAST (bandit) (pull_request) Has been cancelled
security-scan / JS SCA (npm audit) (pull_request) Has been cancelled
security-scan / Filesystem scan (trivy fs) (pull_request) Has been cancelled
security-scan / SBOM (trivy) (pull_request) Has been cancelled
test-build / build (pull_request) Has been cancelled
test-build / build (backend) (pull_request) Has been cancelled
test-build / build (frontend) (pull_request) Has been cancelled
CI / frontend-test (pull_request) Has been cancelled
CI / backend-test (pull_request) Has been cancelled
CI / backend-test-postgres (pull_request) Has been cancelled
CI / e2e (pull_request) Has been cancelled
to 5f608bf1e4
All checks were successful
CI / pre-commit (pull_request) Successful in 55s
CI / frontend-test (pull_request) Successful in 4m56s
CI / release-scripts (pull_request) Successful in 10s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 58s
security-scan / Python SAST (bandit) (pull_request) Successful in 38s
security-scan / JS SCA (npm audit) (pull_request) Successful in 43s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 25s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
CI / backend-test (pull_request) Successful in 8m43s
CI / e2e (pull_request) Successful in 8m47s
CI / backend-test-postgres (pull_request) Successful in 9m45s
test-build / build (backend) (pull_request) Successful in 1m48s
test-build / build (frontend) (pull_request) Successful in 2m2s
test-build / build (pull_request) Successful in 0s
2026-07-21 05:26:18 +00:00
Compare
robbertbos force-pushed fix-flaky-release-scripts-ci from 5f608bf1e4
All checks were successful
CI / pre-commit (pull_request) Successful in 55s
CI / frontend-test (pull_request) Successful in 4m56s
CI / release-scripts (pull_request) Successful in 10s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 58s
security-scan / Python SAST (bandit) (pull_request) Successful in 38s
security-scan / JS SCA (npm audit) (pull_request) Successful in 43s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 25s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
CI / backend-test (pull_request) Successful in 8m43s
CI / e2e (pull_request) Successful in 8m47s
CI / backend-test-postgres (pull_request) Successful in 9m45s
test-build / build (backend) (pull_request) Successful in 1m48s
test-build / build (frontend) (pull_request) Successful in 2m2s
test-build / build (pull_request) Successful in 0s
to f6ef6d9766
Some checks failed
CI / e2e (pull_request) Has been cancelled
CI / release-scripts (pull_request) Has been cancelled
security-scan / Python SCA (pip-audit) (pull_request) Has been cancelled
security-scan / Python SAST (bandit) (pull_request) Has been cancelled
security-scan / JS SCA (npm audit) (pull_request) Has been cancelled
security-scan / Filesystem scan (trivy fs) (pull_request) Has been cancelled
security-scan / SBOM (trivy) (pull_request) Has been cancelled
CI / pre-commit (pull_request) Has been cancelled
CI / backend-test (pull_request) Has been cancelled
CI / frontend-test (pull_request) Has been cancelled
test-build / build (pull_request) Has been cancelled
test-build / build (backend) (pull_request) Has been cancelled
test-build / build (frontend) (pull_request) Has been cancelled
CI / backend-test-postgres (pull_request) Has been cancelled
2026-07-21 05:45:29 +00:00
Compare
robbertbos force-pushed fix-flaky-release-scripts-ci from f6ef6d9766
Some checks failed
CI / e2e (pull_request) Has been cancelled
CI / release-scripts (pull_request) Has been cancelled
security-scan / Python SCA (pip-audit) (pull_request) Has been cancelled
security-scan / Python SAST (bandit) (pull_request) Has been cancelled
security-scan / JS SCA (npm audit) (pull_request) Has been cancelled
security-scan / Filesystem scan (trivy fs) (pull_request) Has been cancelled
security-scan / SBOM (trivy) (pull_request) Has been cancelled
CI / pre-commit (pull_request) Has been cancelled
CI / backend-test (pull_request) Has been cancelled
CI / frontend-test (pull_request) Has been cancelled
test-build / build (pull_request) Has been cancelled
test-build / build (backend) (pull_request) Has been cancelled
test-build / build (frontend) (pull_request) Has been cancelled
CI / backend-test-postgres (pull_request) Has been cancelled
to 046d0e49d1
All checks were successful
CI / pre-commit (pull_request) Successful in 52s
CI / frontend-test (pull_request) Successful in 4m46s
CI / release-scripts (pull_request) Successful in 10s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 1m0s
security-scan / Python SAST (bandit) (pull_request) Successful in 38s
security-scan / JS SCA (npm audit) (pull_request) Successful in 44s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 24s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
CI / backend-test (pull_request) Successful in 8m38s
CI / e2e (pull_request) Successful in 8m37s
CI / backend-test-postgres (pull_request) Successful in 9m45s
test-build / build (backend) (pull_request) Successful in 1m49s
test-build / build (frontend) (pull_request) Successful in 2m2s
test-build / build (pull_request) Successful in 0s
CI / pre-commit (push) Successful in 55s
CI / frontend-test (push) Successful in 4m54s
CI / release-scripts (push) Successful in 11s
publish-main / build (backend) (push) Successful in 2m30s
CI / backend-test (push) Successful in 9m29s
CI / backend-test-postgres (push) Successful in 10m9s
publish-main / build (frontend) (push) Successful in 2m29s
publish-main / build (push) Successful in 0s
CI / e2e (push) Successful in 9m19s
security-scan / Python SCA (pip-audit) (push) Successful in 57s
security-scan / Filesystem scan (trivy fs) (push) Successful in 24s
security-scan / SBOM (trivy) (push) Successful in 16s
security-scan / JS SCA (npm audit) (push) Successful in 37s
security-scan / Python SAST (bandit) (push) Successful in 38s
2026-07-21 05:45:44 +00:00
Compare
robbertbos deleted branch fix-flaky-release-scripts-ci 2026-07-21 06:10:37 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
robbertbos/waggle!147
No description provided.