From 14d46696a799d80effec760741519fb6f422e11f Mon Sep 17 00:00:00 2001 From: Yuriy Andamasov Date: Mon, 11 May 2026 00:31:02 +0300 Subject: ci: serialize update-version-tags runs to close back-to-back-push race MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #1953 added github.sha to the concurrency group key to prevent stale "Re-run jobs" replays from cancelling the in-progress current-HEAD run. Copilot review on the sagitta backport (#1955) caught the regression that introduced: per-SHA groups mean back-to-back pushes A then B run in parallel rather than serializing, and if run-A's force-PATCH lands after run-B's, the tag rewinds to A. Fix: per-branch group + cancel-in-progress: false. - Concurrent runs serialize, so commit order is preserved on the tag. - Stale "Re-run jobs" replays queue behind the current run, then hit the HEAD-equivalence guard in the job body and exit 0 — the guard (added in PR #1953) is the safeguard for that case, not the concurrency group. - Tag-move work is fast (~5s); serial execution under back-to-back push bursts is acceptable. 🤖 Generated by [robots](https://vyos.io) --- .github/workflows/update-version-tags.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to '.github') diff --git a/.github/workflows/update-version-tags.yml b/.github/workflows/update-version-tags.yml index 04ccd1e4..669d94ed 100644 --- a/.github/workflows/update-version-tags.yml +++ b/.github/workflows/update-version-tags.yml @@ -14,11 +14,13 @@ permissions: contents: write concurrency: - # Include github.sha so a stale "Re-run jobs" replay (which carries the - # original SHA) cannot cancel an in-progress run for the current branch - # HEAD. Same-SHA re-runs still deduplicate. - group: version-tag-${{ github.ref_name }}-${{ github.sha }} - cancel-in-progress: true + # Per-branch group so concurrent runs serialize: back-to-back pushes + # land their tag-moves in commit order rather than racing. + # cancel-in-progress: false because a stale "Re-run jobs" replay would + # otherwise cancel the in-progress current-HEAD run; the HEAD-equivalence + # guard in the job body handles stale re-runs by exiting 0. + group: version-tag-${{ github.ref_name }} + cancel-in-progress: false jobs: retag: -- cgit v1.2.3