Observed 2026-09-24: runs 616 (6c0e7a4) and 617 (02b5b7b, newer) were both in "Deploy to VM" simultaneously after two merges a few minutes apart (#165, #166).
No concurrency: block in .gitea/workflows/deploy.yml, so:
two docker compose pull && up -d race on the VM
whichever finishes last sets the running SHA — an OLDER run can land after a newer one and silently roll prod back
the health-check/rollback step of one run can judge the other run's containers
Fix shape: concurrency: { group: deploy-prod, cancel-in-progress: false } on the deploy job (queue, don't cancel mid-compose), plus have the deploy step skip if github.sha is no longer the tip of main. Verify Gitea Actions (act_runner) honours concurrency — support was partial in older versions.
Workaround until then: space merges to main until the previous Deploy to VM finishes, and check /health SHA against main HEAD after (deploy-check skill).
Observed 2026-09-24: runs 616 (6c0e7a4) and 617 (02b5b7b, newer) were both in "Deploy to VM" simultaneously after two merges a few minutes apart (#165, #166).
No `concurrency:` block in `.gitea/workflows/deploy.yml`, so:
- two `docker compose pull && up -d` race on the VM
- whichever finishes last sets the running SHA — an OLDER run can land after a newer one and silently roll prod back
- the health-check/rollback step of one run can judge the other run's containers
Fix shape: `concurrency: { group: deploy-prod, cancel-in-progress: false }` on the deploy job (queue, don't cancel mid-compose), plus have the deploy step skip if `github.sha` is no longer the tip of main. Verify Gitea Actions (act_runner) honours `concurrency` — support was partial in older versions.
Workaround until then: space merges to main until the previous Deploy to VM finishes, and check /health SHA against main HEAD after (deploy-check skill).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Observed 2026-09-24: runs 616 (
6c0e7a4) and 617 (02b5b7b, newer) were both in "Deploy to VM" simultaneously after two merges a few minutes apart (#165, #166).No
concurrency:block in.gitea/workflows/deploy.yml, so:docker compose pull && up -drace on the VMFix shape:
concurrency: { group: deploy-prod, cancel-in-progress: false }on the deploy job (queue, don't cancel mid-compose), plus have the deploy step skip ifgithub.shais no longer the tip of main. Verify Gitea Actions (act_runner) honoursconcurrency— support was partial in older versions.Workaround until then: space merges to main until the previous Deploy to VM finishes, and check /health SHA against main HEAD after (deploy-check skill).