From 7f732ff24deec4cdb11c22b4046259e497ea4afe Mon Sep 17 00:00:00 2001 From: bot-backend Date: Wed, 17 Jun 2026 22:09:01 +0300 Subject: [PATCH] ci: drop push-on-feature-branch trigger to kill duplicate CI runs (#1709) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Каждый коммит в ветку с открытым PR триггерил ДВА прогона ci.yml на один SHA: push-событие (github.ref=refs/heads/) и pull_request-событие (github.ref=refs/pull//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 --- .forgejo/workflows/ci.yml | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index e228cbbd..78008735 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -15,23 +15,22 @@ name: CI # FUTURE: добавить `postgis/postgis:16-3.4` service + гонять mv_layout — см. # .github/workflows/ci.yml как образец service-блока. on: + # ТОЛЬКО pull_request — НЕТ push-триггера на feature-ветки (CI-шторм #1709). + # WHY: раньше был и push: [feat/**,fix/**,...]. Каждый коммит в ветку с открытым + # PR триггерил ДВА прогона на ОДИН SHA: push-событие (github.ref=refs/heads/) + # и pull_request-событие (github.ref=refs/pull//merge). Разный github.ref → + # разные concurrency-группы (см. ниже) → прогоны НЕ отменяют друг друга → 2× job + # при и так дефицитных раннерах. В bot-пайплайне каждый коммит идёт через PR, так + # что pull_request гейтит его полностью; push-прогон был чистым дублем. + # Trade-off: push в feature-ветку БЕЗ открытого PR не получит CI до открытия PR + # (бот открывает PR сразу после первого push) — приемлемо. pull_request: branches: [main] - push: - branches: - # Mirror the bot-PR / feature-branch flow в .claude/rules/git-pr.md: - # PR получает gate, прямые пуши в feature-ветки — тоже. - - "feat/**" - - "fix/**" - - "refactor/**" - - "chore/**" - - "docs/**" - - "perf/**" - - "test/**" - - "ci/**" - - "hotfix/**" concurrency: + # Теперь, когда остался только pull_request, github.ref стабилен на весь PR + # (refs/pull//merge) → новый push в ветку PR отменяет предыдущий незавершённый + # прогон ЭТОГО PR (cancel-in-progress) вместо накопления параллельных. group: ci-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true