fix(release): houd de release draft tot artefacten en handtekening compleet zijn (#2311) #2332

Merged
brenno merged 1 commit from fix/release-draft-gate into main 2026-10-06 21:29:30 +00:00
Owner

Sluit #2311.

De publiceren-job maakte de Forgejo-release meteen publiek; pas daarna tekende release_auto.sh lokaal. Tussen CI-groen en het lokale tekenen stond er een release zonder SHA256SUMS.minisig publiek, en de website-downloads-job (die publieke URL's leest) liep al vóór de handtekening eraan hing.

  • release.yml: release wordt als draft aangemaakt; de website-downloads-job verhuist naar .forgejo/workflows/website-downloads.yml (workflow_dispatch).
  • release_auto.sh fase 3: leest assets via de API (draft-proof), tekent, hangt de minisig aan, verifieert de teruggelezen combinatie, PATCH't dan pas draft:false, toetst de publieke URL's en dispatcht de website-workflow.
  • release_ci_completion_seen gebruikt Release publiceren als eindmarker.
  • Regressietests in test/release_draft_gate_test.dart (draft→publiek pas na geldige handtekening; geen PATCH bij ongeldige) plus bijgewerkte harnesses.

Test plan

  • make check groen lokaal
  • flutter test op de vier release-testsuites groen
  • Echte releaseflow is pas te bewijzen bij een volgende tag — de fail-closed-paden (draft blijft bij fout) zijn gedekt
Sluit #2311. De `publiceren`-job maakte de Forgejo-release meteen publiek; pas daarna tekende `release_auto.sh` lokaal. Tussen CI-groen en het lokale tekenen stond er een release zonder `SHA256SUMS.minisig` publiek, en de `website-downloads`-job (die publieke URL's leest) liep al vóór de handtekening eraan hing. - `release.yml`: release wordt als **draft** aangemaakt; de website-downloads-job verhuist naar `.forgejo/workflows/website-downloads.yml` (workflow_dispatch). - `release_auto.sh` fase 3: leest assets via de API (draft-proof), tekent, hangt de minisig aan, verifieert de teruggelezen combinatie, PATCH't dan pas `draft:false`, toetst de publieke URL's en dispatcht de website-workflow. - `release_ci_completion_seen` gebruikt `Release publiceren` als eindmarker. - Regressietests in `test/release_draft_gate_test.dart` (draft→publiek pas na geldige handtekening; geen PATCH bij ongeldige) plus bijgewerkte harnesses. #### Test plan - [x] `make check` groen lokaal - [x] `flutter test` op de vier release-testsuites groen - [ ] Echte releaseflow is pas te bewijzen bij een volgende tag — de fail-closed-paden (draft blijft bij fout) zijn gedekt
publiceren maakte de release direct publiek; pas daarna tekende
release_auto.sh lokaal. Wie tussen CI-groen en het lokale tekenen keek,
zag een release zónder handtekening — en de website-downloads-job
schreef terwijl het tekenstuk ook nog schreef.

- release.yml: release.json met draft:true; de website-downloads-job
  verhuist naar een eigen workflow (.forgejo/workflows/
  website-downloads.yml) — zijn bump-script leest publieke URL's die
  pas bestaan ná de publicatie.
- release_auto.sh: fase 3 leest SHA256SUMS en de assets via de API
  (draft-proof), tekent, hangt SHA256SUMS.minisig aan, verifieert de
  teruggelezen combinatie, en flipt pas dan met een PATCH
  draft→false. De publieke naconditie blijft daarna getoetst, en de
  website-workflow wordt pas ná publicatie gedispatcht.
- release_ci_completion_seen kijkt naar 'Release publiceren' als
  eindmarker (de websitejob zit niet meer in deze snapshot).

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno merged commit 4c18b700f9 into main 2026-10-06 21:29:30 +00:00
brenno deleted branch fix/release-draft-gate 2026-10-06 21:29:31 +00:00
Sign in to join this conversation.
No description provided.