git pushで本番環境にデプロイ

git pushでデプロイしたい

ローカルレポジトリにgit commitした後に、問題なければリモートレポジトリにgit pushすることになりますが、git pushしただけではリモートレポジトリの情報が更新されるだけでデプロイはされません。今までデプロイ作業は自宅サーバーにログインして、git pullを行なっていたのですが、それは面倒なのでgit pushのタイミングでデプロイを自動化することにしました。まず、レポジトリを立てるところから順を追って解説します。

リモート側にGitレポジトリを立てる

その後、repo/.git/の中にあるフックを編集して、アップデートのフックでgit pullが走るようにします。

ローカル側にGitレポジトリのクローンを作成

これで本番環境にオートデプロイされます。本番環境ではpushリクエストを受け取ったら、それをフックとしてgit pullを実行し、ドキュメントルートのスクリプトを更新します。

クラスタサーバー構成の場合どうするか

クラスタサーバー構成の場合、複数台のサーバーでlsyncdを構成しておくと、カーネルのinotify機能をトリガーにしてrsyncが自動実行されるため、複数台のサーバー間の同期を行うことができます。PHPやPerlの場合はこれで大丈夫ですが、Javaなどコンパイルが必要な言語に関してはいったんwarにしてJenkinsでデプロイしたほうが良いかもしれません。

関連記事