ci(lint): только MR pipeline'ах, не branch-push

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) прошёл — это правильное поведение.
This commit is contained in:
Zimin A.N.
2026-05-13 00:58:39 +03:00
parent 1da515276c
commit 41aa26b7f8
+8 -4
View File
@@ -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: