githubへpushした時にawsからソースを取得する

AWSじゃなくても良いんですけどね。

githubにはservicehookというgitリポジトリのhooksみたいな機能がある。

リポジトリの画面からSettings(レンチのアイコン)→ServiceHooks→WebHook URLs の順序で辿って URLという欄に通知させたいサーバーのurlを記載する。

githubにpushすると、このurlにjson形式でpushされた情報(timestampとかheadのsha1値とか色々)が飛んで来る。

このjsonをパースするなり、リクエストが有ったから適当にpullするとか書けば良い。 そういう意味では

とかの選択肢になると思う。

あ、それとリクエストはhttpなのでwebサーバーが必要です。

sinatraで書くとこんな感じ。 リクエストはpayloadというパラメータに入って来るらしい。

#!/usr/bin/ruby

require 'rubygems'
require 'sinatra'
require 'json'
require 'sinatra/reloader'
require 'logger'

# 何かログ書きたかったら
Log = Logger.new('std.log')

post '/' do
        # 何か特定の動作させたいなら下記の値からsha1取るとかして動作させる
        # 今回はpullするだけ
        push = JSON.parse(params[:payload])
        # ログ
        Log.info(p(result))
        `cd /gitdir && git pull origin`
end

結構便利。