git hooksでデプロイ自動化


変更をプッシュしてから、リモートをsshで接続して、git pullしてデプロイしていくのが
なんとも面倒だったので、hooksを使って自動化できました。

リモートのリポジトリ 例 a.gitとします。
これ、ファイルに見えて、ディレクトリです。
その下にいくかのディレクトリがあります。
そのひとつがhooksディレクトリ、
cd a.git/hooks
としてみると、すでにサンプルがあります。

ここに、
post-receive というスクリプトを作ります。

中身

#!/bin/bash

#このスクリプトがあるとこに、ログ
SCRIPT=$(readlink -f "$0")
SCRIPTPATH=$(dirname "$SCRIPT")

echo "git pull started at $(date +%F_%T)" >> "$SCRIPTPATH/post-receive.log"

# git pull
cd /home/デプロイされる本体があるディレクトリ || exit
unset GIT_DIR
git pull origin master

echo "git pull finished at $(date +%F_%T)" >> "$SCRIPTPATH/post-receive.log"




別にログとらなくてもいいけど。
最初、うまく当たってなくて、動かなかったので、ログ取るようにしました。

あとは、このスクリプトに実行権限を与えるだけ
chmod +x post-receive

たったこれだけです。

ローカルからプッシュしたら、もう公開サーバーで反映しています。