技術メモ

技術的なメモを載せていきます。

git の hook を使って開発環境を自動デプロイ

git の hook を使って開発環境を自動デプロイ。 

f:id:unkillonline:20170707190150p:plain

 

前回に引き続き、さくらのレンタルサーバに設定したSmart HTTP な

git 環境に対して、今度は開発環境を自動デプロイしてみます。

 

 

前回同様対象さくらのレンタルサーバは以下の通り

f:id:unkillonline:20170616212715p:plain

  サーバ上のレポジトリは ~/repos

  作成したgitレポジトリは ~/repos/sample.git 

 

 

■ 手順 

  1) 公開ディレクトリへのclone

  2) 本番機/開発機で使いまわせる.htaccessの作成

  3) git hook の設定

 

 

  

1) 公開ディレクトリへのclone

さくらのレンタルサーバのweb公開エリアである ~/www 以下で

作成したレポジトリをcloneします。

 

  

1-1) git clone

 

 

  % cd ~/www;pwd

      % git clone /home/foobar/repos/sample.git sample

 

 

2) 本番機/開発機で使いまわせる .htaccessの作成

開発機はリリース前なので見せちゃ困ると思うので、

basic認証をつけておきます。

せっかくなので作った.htaccess.もgitの管理下に入れてしまい、

本番にはおいてあっても無害なものにしておきます。 

 

 

2-1) .htaccess の作成

 

基本はBasic認証ですが、Satisfy句を使って条件をつけて処理します。

 

  % vi .htaccess

----------------------------------------------------------------------------

SetEnvIf Host "^本番ドメイン名$" prod
SetEnvIf Host "^foobar.sakura.ne.jp$" develop

satisfy any

order deny,allow
deny from all
allow from env=prod

AuthUserFile "/home/foobar/.htpasswd"
AuthGroupFile /dev/null
AuthName "Input Id and Password."
AuthType BASIC
require valid-user

---------------------------------------------------------------------------- 

 

3) git hook の設定

gitレポジトリごとに作られるディレクトリのうちの一つにhooksがあり
読んで字のごとく特定の処理をフックします。
今回は「変更がかかったら」処理するようにしたいとおもいます。 

 

3-1) git hook (post-update)の設定

 

ここでのポイントは GIT_DIR を unset しておくこと。

 

  % cd ~/repos/sample.git/hooks;pwd

  % vi post-update

----------------------------------------------------------------------------------------

unset GIT_DIR
cd /home/foobar/www/sample
git pull

----------------------------------------------------------------------------------------

  % chmod 755 post-update

 

 

 

 

完成です。 

 

この状態で、gitレポジトリに変更が加わると

http://foobar.sakura.ne.jp/sample/ が自動的に反映されます。

 

hookの中身はshellスクリプトなので、別サーバにrsyncしたりと

融通がききます。

 

次回は、さくらのレンタルサーバmysqlコマンドライン

弄る記事を書きたいとおもいます。