今回紹介するのは、ローカル環境からリモートリポジトリにプッシュした時に、プッシュした内容を自動で本番環境に反映させるデプロイ環境の構築手順。

前提条件

ここで紹介する前提条件として、本番環境とリモートリポジトリは同一サーバー、リモートリポジトリは前回紹介した手順でオリジナルのGitサーバーを用意したものとして進めていく。

公開ディレクトリにGit環境を用意する

ここからはGitサーバーを構築した際に使ったユーザーに切り替えて進めていく。

su - git

まずは公開ディレクトリに移動し、git cloneを実行する。

cd /var/www/html/
git clone /home/git/testrepo.git # リモートリポジトリの場所を指定

プッシュ検知用のpost-receiveファイルを作成

次にリモートリポジトリにプッシュされた時に実行するシェルファイルを作成する。

cd /home/git/testrepo.git/hooks
vim post-receive
----------------------------------------------------------
#!/bin/sh 
while read oldrev newrev refname 
do 
    branch=$(git rev-parse --symbolic --abbrev-ref $refname) 
    if [ "master" == "$branch" ]; then        
        cd /var/www/html/testrepo 
        git --git-dir=.git pull
    fi 
done

今回はmasterブランチのプッシュのみを検知するコードを書いた。

ファイルを作成したら実行権限を与えておく。

chmod a+x post-receive

ここまででサーバー側の設定は完了。

ローカルリポジトリからプッシュ

最後にローカル環境から、何か適当にファイルを変更してみてプッシュしてみよう。

git push origin master

リモートリポジトリにプッシュした内容が公開ディレクトリにプルされ、自動デプロイができるようになっているはずだ。