ci: drop push-on-feature-branch trigger to kill duplicate CI runs (#1709) #1713

Merged
lekss361 merged 1 commit from fix/ci-dedup-runner-storm-1709 into main 2026-06-17 19:16:07 +00:00
Owner

Summary

  • .forgejo/workflows/ci.yml: убираю push: триггер на feature-ветки (feat/**,fix/**,…), оставляю только pull_request: [main].

Почему (CI-шторм #1709)

Каждый коммит в ветку с открытым PR триггерил ДВА прогона ci.yml на один SHA:

  • push-событие → github.ref = refs/heads/<branch>
  • pull_request-событие → github.ref = refs/pull/<N>/merge

Разный github.refразные concurrency-группы (group: ci-…-${{ github.ref }}) → прогоны не отменяли друг друга → 2× нагрузка на 2 раннера (capacity 2 = 4 слота). 2026-06-17 это переполнило очередь, и деплой tradein #1699 простоял ~17 мин.

Пример из инцидента: #1706 → run 2417 (push fix/emiss-pk-granularity-1687) + run 2418 (PR #1706) — оба на одном коммите.

Эффект

  • В bot-пайплайне каждый коммит идёт через PR → pull_request гейтит его полностью. push-прогон был чистым дублем → ≈−50% job.
  • Теперь github.ref стабилен на весь PR (refs/pull/<N>/merge) → существующий cancel-in-progress: true корректно отменяет superseded-прогон при новом пуше в ветку PR (раньше работало только между consecutive push в одну ветку).

Trade-off

Push в feature-ветку без открытого PR не получит CI до открытия PR. Бот открывает PR сразу после первого push → окно пренебрежимо.

Test plan

  • После merge: один коммит в feature-ветку с PR → ровно один прогон ci.yml (event=pull_request), не два.
  • Новый push в ту же ветку PR → предыдущий незавершённый прогон отменяется (cancelled), новый стартует.
  • Прямой push в main (merge) → ci.yml не запускается (деплой по deploy.yml).

Refs #1709

## Summary - `.forgejo/workflows/ci.yml`: убираю `push:` триггер на feature-ветки (`feat/**`,`fix/**`,…), оставляю только `pull_request: [main]`. ## Почему (CI-шторм #1709) Каждый коммит в ветку с **открытым PR** триггерил **ДВА прогона `ci.yml` на один SHA**: - `push`-событие → `github.ref = refs/heads/<branch>` - `pull_request`-событие → `github.ref = refs/pull/<N>/merge` Разный `github.ref` → **разные concurrency-группы** (`group: ci-…-${{ github.ref }}`) → прогоны **не отменяли друг друга** → 2× нагрузка на 2 раннера (capacity 2 = 4 слота). 2026-06-17 это переполнило очередь, и деплой tradein #1699 простоял ~17 мин. Пример из инцидента: #1706 → run 2417 (push `fix/emiss-pk-granularity-1687`) + run 2418 (PR #1706) — оба на одном коммите. ## Эффект - В bot-пайплайне каждый коммит идёт через PR → `pull_request` гейтит его полностью. `push`-прогон был чистым дублем → **≈−50% job**. - Теперь `github.ref` стабилен на весь PR (`refs/pull/<N>/merge`) → существующий `cancel-in-progress: true` корректно **отменяет superseded-прогон** при новом пуше в ветку PR (раньше работало только между consecutive push в одну ветку). ## Trade-off Push в feature-ветку **без открытого PR** не получит CI до открытия PR. Бот открывает PR сразу после первого push → окно пренебрежимо. ## Test plan - [ ] После merge: один коммит в feature-ветку с PR → ровно **один** прогон `ci.yml` (event=`pull_request`), не два. - [ ] Новый push в ту же ветку PR → предыдущий незавершённый прогон отменяется (cancelled), новый стартует. - [ ] Прямой push в `main` (merge) → `ci.yml` не запускается (деплой по `deploy.yml`). Refs #1709
lekss361 added 1 commit 2026-06-17 19:09:41 +00:00
ci: drop push-on-feature-branch trigger to kill duplicate CI runs (#1709)
Some checks failed
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (pull_request) Successful in 59s
CI / openapi-codegen-check (pull_request) Failing after 1m42s
CI / backend-tests (pull_request) Failing after 8m50s
7f732ff24d
Каждый коммит в ветку с открытым PR триггерил ДВА прогона ci.yml на один
SHA: push-событие (github.ref=refs/heads/<branch>) и pull_request-событие
(github.ref=refs/pull/<N>/merge). Разный github.ref → разные concurrency-
группы → прогоны не отменяли друг друга → 2x нагрузка на и так дефицитные
2 раннера (CI-шторм 2026-06-17, деплой tradein #1699 простоял 17 мин).

В bot-пайплайне каждый коммит идёт через PR, поэтому pull_request гейтит
его полностью; push-прогон был чистым дублем. Оставляю только pull_request:
теперь github.ref стабилен на весь PR и concurrency cancel-in-progress
корректно отменяет superseded-прогоны при новом пуше.

Refs #1709
lekss361 merged commit 57800b24e9 into main 2026-06-17 19:16:07 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
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: lekss361/gendesign#1713
No description provided.