ci: deploys are not gated on the checks workflow, so a test-breaking merge still ships both apps #85
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Required by
Reviewer80r2as a condition of approving #80: the risk below is real, deliberately deferred, and after #80 lands it is recorded only in a YAML comment. This issue is that record.The gap
.forgejo/workflows/checks.ymlruns the tests, the typechecks and the lint gate onpull_requestand onpush: main. It exposesworkflow_callso a deploy workflow can depend on it. Nothing does.So
push: mainstill deploys unconditionally: a merge that breaks the tests ships to production for both apps — the management container viabuild-publish.ymland the storefront viadeploy-store.yml. The checks go red beside the deploy, not in front of it.Why it was deferred rather than wired
Three reasons, all recorded during #80's review:
BASELINEinbiome-gate.sh. That table went stale twice in one week — measured atd0b5825, then again after#75/#76/#78merged, which fixed twoformatfindings and added nine files. A vanished rule is a hard failure by design. Wiring the gate converts bookkeeping drift into a release outage.workflow_dispatchdeploys of one unchanged commit, many cancelled. Adding a gate to a path that already fires spuriously changes the failure mode from "wasted runner minutes" to "release blocked".Why deferring costs nothing to reverse
The mechanism is proven, not assumed.
tmp/ci-probecarried aprobe-call.ymlthat diduses: ./.forgejo/workflows/checks.yml, and tasks 994–1000 carryworkflow_id=probe-call.ymlatrun_number=120while running the six job names that exist only inchecks.yml— and the caller jobprobewent red alongside the callee. So Forgejo resolves a local reusable workflow and propagates the callee's failure to the caller.Wiring it is therefore a two-line edit per deploy workflow:
checks.yml'sconcurrencykey is already shaped for it — keyed on the calling workflow as well as the ref, so a gate run is not cancelled by the standalone run of the same commit.What to decide when picking this up
testis uncontroversial. Blocking it on the lint gate means a stale baseline stops a deploy — see reason 1. Gating onneeds: checkstakes all six jobs; a narrowerneedson just the test jobs is possible and probably right.Related
checksjobs already existed when they never did.workflow_dispatchdeploy noise.