Gitのフック処理を利用した自動デプロイ

今回実装する環境や設定内容は過去記事を参照ください。

シンプルな自動デプロイまでの道のり(VirtualBox+Vagrant編)
シンプルな自動デプロイまでの道のり(Apache編)

取り敢えず今回はローカル環境からmasterブランチにpushすれば本番環境のサーバ(www.example.com)へデプロイ。

masterブランチ以外にpushすればテストサーバ(debug.example.com)へそれぞれデプロイされる事を目標にしています。

環境説明

本番サーバー:www.example.com
テストサーバ:debug.example.com

Gitリポジトリ:www.example.com

サーバ上Gitへフック設定

vim ~/repos/www.example.com/httpdocs.git/hooks/post-update

# push されたブランチ名が BRANCH に入る
BRANCH=$(git rev-parse --symbolic --abbrev-ref $1)

if [ "${BRANCH}"="master" ]; then
	(
	cd /var/www/vhosts/www.example.com/httpdocs
	git --git-dir=.git fetch
	git --git-dir=.git reset --hard origin/master
	git --git-dir=.git clean -fdx
	)
else
	(
	cd ~/tmp
	git --git-dir=.git fetch
	git --git-dir=.git reset --hard origin/${BRANCH}
	git --git-dir=.git clean -fdx
	rsync -avr --delete --stats ./ /var/www/vhosts/debug.example.com/httpdocs
	)
fi

以上で完了です。