今回紹介するのは、ローカル環境からリモートリポジトリにプッシュした時に、プッシュした内容を自動で本番環境に反映させるデプロイ環境の構築手順。
コンテンツ
前提条件
ここで紹介する前提条件として、本番環境とリモートリポジトリは同一サーバー、リモートリポジトリは前回紹介した手順でオリジナルの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
リモートリポジトリにプッシュした内容が公開ディレクトリにプルされ、自動デプロイができるようになっているはずだ。