From 55d832ec8b2f89965a1e2aee1d4d8b4e6c2df306 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 6 Sep 2026 19:39:01 +0300 Subject: [PATCH] =?UTF-8?q?ci:=20dispatch-=D0=BF=D1=80=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?=D0=BD=20Validate=20=D0=B2=20=D1=81=D0=B2=D0=BE=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=B3=D1=80=D1=83=D0=BF=D0=BF=D0=B5=20concurrency?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Первый ручной запуск nightly (run 2645) был отменён через 1:31 очередным push в dev: обе стороны делили группу validate-refs/heads/dev. Ночной полный набор не должен обнуляться коммитом, пришедшим в то же окно. Issue: #479 User-Visible: no --- .github/workflows/validate.yml | 5 ++++- test/validate-workflow.test.mjs | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index b96f7045..3cc5834e 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -24,8 +24,11 @@ on: # A new push supersedes an unfinished validation for the same branch or PR. # Exact-SHA release gates never depend on an obsolete commit. +# Полный прогон по кнопке/ночью (#479) живёт в своей группе: первый ручной +# запуск отменил очередной push конвейера через полторы минуты — ночной +# результат обнулялся бы любым коммитом, пришедшим в то же окно. concurrency: - group: validate-${{ github.event.pull_request.number || github.ref }} + group: validate-${{ github.event_name == 'workflow_dispatch' && 'dispatch-' || '' }}${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: diff --git a/test/validate-workflow.test.mjs b/test/validate-workflow.test.mjs index 28b4e2f3..7df130d1 100644 --- a/test/validate-workflow.test.mjs +++ b/test/validate-workflow.test.mjs @@ -383,3 +383,8 @@ test('мутанты по диффу гоняются на каждом пуше // Блокирующая job: свидетель, разучившийся краснеть, — отказ, а не предупреждение. assert.ok(!job.includes('continue-on-error'), 'job обязана красить прогон'); }); + +test('ручной/ночной полный прогон не делит concurrency с push (#479)', () => { + const text = read('validate.yml'); + assert.match(text, /group: validate-\$\{\{ github\.event_name == 'workflow_dispatch' && 'dispatch-' \|\| '' \}\}/); +});