From c3a749949f90ee4f5f47fd45945b4880b95c01fb Mon Sep 17 00:00:00 2001 From: Sergey Matyunin Date: Sun, 13 Sep 2026 16:25:45 +0300 Subject: [PATCH] =?UTF-8?q?ci:=20=D0=B0=D0=BA=D1=82=D0=B8=D0=B2=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20reconciler=20#555=20?= =?UTF-8?q?=D0=B2=20main?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Синхронизировать исполняемый process workflow с dev и добавить bounded queue reconciler в ветку по умолчанию. Product source, release candidate и version files не меняются. Issue: #555 User-Visible: no --- .github/workflows/process-reconcile.yml | 58 +++++++++++++++++++++++++ .github/workflows/process.yml | 1 + 2 files changed, 59 insertions(+) create mode 100644 .github/workflows/process-reconcile.yml diff --git a/.github/workflows/process-reconcile.yml b/.github/workflows/process-reconcile.yml new file mode 100644 index 00000000..d62e998a --- /dev/null +++ b/.github/workflows/process-reconcile.yml @@ -0,0 +1,58 @@ +name: Сверка очереди ревью +run-name: "reconcile process queue · ${{ github.event_name }}" + +on: + schedule: + - cron: '7,37 * * * *' + workflow_dispatch: + inputs: + apply: + description: "Повторно будить потерянные запросы и публиковать диагностику" + required: true + type: boolean + default: true + +permissions: + actions: read + contents: read + issues: read + +jobs: + reconcile: + name: "Один снимок S4/S7 без polling модели" + runs-on: ubuntu-latest + timeout-minutes: 10 + concurrency: + group: process-reconcile + cancel-in-progress: false + steps: + # Расписание читается из main, а исполняемый reconciler — из dev: так + # после штатного merge действует та же версия кода, которую проверил CI. + - uses: actions/checkout@v7 + with: + ref: dev + fetch-depth: 1 + persist-credentials: false + - uses: actions/setup-node@v7 + with: + node-version: 22 + - name: Сопоставить labels, requests, runs и sealed evidence + env: + GH_TOKEN: ${{ secrets.HP_PROCESS_TOKEN }} + REPO: ${{ github.repository }} + APPLY: ${{ github.event_name == 'schedule' || inputs.apply == true }} + run: | + mkdir -p artifacts/process-reconcile + node scripts/process-reconcile.mjs \ + --repo "$REPO" \ + --apply="$APPLY" \ + --max-actions=5 \ + --output=artifacts/process-reconcile/summary.json + - name: Опубликовать компактный machine-readable итог + if: always() + uses: actions/upload-artifact@v4 + with: + name: process-reconcile-${{ github.run_id }}-${{ github.run_attempt }} + path: artifacts/process-reconcile/summary.json + if-no-files-found: error + retention-days: 14 diff --git a/.github/workflows/process.yml b/.github/workflows/process.yml index ddb522a8..6ca0440d 100644 --- a/.github/workflows/process.yml +++ b/.github/workflows/process.yml @@ -1,4 +1,5 @@ name: Ревью-конвейер +run-name: "process #${{ github.event.issue.number }} · ${{ github.event.label.name }} · ${{ github.event.issue.title }}" # Событийный конвейер процесса (PROCESS.md). Смена статусной метки — это # сообщение: она порождает событие, событие запускает следующий шаг.