Masayan tech blog.

  1. ブログ記事一覧>
  2. Git hookを活用してpush前に自動テストを実行する

Git hookを活用してpush前に自動テストを実行する

公開日

この記事を読むとできるようになること

  • 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前に自動テストを実行するための設定方法、開発チーム内で設定を共有する方法を理解できるようになりますので、ぜひ参考にしてみてください。