ci(dast): verplaats DAST naar de pre-tag slag make check-release #856

Merged
brenno merged 1 commit from fix/dast-pre-tag into main 2026-07-25 10:09:45 +00:00
Owner

Verplaatst de DAST-scan van post-deploy (#850) naar een pre-tag kwaliteitsslag. Volgt op de terechte observatie dat een scan de deploy te laat is: dan staat de site al live en kan een bevinding een release niet meer tegenhouden.

Wat er verandert

  • Nieuw doel make check-release — de "ready for tagging"-slag die je met de hand draait vóór git push origin v*:
    • check-full als harde poort (analyse, tests, opmaak, secrets, SAST, licenties, SBOM, deps, webharding);
    • daarna een adviserende ZAP/DAST-basisscan tegen de live host (DAST_LIVE_URL, standaard https://ocideck.librekat.nl/).
  • DAST maakt het commando nooit rood. Een ZAP-waarschuwing weeg je en legt je zo nodig als issue vast (zo kwam #849), ze houdt de slag niet tegen. De blokkerende zekerheid zit in check-full.
  • Zonder container-runtime slaat de DAST-stap zichzelf over met een duidelijke melding.
  • Post-deploy DAST uit deploy_web.sh verwijderd (revert van #850's stap 6), met een comment die naar check-release verwijst.

Waarom pre-tag, niet in de release-workflow

Het pushen van de v*-tag is de trigger van de hele keten (release.yml: bouwen, publiceren, live zetten). Een kwaliteitsslag hoort er dus vóór, met de hand — dat is ook waar deze release al handmatige stappen heeft (secrets, publicatie). Daarom een make-doel en een regel in de "Before you tag"-checklist, geen job op de tag.

Getest

  • make -n check-release: expandeert correct naar check-full → docker-check → make dast DAST_URL=…live… → afsluiting; slaat netjes over zonder runtime.
  • make dast DAST_URL=https://ocideck.librekat.nl/ draaide echt eerder: 0 FAIL, 9 WARN (passief).
  • shellcheck + bash -n op deploy_web.sh: schoon. make check: groen (6599 tests; docs-anker- en docs-claim-tests expliciet nagelopen). make check-secrets + make sast: groen.

Docs

docs/CHECKS.md (nieuwe make check-release-sectie + dast-bullet), docs/BUILD.md ("Before you tag" → make check-release als eerste stap, plus make linux-gate en een blik op open security/privacy-issues), Makefile-help en de CHANGELOG-entry (herzien van post-deploy naar pre-tag; niets was uitgebracht).

Bewaker

Ontwikkelgereedschap: raakt bestandsformaat, opslag, afhankelijkheden noch een publieke belofte. De enige uitgaande actie is een passieve scan van onze eigen host, met de hand vóór een tag. Geen bewaker-weging nodig.

Verplaatst de DAST-scan van post-deploy (#850) naar een pre-tag kwaliteitsslag. Volgt op de terechte observatie dat een scan *ná* de deploy te laat is: dan staat de site al live en kan een bevinding een release niet meer tegenhouden. ## Wat er verandert - **Nieuw doel `make check-release`** — de "ready for tagging"-slag die je met de hand draait vóór `git push origin v*`: - `check-full` als **harde poort** (analyse, tests, opmaak, secrets, SAST, licenties, SBOM, deps, webharding); - daarna een **adviserende** ZAP/DAST-basisscan tegen de live host (`DAST_LIVE_URL`, standaard `https://ocideck.librekat.nl/`). - **DAST maakt het commando nooit rood.** Een ZAP-waarschuwing weeg je en legt je zo nodig als issue vast (zo kwam #849), ze houdt de slag niet tegen. De blokkerende zekerheid zit in `check-full`. - Zonder container-runtime slaat de DAST-stap zichzelf over met een duidelijke melding. - **Post-deploy DAST uit `deploy_web.sh` verwijderd** (revert van #850's stap 6), met een comment die naar `check-release` verwijst. ## Waarom pre-tag, niet in de release-workflow Het pushen van de `v*`-tag *is* de trigger van de hele keten (`release.yml`: bouwen, publiceren, live zetten). Een kwaliteitsslag hoort er dus vóór, met de hand — dat is ook waar deze release al handmatige stappen heeft (secrets, publicatie). Daarom een `make`-doel en een regel in de "Before you tag"-checklist, geen job op de tag. ## Getest - `make -n check-release`: expandeert correct naar check-full → docker-check → `make dast DAST_URL=…live…` → afsluiting; slaat netjes over zonder runtime. - `make dast DAST_URL=https://ocideck.librekat.nl/` draaide echt eerder: 0 FAIL, 9 WARN (passief). - `shellcheck` + `bash -n` op deploy_web.sh: schoon. `make check`: **groen** (6599 tests; docs-anker- en docs-claim-tests expliciet nagelopen). `make check-secrets` + `make sast`: **groen**. ## Docs `docs/CHECKS.md` (nieuwe `make check-release`-sectie + dast-bullet), `docs/BUILD.md` ("Before you tag" → `make check-release` als eerste stap, plus `make linux-gate` en een blik op open security/privacy-issues), Makefile-help en de CHANGELOG-entry (herzien van post-deploy naar pre-tag; niets was uitgebracht). ## Bewaker Ontwikkelgereedschap: raakt bestandsformaat, opslag, afhankelijkheden noch een publieke belofte. De enige uitgaande actie is een passieve scan van onze eigen host, met de hand vóór een tag. Geen bewaker-weging nodig.
ci(dast): verplaats DAST naar de pre-tag slag make check-release
All checks were successful
scans / scans (pull_request) Successful in 3m21s
8dc475305b
De post-deploy scan (#850) draaide ná de wissel: dan staat de site al
live en kan een bevinding een release niet meer tegenhouden. "Voor het
taggen" is het juiste moment.

Nieuw doel `make check-release` — de "ready for tagging"-slag: check-full
als harde poort, plus een adviserende ZAP/DAST-scan tegen de live host
(DAST_LIVE_URL). DAST maakt het commando nooit rood; een waarschuwing weeg
je en leg je zo nodig als issue vast (zo kwam #849). Zonder container-
runtime slaat de DAST-stap zichzelf over. Blijft buiten check/check-full:
dat zijn poorten, dit is een advies dat een runtime nodig heeft.

De post-deploy DAST-stap is uit deploy_web.sh verwijderd. Makefile-help,
.PHONY, docs/CHECKS.md, docs/BUILD.md (Before you tag) en de CHANGELOG-
entry meegewijzigd.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit ce1f6a51d5 into main 2026-07-25 10:09:45 +00:00
Sign in to join this conversation.
No description provided.