Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
215
Help us understand the problem. What is going on with this article?
@fnobi

git hookでサイトを更新、やってみた

More than 5 years have passed since last update.

gitで自鯖のレポジトリにpushがあったら、
同じく自鯖にあるhtmlを更新したい。

(github-hookはちょっと前にやったけど、こっちは初めてだった)

git hook

git hookは、gitが持っている「コミットされたらなんかする」系の仕組み。

開発環境側で「コミットする直前」とか、
サーバーの側で「プッシュされた直後」とか、
いろんなタイミングで、決まったshell scriptを実行できる。

shell scriptは、.git/hooksに置く仕組みになっている模様。

今回は、この サーバーサイドフックの、 post-receiveを使ってみる。

設定する

クライアントサイドでやる作業はなし。

サーバー側でやる作業はだいたいこんな感じ。

# gitレポジトリへ移動
cd git/my-website.git

# post-receiveのスクリプトを設置
vi .git/hooks/post-receive

# 実行権限付ける
chmod +x .git/hooks/post-receive

スクリプトは、今回はこのくらいシンプルに。
--git-dir=.gitは付けないと怒られました。

#!/bin/sh

cd /home/fnobi/sites/my-website
git --git-dir=.git pull

これで完了。
 
git/my-website.gitへpushがあったら、
/home/fnobi/sites/my-websiteに設置してあるhtmlが自動更新されるようになりました。わーい!

成功したかどうかの確認

hookのスクリプトが失敗したときのログとか、どこに出るのかなぁと思っていたら、
pushしたとき手元に出てた。

"remote:"っていう行。

% git push
Counting objects: 11, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 631 bytes, done.
Total 6 (delta 3), reused 0 (delta 0)
remote: fatal: Not a git repository: '.'
To sasyugo:git/bukko-music-children.git
   f225eab..f7932b2  master -> master

うまく行ったときは、ちゃんとそういうログが出てますよ。

remote: From /home/fnobi/git/my-website
remote:    bbec307..8becb96  master     -> origin/master
remote: Updating bbec307..8becb96
remote: Fast-forward
remote:  index.html             |    4 ++++
remote:  src/ejs/index.html.ejs |    4 ++++
remote:  2 files changed, 8 insertions(+), 0 deletions(-)

べんりだなぁ。

まとめ

クライアントサイドフックで、コミットメッセージに「バルス」が含まれてるかどうかを検知して、
含まれてたらレポジトリを破壊するやつとかあって笑った。

そういえばコミットした瞬間の顔を撮影するやつとかもあったし、
いろんなことできそう。

参考

215
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
fnobi
面白法人のテクニカルディレクター 兼 作曲家 兼 ドルヲタ ⌨️ http://github.com/fnobi 🎼 http://soundcloud.com/fnobi
kayac
古都鎌倉から新しい技術と面白いサービスを、次々にリリースする面白法人カヤックのフロントエンジニアチーム

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
215
Help us understand the problem. What is going on with this article?