fix(e2e): reconcile deploy-sync gate paths + log served commit on skip #439
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/BUNYIP-448-e2e-deploy-sync-gate-paths"
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?
BUNYIP-448 (relates BUNYIP-445). Triage of the recurring e2e.yml failures.
Problem
e2e/scripts/wait-for-deploy.mjsgates the E2E suite on the deployment serving the right commit, driven byBUILD_TRIGGER_PATHS, which is meant to mirror the OCI build workflows'on.push.paths. That mirror drifted:build-oci-imageworkflow that no longer exists (there are nowbuild-api.yml+build-web.yml)..sqlx/,oci-build/, and both.forgejo/workflows/build-*.ymlpaths, all of which trigger a rebuild. A commit touching only one of those republishes an image the gate does not treat as build-relevant, soresolveBuildSharesolves a stale expected SHA or throws and the gate fail-open skips.migrationsentry: there is no top-levelmigrations/dir (migrations live underbunyip-api/migrations/, already covered bybunyip-api).Separately, the fail-open skip path (the branch that fired on run #2453 /
a484eb4) logged only that the gate skipped, never what the deployment was actually serving, so a green gate left no record of what was tested.Change
BUILD_TRIGGER_PATHSis now the exact union ofbuild-api.yml+build-web.ymlon.push.paths: adds.sqlx,oci-build,.forgejo/workflows/build-api.yml,.forgejo/workflows/build-web.yml; dropsmigrations. Each entry is annotated with the workflow(s) that list it.<op>/v1/versionand logs the currently-served commit before exiting 0, so every run records what it tested.The gate stays fail-open by design (E2E is a required check that must never lock out a merge on deploy state, per BUNYIP-163); this only makes the skip visible and stops the path drift from misfiring.
Verification
node --check e2e/scripts/wait-for-deploy.mjspasses.e2e/tsconfig.jsonincludes only**/*.ts, and this is a.mjsnode script (behavior unchanged for the happy path; only the constant and the skip-path logging changed).🤖 Generated with Claude Code