[CL-DEPLOY-FIX] ci(deploy): cancel-in-progress=true — устранить backlog деплой-раннера #974

Closed
andrei wants to merge 1 commit from feature/claude-deploy-concurrency-20260702 into master
Owner

Что сделано

.forgejo/workflows/deploy.yml — concurrency cancel-in-progress: falsetrue.

Зачем (ROOT CAUSE runner-backlog)

Ops-находка mega-audit 2026-07-02: деплой-раннер сильно забэклогился — деплоил коммиты суточной давности (cc1e51c0/ab3afe7f = 01.07), очередь длинная. Причина: cancel-in-progress: false → каждый push в master ставил ПОЛНЫЙ serial build+deploy в очередь, устаревшие не отменялись. За busy-день (много мержей: аудиты, contract-remediation) очередь стала многочасовой.

Deploy публикует immutable релиз master HEAD — важен только последний коммит; деплоить superseded промежуточные бессмысленно. cancel-in-progress: true отменяет устаревшие queued/running деплои → раннер всегда деплоит актуальный master.

Безопасность: релиз переключается atomic symlink только после build+rsync+verify → отменённый mid-flight деплой не трогает live-релиз (за откат отвечает A-11 релизные папки).

План тестирования

  • YAML valid (yaml.safe_load); concurrency.cancel-in-progress = true.
  • migration-guard 10/10, ci-workflow-service-ports 2/2 green.
  • Self-test: merge этого коммита триггерит deploy с новым true → отменяет stale-очередь + деплоит актуальный master (включая a11y-фикс ddf8ae040).

Где могу ошибаться

  • cancel-in-progress: true отменит деплой если сразу за ним прилетит новый push — это by-design (нужен только latest). Для очень частых пушей возможна «прыгающая» цель деплоя, но immutable-релиз + atomic switch делают это безопасным.
## Что сделано `.forgejo/workflows/deploy.yml` — concurrency `cancel-in-progress: false` → `true`. ## Зачем (ROOT CAUSE runner-backlog) Ops-находка mega-audit 2026-07-02: деплой-раннер сильно забэклогился — деплоил коммиты суточной давности (`cc1e51c0`/`ab3afe7f` = 01.07), очередь длинная. Причина: `cancel-in-progress: false` → каждый push в master ставил ПОЛНЫЙ serial build+deploy в очередь, устаревшие не отменялись. За busy-день (много мержей: аудиты, contract-remediation) очередь стала многочасовой. Deploy публикует **immutable** релиз master HEAD — важен только последний коммит; деплоить superseded промежуточные бессмысленно. `cancel-in-progress: true` отменяет устаревшие queued/running деплои → раннер всегда деплоит актуальный master. Безопасность: релиз переключается **atomic symlink** только после build+rsync+verify → отменённый mid-flight деплой не трогает live-релиз (за откат отвечает A-11 релизные папки). ## План тестирования - YAML valid (yaml.safe_load); `concurrency.cancel-in-progress = true`. - `migration-guard` 10/10, `ci-workflow-service-ports` 2/2 green. - Self-test: merge этого коммита триггерит deploy с новым `true` → отменяет stale-очередь + деплоит актуальный master (включая a11y-фикс `ddf8ae040`). ## Где могу ошибаться - `cancel-in-progress: true` отменит деплой если сразу за ним прилетит новый push — это by-design (нужен только latest). Для очень частых пушей возможна «прыгающая» цель деплоя, но immutable-релиз + atomic switch делают это безопасным.
[CL-DEPLOY-FIX] ci(deploy): cancel-in-progress=true — устранить backlog деплой-раннера
Some checks failed
CI / API (pull_request) Has been cancelled
CI / App (pull_request) Has been cancelled
CI / Prisma Migrate Gate (pull_request) Has been cancelled
PR Janitor / janitor (pull_request) Has been cancelled
CI / Telegram Mini App (pull_request) Has been cancelled
CI / Python SDK (pull_request) Has been cancelled
CI / Secrets Scan (pull_request) Has been cancelled
CI / Contracts (pull_request) Has been cancelled
b85745915c
ROOT CAUSE runner-backlog (mega-audit ops-находка 2026-07-02): deploy.yml concurrency
имел cancel-in-progress: false → каждый push в master ставил ПОЛНЫЙ serial build+deploy
в очередь, устаревшие не отменялись. За busy-день runner забэклогился до деплоя коммитов
суточной давности (cc1e51c0/ab3afe7f = 01.07).

Fix: cancel-in-progress: true. Deploy публикует IMMUTABLE релиз master HEAD — важен только
последний; отмена superseded queued/running деплоев безопасна (atomic symlink-switch после
build+rsync+verify → отменённый деплой не трогает live-релиз).

Проверки: migration-guard 10/10, ci-workflow-service-ports 2/2, YAML valid.
Бонус: merge сам отменит текущую stale-очередь и задеплоит актуальный master.

⚠️ Конфликт с master — ветку нужно перебазировать вручную. Изменения в master перекрыли затронутые строки.

<!-- janitor-conflict --> ⚠️ Конфликт с master — ветку нужно перебазировать вручную. Изменения в master перекрыли затронутые строки.
andrei closed this pull request 2026-07-02 16:35:59 +00:00
Author
Owner

Закрыт как redundant: cancel-in-progress: true уже в master (независимо применён другим агентом в рамках того же deploy-churn инцидента; master также получил paths-ignore для docs/*.md-коммитов). Root-cause deploy-backlog фикс уже в проде-пути. Ветка удалена.

Закрыт как redundant: `cancel-in-progress: true` уже в master (независимо применён другим агентом в рамках того же deploy-churn инцидента; master также получил `paths-ignore` для docs/*.md-коммитов). Root-cause deploy-backlog фикс уже в проде-пути. Ветка удалена.
Some checks failed
CI / API (pull_request) Has been cancelled
CI / App (pull_request) Has been cancelled
CI / Prisma Migrate Gate (pull_request) Has been cancelled
PR Janitor / janitor (pull_request) Has been cancelled
CI / Telegram Mini App (pull_request) Has been cancelled
CI / Python SDK (pull_request) Has been cancelled
CI / Secrets Scan (pull_request) Has been cancelled
CI / Contracts (pull_request) Has been cancelled

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
europa-tech-srl/europatech!974
No description provided.