Repository navigation
pre-commit: убрать сломанный хук ansible-lint, починить make hooks - #108
Merged
Merged
Conversation
Хуки из .pre-commit-config.yaml не работали вообще: pre-commit в системе не был установлен, а make hooks падал с «No such file or directory». То есть gitleaks на коммитах не гонялся никогда, вопреки разделу Security model в README. После установки выяснилось, что ansible-lint запинен на версии, несовместимой с подтягиваемым ansible-core, — падал с ModuleNotFoundError на каждом коммите. Свежая версия запускается, но из корня репозитория не видит ansible/ansible.cfg с относительным vault_password_file, поэтому сыплет syntax-check. Запуск из нужного каталога это чинит ценой Touch ID на каждый коммит в ansible/. Линтером владеет CI, где он отрабатывает верно и без этой платы, поэтому хук убран, а причина записана в конфиге. Сломанный хук хуже отсутствующего: он приучает к --no-verify, который глушит заодно gitleaks и проверку IP. Из make hooks убрана возня с резервной копией рукописного хука: pre-commit сам переводит такой в .legacy и продолжает его запускать — аккуратнее, чем моя проверка, которая к тому же ложно срабатывала на строку «pre-commit» внутри самого хука. Проверено: pre-commit run --all-files — все хуки зелёные, gitleaks по всему репозиторию чист.
Четырнадцать строк на «здесь линтера нет» — история отладки, которой место в описании PR, а не в конфиге. Осталась причина.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Коммит потерялся при сквоше #107 — восстановлен черри-пиком. Это блокирующее:
pre-commitтеперь установлен, а наmainвернулась версияansible-lint, которая падает на каждом коммите, трогающемansible/.Что вскрылось при установке pre-commit
Хуки из
.pre-commit-config.yamlне работали никогда: бинаря в системе не было,make hooksпадал сNo such file or directory, а.git/hooks/pre-commitоказался рукописной заглушкой под один адрес. То есть строка в README «gitleaks runs as a pre-commit hook» была неверной всё это время.После установки выяснилось, что
ansible-lintзапинен наv24.7.0— версии, несовместимой с подтягиваемымansible-core. Падал сModuleNotFoundErrorна каждом запуске.Свежая версия запускается, но из корня репозитория не видит
ansible/ansible.cfg, гдеvault_password_file = .vault_passзадан относительным путём. Без него vault не расшифровывается и сыплютсяsyntax-check. Запуск из нужного каталога это чинит — ценой обращения в 1Password, то есть Touch ID на каждый коммит вansible/.Линтером владеет CI, где он отрабатывает верно и без этой платы. Хук убран, причина записана в конфиге.
Сломанный хук хуже отсутствующего: он приучает к
--no-verify, а тот глушит заодно gitleaks и проверку IP.make hooksУбрана возня с резервной копией рукописного хука.
pre-commitсам переводит такой в.git/hooks/pre-commit.legacyи продолжает его запускать — аккуратнее, чем моя проверка, которая к тому же ложно срабатывала на строку «pre-commit» внутри самого хука. Осталась только проверка наличия бинаря с подсказкой, что ставить.Проверено вживую
--all-filesпо репозиториюЭтот коммит прошёл через хуки вживую.