Simple, Slowly

ブログを引っ越ししました。http://48.jp

Gitのフックでカジュアルにデプロイする

Gitのフックを使って、commitしたときに検証環境に自動的に反映させるようにしました。

検証環境でレビューしてもらうことは、日々の開発で多々あることと思います。
これまでcommitしてリポジトリにpushした後、手動で検証環境にデプロイしていたのですが、段々面倒くさくなってきました。
pushしたら自動で検証環境に反映されるようにしたい。
Jenkinsでやるのもなんだか大げさな気がして、カジュアルにGitのフックを使う事にしました。

Gitのフックを用意する

.git/hooks/post-commit を作成します。
post-commitはcommitプロセスが完了したときに実行されるフックです。

#!/bin/sh
# commitが完了したときに実行する
# 検証環境にデプロイする
#
branch="$(git rev-parse --abbrev-ref HEAD)"
if [ "$branch" = "development" ]; then
    echo "検証環境にデプロイします"
    git push
    cd ~/mnt/develop_dir && git pull &
fi

if文でブランチを判定して、デプロイ対象のブランチであれば、デプロイを行います。
ちなみに僕の環境では、検証環境がマウントしてあるので、cdで移動してgit pullしています。

commitしてみると、メッセージが表示されて(git pullを実行したときのメッセージ)結果を確認することができます。

とてもシンプルなフックですが、検証環境にcdしてgit pullしなくてよくなるのでなかなか便利です。

今回はcommitが完了したら実行するフックを利用しましたが、commitが完了する前やmergeを実行したときなど、様々なフックが用意されています。

参考
http://git-scm.com/book/ja/Git-%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA-Git-%E3%83%95%E3%83%83%E3%82%AF