feat(release): windows-ophalen dispatcht de spiegel-build actief (2/3) #1314

Merged
brenno merged 2 commits from harden/release-yml-dispatch into main 2026-08-07 00:30:22 +00:00
Owner

Deel 2/3 van het releaseketen-verhardingsplan. Raakt alleen .forgejo/workflows/release.yml (de windows-ophalen-job) + docs/BUILD.md — los van PR #1313.

Kernoorzaak v0.3.6

Stond de tag al op de GitHub-spiegel (eerdere poging / Forgejo's eigen push-mirror), dan is git push mirror <tag> een no-op en vuurt GitHub géén push-event → de Windows-build startte nooit → windows-ophalen wachtte 45 min leeg → publiceren skipped → geen release.

Wat verandert

windows-ophalen leunt niet langer op het push-event maar dispatcht de spiegel-workflow actief via workflow_dispatch:

  • #1 actief dispatchen ongeacht of het event afging (secret GH_DISPATCH_TOKEN).
  • #2 idempotent: asset aanwezig of build al lopend → niet opnieuw dispatchen.
  • #5 poll op run-status: geen run na ~5 min → herdispatch; gefaalde build stopt de job meteen mét run-URL.
  • Terugval: zonder secret → passief wachten (oud gedrag), dus de keten blijft werken tot het secret er is.

#3 (upload clobbert al) en #6 (deploy-web heeft al needs: web) waren al goed → geen wijziging.

Vereist (handmatig, door de houder)

Een fijnmazige GitHub-PAT op brennodewinter/Ocideck (Actions: Read and write, Contents: Read) als Forgejo-repo-secret GH_DISPATCH_TOKEN. Tot dat er is draait de job in terugval-modus.

Toetsing

ruby-YAML-parse valide; ingebedde bash bash -n + shellcheck -s bash schoon. End-to-end pas te toetsen zodra het secret gezet is (volgende release / handmatige workflow_dispatch).

🤖 Generated with Claude Code

Deel **2/3** van het releaseketen-verhardingsplan. Raakt alleen `.forgejo/workflows/release.yml` (de `windows-ophalen`-job) + `docs/BUILD.md` — los van PR #1313. ### Kernoorzaak v0.3.6 Stond de tag al op de GitHub-spiegel (eerdere poging / Forgejo's eigen push-mirror), dan is `git push mirror <tag>` een no-op en vuurt GitHub **géén** `push`-event → de Windows-build startte nooit → `windows-ophalen` wachtte 45 min leeg → `publiceren` skipped → geen release. ### Wat verandert `windows-ophalen` leunt niet langer op het push-event maar **dispatcht de spiegel-workflow actief** via `workflow_dispatch`: - **#1** actief dispatchen ongeacht of het event afging (secret `GH_DISPATCH_TOKEN`). - **#2** idempotent: asset aanwezig of build al lopend → niet opnieuw dispatchen. - **#5** poll op run-status: geen run na ~5 min → herdispatch; gefaalde build stopt de job meteen mét run-URL. - **Terugval**: zonder secret → passief wachten (oud gedrag), dus de keten blijft werken tot het secret er is. `#3` (upload clobbert al) en `#6` (`deploy-web` heeft al `needs: web`) waren al goed → geen wijziging. ### Vereist (handmatig, door de houder) Een fijnmazige GitHub-PAT op `brennodewinter/Ocideck` (**Actions: Read and write**, **Contents: Read**) als Forgejo-repo-secret **`GH_DISPATCH_TOKEN`**. Tot dat er is draait de job in terugval-modus. ### Toetsing `ruby`-YAML-parse valide; ingebedde bash `bash -n` + `shellcheck -s bash` schoon. End-to-end pas te toetsen zodra het secret gezet is (volgende release / handmatige `workflow_dispatch`). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(release): windows-ophalen dispatcht de spiegel-build actief (#1/#2/#5)
Some checks failed
scans / scans (pull_request) Successful in 2m29s
static-gate / static-gate (pull_request) Has been cancelled
9cfc13c50a
Na het v0.3.6-incident: stond de tag al op de GitHub-spiegel, dan was de
mirror-push een no-op en vuurde GitHub géén push-event — de Windows-build startte
nooit en windows-ophalen wachtte 45 min leeg → publiceren skipped → geen release.

De job leunt niet langer op dat push-event maar dispatcht de spiegel-workflow
ACTIEF via workflow_dispatch met het secret GH_DISPATCH_TOKEN (fijnmazige GitHub
PAT: Actions RW + Contents R):

- #1 actief dispatchen ongeacht of het push-event afging.
- #2 idempotent: staat het asset er al, of loopt er al een build op de tag, dan
  niet opnieuw dispatchen.
- #5 poll op run-status naast het asset: geen run na ~5 min → opnieuw dispatchen;
  een gefaalde build stopt de job meteen met de run-URL i.p.v. 45 min leeg pollen.
- Terugval: zonder secret wacht de job passief (oud gedrag), dus de keten blijft
  werken tot het secret gezet is.

#3 (de GitHub-upload clobbert al) en #6 (deploy-web heeft al `needs: web`, dus de
webdemo hangt niet achter de platform-artefacten) waren al goed — geen wijziging.

Deel 2/3 van het releaseketen-verhardingsplan.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ci(release): windows-ophalen op het voorgebakken ocideck-ci-image (#11)
All checks were successful
scans / scans (pull_request) Successful in 2m47s
static-gate / static-gate (pull_request) Successful in 8m56s
2445583241
Het image draagt al node/curl/ca-certificates/jq, dus de per-run apt-get
("Gereedschap installeren", 4-6 min) vervalt en de job start warm — het image
staat door de bouw-jobs toch al op de runner. Deel van #11; de andere twee
glue-jobs (publiceren, homebrew-cask) volgen in een aparte PR.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit 37fb505a70 into main 2026-08-07 00:30:22 +00:00
brenno deleted branch harden/release-yml-dispatch 2026-08-07 00:30:23 +00:00
Sign in to join this conversation.
No description provided.