Git hooksツールの lefthook を使って、コミット前にシークレット漏洩チェックと破壊的操作の検出を自動化した。
Before: シークレットの混入や rm -rf、DROP TABLE のような危険なコマンドがそのままコミットされうる状態。
After: lefthook の pre-commit フックで自動検出し、コミットをブロックする。
# lefthook.yml
pre-commit:
commands:
config-guard:
run: bash scripts/config-guard.sh
glob: "*.{env,yml,yaml,toml,json,sh}"
config-guard スクリプトでは以下をチェックする:
token=, secret=, password= などのパターンをgrepで検知rm -rf /, DROP TABLE, git push --force など危険なコマンドパターンlefthook を選んだ理由は、YAML一枚で設定が完結し、glob でファイルタイプごとにフックを分けられること。husky + lint-staged でも似たことはできるが、lefthook の方がポリグロット(多言語)プロジェクトでの設定がシンプル。
テストも用意する。fixture ファイル(意図的に違反を含むファイル)を置いて、スクリプトが正しく検出するかを検証する。CIでもこのテストを回すことで、ガード自体の品質を担保できる。