fix(e2e): extend hub-soft-probe skip to push + staging dispatch so a broken hub cannot red the post-merge check #307
No reviewers
Labels
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
psa-systems/bunyip!307
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/BUNYIP-305-e2e-push-hub-skip"
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?
The merge of PR #306 fired the
push: maintrigger one2e.yml.wait-for-deploy.mjspolls${op}/v1/versionon the API host (api.a8n.systems), which has been up throughout the outage, so the gate passed immediately and the Playwright suite ran against staging while the hub (a8n.systems) was still serving the mispushed Dioxus SPA.[setup] global.setup.tstimed out for 180s waiting forform[action="/login"] input[type="email"]on a page that has no such form;[auth-ui] login.spec.tsinherited the same failure and the merge check turned red.BUNYIP-301 + BUNYIP-303 fixed the equivalent problem on
pull_requestby softening reachability and gating the suite step onsteps.reachability.outputs.hub_live != 'false'. That gate did not fire on push because the reachability step'sif:only listedpull_requestandworkflow_dispatch (production); on push the step never ran, its output was unset, and the gate's fallback treated an unset output as "hub OK" (which was the intended pre-BUNYIP-305 behaviour).Drop the reachability step's
if:entirely so it runs on every trigger. Move the soft/hard split into theE2E_HUB_SOFTenv expression:'false'(hard) only on production dispatch,'true'(soft) everywhere else (push, pull_request, staging dispatch). The E2E suite gate needs no code change; its existing!= 'false'conjunction now seeshub_liveset on every non-production trigger and correctly skips the suite when the hub is soft-degraded.Rationale for softening on push too: post-merge deploy of bunyip-web is a manual
just app-restarton c-01. CI cannot force the restart and cannot know when the operator will run it. Skipping the suite with a loud log line ("hub /healthz probe reported not-live; ... operator mustjust app-restartbunyip-web on the target host to pick up the new image") surfaces the same signal as a 3-min timeout + red run, without the punitive UX. Production dispatch KEEPS the hard check: it is meant to page loudly on a prod outage, soE2E_HUB_SOFTresolves to'false'for that event and the reachability step exits 1 before the suite runs.health-check.mjsneeds no change; it already writeshub_live=true|falseto$GITHUB_OUTPUTwhen the reachability step runs, and now the step runs on every non-outage-hardgate path.Comments on the reachability step + the E2E suite step + the "Note skipped suite (hub down)" step are all updated to spell out the new event coverage. The skipped-suite log line includes an operator-facing hint about
just app-restartso the next reviewer knows which manual step unblocks a red post-merge check without having to search the runbook.#BUNYIP-305
Pull request closed