あたらしものずきっ!

試してみたものとか、遊んでみたものを色々記してみます。

git pushでdeployな生活をつくる方法

時間が時間なので、さくっと。

gitでpushするとdeploy、というgitでソースコードなど管理してる場合にはかなりお手軽な反映方法なんだけど、その方法が綺麗にまとまってなかった。試行錯誤しつつようやく出来上がったのでメモとして残しておく。

作業した環境は、さくらVPS上のdebiandebianの導入周りとかはやってる人もおおいので割愛。

gitユーザをつくる

adduser --disabled-password git
su - git

リモートのgitリポジトリをつくる

mkdir ~/repos
cd ~/repos
mkdir Hoge.git
cd Hoge.git
git init --bare

vim hook/post-receive
#次の一文を足す
(cd /home/git/www/Hoge; git --git-dir=.git pull)

chmod +x ~/repos/Hoge.git/hooks/post-receive

deploy先をつくる

cd ~/
mkdir www/
cd www
git clone ~/repos/Hoge.git

公開鍵をVPSからlocalに転送して登録

ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub to.localhost*~/

あとは、ローカルにリポジトリつくってリモート先を登録するだけ。git pushすると、hookによって、展開先ディレクトリにcloneしたリポジトリ内でpullがかかる。

要点としては、deployする先はgitユーザの公開ディレクトリ、というところ。gitユーザ権限の関係で通常はそこじゃないとhook時に公開ができない。これに気がつかなくてはまった。