この記事を読むとできるようになること
- git hookの概要を理解できる
- git hookを活用してpush前に自動テストを実行するための設定方法を理解できる
- 開発チーム内で設定を共有する方法を理解できる
Git hookとは
特定のイベントが発生したときに自動的にスクリプトを実行するための機能がある。これを利用して、git pushの前に自動テストを実行する
設定手順
Gitリポジトリのルートディレクトリに.git/hooksというディレクトリがあるので、そのディレクトリ内にpre-pushという名前のファイルを作成する
以下の内容を記述
#!/bin/sh
python manage.py test
if [ $? -ne 0 ]; then
echo "Tests must pass before push!"
exit 1
fi
最後に、pre-pushに実行権限を付与
chmod +x .git/hooks/pre-push
これで、git pushを実行する前に自動テストが実行されるようになる。テストが失敗すると、pushが中止され、"Tests must pass before push!"というメッセージが表示される
テストが失敗するとpushがキャンセルされる
% git push
System check identified no issues (0 silenced).
........F...
======================================================================
FAIL: test_・・・
----------------------------------------------------------------------
Ran 12 tests in 0.012s
FAILED (failures=1)
Tests must pass before push!
error: failed to push some refs to ・・・
開発チーム内で設定を共有する方法
デフォルトでは、hooksPathが.git/hooksになっているため、自分以外の開発者に共有できない。そのため、リポジトリに.githooksを作成し、そちらのパスを参照するように変更する必要がある
# localを指定し該当リポジトリのみ、core.hooksPathを書き換える
git config --local core.hooksPath .githooks
# 設定値がうまく反映されているかを確認(.githooksが出力されればOK)
git config --get core.hooksPath
上記手順をアサインされたエンジニアに実行してもらえば、各自commitやpush前にテストを実行することができるようになる
まとめ
いかがでしたでしょうか。本記事では、Git hookを活用してpush前に自動テストを実行する方法について紹介しています。この記事を読むと、git hookの概要、git hookを活用してpush前に自動テストを実行するための設定方法、開発チーム内で設定を共有する方法を理解できるようになりますので、ぜひ参考にしてみてください。