From 41aa26b7f82331aad6d5ae17f0ee749aab11c873 Mon Sep 17 00:00:00 2001 From: "Zimin A.N." Date: Wed, 13 May 2026 00:58:39 +0300 Subject: [PATCH] =?UTF-8?q?ci(lint):=20=D1=82=D0=BE=D0=BB=D1=8C=D0=BA?= =?UTF-8?q?=D0=BE=20MR=20pipeline'=D0=B0=D1=85,=20=D0=BD=D0=B5=20branch-pu?= =?UTF-8?q?sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Branch-push pipeline сканировал HEAD~10..HEAD range — включал исторические commit'ы (например b7e1f12 из MR !154 который сам и привёл к появлению этого lint'а) → false fail на legacy commits которые уже в main. MR pipeline использует CI_MERGE_REQUEST_DIFF_BASE_SHA..HEAD — только новые commit'ы данного MR'а. Это правильный gate: contributor opens MR → lint валидирует только новый код → fail/pass без noise от старого. Pipeline 6833 (branch ci/forbid-skip-ci-literal) демонстрирует проблему — поймал historical commit вместо проверки нашего MR-fix'а. Pipeline 6834 (MR !155) прошёл — это правильное поведение. --- .gitlab-ci.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a5fd19e..8bdceb3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -153,11 +153,15 @@ commit-msg-lint: echo "" echo "All commits clean." rules: - # Запускается на MR pipeline'ах и на push в feature branch'ах. На main + - # tag — не нужно (если что-то прошло в main, поздно валидировать; на tag - # хотим minimal pipeline overhead). + # Запускается ТОЛЬКО на MR pipeline'ах. Branch-push pipeline'ы скипаем + # потому что HEAD~10 range пикапит historical commits (e.g. b7e1f12 из + # MR !154 — он сам и привёл к созданию этого lint job'а), false-fail'ит + # на legitimately-bad legacy commits которые уже в main. + # + # MR pipeline использует CI_MERGE_REQUEST_DIFF_BASE_SHA..HEAD range — + # сканит только новые commit'ы данного MR'а. Это правильный gate: + # contributor открывает MR → lint валидирует → fail/pass. - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - - if: '$CI_COMMIT_BRANCH != "main" && $CI_COMMIT_TAG == null' # ─── TEST ────────────────────────────────────── maven-test: