From 086d1e133693e1df8db576320777b7d45bcc870b Mon Sep 17 00:00:00 2001 From: Emir Beganovic Date: Fri, 9 Oct 2026 02:20:39 +0200 Subject: [PATCH] Queue waiting publishes instead of cancelling all but one The publish job runs in the concurrency group "publish" with cancel-in-progress: false. By default such a group holds one running job and one waiting job: when a third arrives, GitHub cancels the one that was waiting and puts the new one in its place. That merge's publish is dropped, with no publish record, PR comment or log line, and nothing reruns it. 17 of the last 181 publish runs ended cancelled, 12 of them from one burst of merges on 2026-09-28. openvino-genai 2026.4.0.0-1 (#620) was one of those and is still in no channel. queue: max lets up to 100 jobs wait in the group and run in the order they reach it. Nothing else changes: one publish at a time, and a running one is not interrupted. unpublish.yml shares the group, so it gets the same setting. actionlint 1.7.12, the latest release, predates the key and reports it as unexpected in both files (rhysd/actionlint#654). It reports nothing else. --- .github/workflows/publish.yml | 4 ++++ .github/workflows/unpublish.yml | 2 ++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 52bbc62f..579c3b72 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -168,9 +168,13 @@ jobs: runs-on: ubuntu-latest environment: publish timeout-minutes: 30 + # queue: max, because by default a group holds one waiting job: a third + # merge arriving cancels the second one's publish, and nothing reruns it. + # With it up to 100 wait, in the order they reach this job. concurrency: group: publish cancel-in-progress: false + queue: max steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/unpublish.yml b/.github/workflows/unpublish.yml index 2f9a6d22..36af9a34 100644 --- a/.github/workflows/unpublish.yml +++ b/.github/workflows/unpublish.yml @@ -25,9 +25,11 @@ jobs: environment: publish timeout-minutes: 15 # The publish job's group: one writer per channel database at a time. + # queue: max, as there: a waiting job is queued, not replaced. concurrency: group: publish cancel-in-progress: false + queue: max steps: - uses: actions/checkout@v4 with: