From 2022e183a525fbe76d1faf746d9e5f1aed96041b Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 30 Sep 2026 21:40:31 +0300 Subject: [PATCH] ci: mirror thin workflow callers in main after #716 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Кнопку и запуск workflow_dispatch GitHub даёт только workflow, чей файл лежит в ветке по умолчанию: ship-review.yml (#696) и beta-derived.yml (#697) жили только в dev и не запускались вовсе. Два тонких вызывающих файла — кнопка, входы, run-name, потолок прав и concurrency; тела `_ship-review.yml` и `_beta-derived.yml` вызываются `@dev`. Файлы байт-в-байт равны ветке задачи issue/716-register-dispatch-workflows@5451542e. В dev она сливается после этого коммита: в обратном порядке preflight workflow_sync на dev нашёл бы файлы, которых нет в main. Issue: #716 User-Visible: no Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd --- .github/workflows/beta-derived.yml | 65 ++++++++++++++++++++++++++++++ .github/workflows/ship-review.yml | 53 ++++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 .github/workflows/beta-derived.yml create mode 100644 .github/workflows/ship-review.yml diff --git a/.github/workflows/beta-derived.yml b/.github/workflows/beta-derived.yml new file mode 100644 index 00000000..fdc33c3f --- /dev/null +++ b/.github/workflows/beta-derived.yml @@ -0,0 +1,65 @@ +name: "Бета: производные артефакты на dev" +run-name: "Derived artifacts ${{ inputs.tag }}" + +# Тонкий вызывающий файл (#716, устройство #623). `workflow_dispatch` GitHub +# исполняет с выбранной ветки, но кнопку и сам запуск (`gh workflow run`) +# даёт только workflow, чей файл лежит в ветке по умолчанию (`main`). Поэтому +# здесь только то, что обязано жить там: триггер, входы ручного запуска, +# run-name, права и concurrency. Тело — `_beta-derived.yml` по ссылке `@dev`: +# правка съёмки и приёмки — один коммит в `dev`, а запуск с любой ветки (в +# кнопке по умолчанию выбрана `main`) исполняет тело из `dev`. +# Этот файл меняется, только когда меняются входы или потолок прав; тогда он +# зеркалится в `main`, и preflight `workflow_sync` (validate.yml) держит копии +# равными. + +on: + workflow_dispatch: + inputs: + tag: + description: "Beta tag these artifacts are for, for example v1.79.0-beta.1" + required: true + type: string + docs_expect_change: + description: "Doc scenario ids expected to change, comma-separated (empty = none)" + required: false + type: string + default: "" + golden_run: + description: "Validate run id on dev whose golden-images artifact holds the shifted frames (empty = skip golden)" + required: false + type: string + default: "" + golden_expect_change: + description: "Golden scenes expected to change, comma-separated" + required: false + type: string + default: "" + golden_expect_new: + description: "New golden scenes, comma-separated" + required: false + type: string + default: "" + +permissions: + contents: read + +concurrency: + group: beta-derived + cancel-in-progress: false + +jobs: + # Потолок прав тела: объединение job-level прав `_beta-derived.yml`. Вызываемый + # workflow может права только сузить, поэтому каждая его job по-прежнему + # получает свой прежний минимум (#556), а шире этого набора не получит никто. + dev: + permissions: + contents: read + actions: read + uses: Matysh/houseplan-card/.github/workflows/_beta-derived.yml@dev # #716: тело съёмки и приёмки из dev + with: + tag: ${{ inputs.tag }} + docs_expect_change: ${{ inputs.docs_expect_change }} + golden_run: ${{ inputs.golden_run }} + golden_expect_change: ${{ inputs.golden_expect_change }} + golden_expect_new: ${{ inputs.golden_expect_new }} + secrets: inherit diff --git a/.github/workflows/ship-review.yml b/.github/workflows/ship-review.yml new file mode 100644 index 00000000..3af2862d --- /dev/null +++ b/.github/workflows/ship-review.yml @@ -0,0 +1,53 @@ +name: "Бета: пакетное ревью ship" +run-name: "Ship review ${{ inputs.tag }}" + +# Тонкий вызывающий файл (#716, устройство #623). `workflow_dispatch` GitHub +# исполняет с выбранной ветки, но кнопку и сам запуск (`gh workflow run`) +# даёт только workflow, чей файл лежит в ветке по умолчанию (`main`). Поэтому +# здесь только то, что обязано жить там: триггер, входы ручного запуска, +# run-name, права и concurrency. Тело — `_ship-review.yml` по ссылке `@dev`: +# правка ревью — один коммит в `dev`, а запуск с любой ветки (в кнопке по +# умолчанию выбрана `main`) исполняет тело из `dev`. +# Этот файл меняется, только когда меняются входы или потолок прав; тогда он +# зеркалится в `main`, и preflight `workflow_sync` (validate.yml) держит копии +# равными. + +on: + workflow_dispatch: + inputs: + tag: + description: "Beta tag the review is for, for example v1.79.0-beta.1" + required: true + type: string + candidate: + description: "Exact candidate SHA; empty = the dev tip" + required: false + type: string + default: "" + force: + description: "Review again even when the document already exists in dev" + required: false + type: boolean + default: false + +permissions: + contents: read + +concurrency: + group: ship-review-${{ inputs.tag }} + cancel-in-progress: false + +jobs: + # Потолок прав тела: объединение job-level прав `_ship-review.yml`. Вызываемый + # workflow может права только сузить, поэтому каждая его job по-прежнему + # получает свой прежний минимум (#556), а шире этого набора не получит никто. + dev: + permissions: + contents: read + issues: read + uses: Matysh/houseplan-card/.github/workflows/_ship-review.yml@dev # #716: тело ревью из dev + with: + tag: ${{ inputs.tag }} + candidate: ${{ inputs.candidate }} + force: ${{ inputs.force }} + secrets: inherit