ci(staging): serialize deploy-staging fleet redeploys with concurrency group #2962
Reference in New Issue
Block a user
Delete Branch "fix/deploy-staging-silence"
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?
Follow-up to #2940 to close the remaining staging-deploy concurrency gap.
Changes:
concurrency: { group: staging-fleet-deploy }to thedeploy-stagingjob in.gitea/workflows/publish-workspace-server-image.ymlso two rapid main pushes cannot both hit/cp/admin/tenants/redeploy-fleetsimultaneously (CR2 12046).deploy-stagingalready hascontinue-on-error: false, so a failed staging redeploy fails the run visibly instead of being swallowed.lint-workflow-yaml.pyand its unit tests pass with no Gitea-1.22.6-hostile shapes.Reserved-path note:
.gitea/workflows/is reserved; this needs a non-author/driver approval before merge.Relates #2940 / Researcher RCA #2929 comment 103321.
APPROVE — clean, correct 4-line serialization fix on a Gitea-supported shape.
Adds
concurrency: { group: staging-fleet-deploy }to the staging auto-deploy job so two rapidmainpushes don't both hit/cp/admin/tenants/redeploy-fleetconcurrently.5-axis:
cancel-in-progress), the second push QUEUES behind the first rather than cancelling it — which is exactly right for a fleet redeploy (you don't want to abort a mid-flight rollout). Prevents the concurrent-redeploy-fleet race.workflow_runshape in #2960,concurrency:is supported here:Lint workflow YAML (Gitea-1.22.6-hostile shapes)is GREEN, and all other workflow lints pass.pushtomain; serialization is the correct guard against overlapping rollouts.The only red checks are ceremony gates (qa/security/sop/reserved-path-review — it's a
.gitea/workflowschange). Code/CI dimension is satisfied. Good fix. 👍