ci: de poort draait op een tag, niet op elke PR #790
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!790
Loading…
Reference in a new issue
No description provided.
Delete branch "ci/cache-toolchain-en-pub"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
De poort duurde 22 minuten op de eigen runner tegen 2,5 minuut lokaal. Dat werkt niet in de praktijk, dus hij draait nu op een
v*-tag in plaats van op elke PR.Wat dit echt betekent
Dit is geen versnelling maar een verschuiving, en die staat er hardop bij in de workflow zelf én in CONTRIBUTING, BUILD, CHECKS en de README:
CI is hiermee geen samenvoegpoort meer maar een uitbrengpoort. Valt hij op een tag om, dan staat het probleem al op
main. De borging vóórmainis vanaf nu volledigmake checkop de machine van de committer.Die vier documenten beloofden tot nu toe letterlijk "on every pull request". Een belofte die niet meer waar is, is erger dan geen belofte, dus die zijn alle vier bijgewerkt — inclusief de zin in CONTRIBUTING die al scheef stond ("no CI runner, so nothing runs it for you").
workflow_dispatchblijft erop, zodat een tak alsnog door de poort kan zonder dat je een tag hoeft te zetten.Verder in deze tak
xz— werk dat per definitie hetzelfde antwoord geeft. Er is geen controle ingeleverd:check-toolchaindraait binnenmake checkop de herstelde boom en eist onverkort kanaalstable, de officiële herkomst en gelijkheid met de pin. De cache vervangt een download, geen controle. Beide cachestappen staan opcontinue-on-error.release.ymlop de GitHub-spiegel bij elke tag al drie platforms bouwt.Eén correctie op de aanleiding
Op een PR draaide al géén enkele desktopbuild. Die 22 minuten waren voor honderd procent de poort — het wegzetten van de builds scheelt dus wachttijd na de merge, niet ervoor.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Generated with Claude Code
Een poortrun duurde 22 minuten. Nagemeten waar die tijd heen ging, en de aanname bleek te kloppen noch de voor de hand liggende oplossing: - Op een **PR** draaide al geen enkele build — alleen `ci.yml`. Die 22 minuten zijn dus voor honderd procent de poort; "bouwen alleen bij een tag" zou nul seconden wachttijd hebben gescheeld. - Dezelfde `make check` doet er lokaal 2,5 minuut over. De macOS-build op de Mac-runner duurt 1,5 minuut, de Linux-build in de pawprint-container 17,5. Diezelfde factor tien zit in de poort: het is de runner, niet het werk. Wat er nu wél weg is: elke run haalde de Flutter-tarball opnieuw op, sha256-controleerde hem en pakte hem uit met `xz` — werk dat per definitie hetzelfde resultaat geeft, want de sleutel is de gepinde versie. Gecachet, net als de pub-pakketten (op `pubspec.lock`, met terugvalsleutel zodat pub bij een gewijzigde afhankelijkheid alleen het verschil ophaalt). Er is geen controle ingeleverd. `check-toolchain` draait binnen `make check` op de herstelde boom en eist onverkort kanaal `stable`, de officiële herkomst en gelijkheid met de pin — dezelfde poort die het cirruslabs-image afkeurde. De cache wordt geschreven door onze eigen jobs op onze eigen runner: wie de runner beheert beheert de cache, en dat is dezelfde vertrouwensgrens als de runner zelf. Beide cachestappen staan op `continue-on-error`, dus spreekt de forge deze cache-API niet, dan verliezen we de versnelling en verder niets. Daarnaast opgeruimd: de forge-builds draaiden bij elke push naar main en kostten daar 17,5 minuten, terwijl `release.yml` op de GitHub-spiegel bij elke `v*`-tag al drie platforms bouwt. Nu `workflow_dispatch` — niet weggegooid, want een bundel op afroep zonder tag is wel wat waard. BUILD/CHECKS/README droegen de oude belofte ("on every push to main") en zijn bijgewerkt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>ci: cache de gepinde toolchain en de pub-pakketten, bouw alleen op afroepto ci: de poort draait op een tag, niet op elke PR