Github Webhook を受けて任意のスクリプトを実行するツール
ghooks-cmd-runner という、
Github の Webhook を受けて任意のスクリプトを実行する Go 製のツールを書きました。
Installation
https://github.com/tkuchiki/ghooks-cmd-runner/releases にバイナリがあるので、ダウンロードして解答してください。
Usage
$ ./ghooks-cmd-runner --help usage: ghooks-cmd-runner --config=CONFIG [<flags>] Receives Github webhooks and runs commands Flags: --help Show context-sensitive help (also try --help-long and --help-man). -c, --config=CONFIG config file location -p, --port=18889 listen port --host="127.0.0.1" listen host -l, --logfile=LOGFILE log file location --pidfile=PIDFILE pid file location --version Show application version.
config ファイルが必要なので、以下の様な TOML ファイルを用意します。
# port = 18889 (default: 18889) # host = "0.0.0.0 (default: 127.0.0.1)" # secret = "your webhook secret" # logfile = "path to logfile (default: stdout)" # pidfile = "path to pidfile" [[hook]] event = "push" command = "/path/to/script" [[hook]] event = "pull_request" command = "/path/to/script"
[[hook]]
の event
と command
を必要な分記述して、スクリプトを用意すれば完了です。
ghooks-cmd-runner
がスクリプトを実行する際、GITHUB_WEBHOOK_PAYLOAD
という環境変数に payload の JSON テキストを base64 でエンコードした文字列を格納しますので、環境変数を読んで base64 でデコードすればお好きな言語で payload を受け取とることができます。
シェルスクリプトで書くと以下のようになると思います。
echo ${GITHUB_WEBHOOK_PAYLOAD} | base64 -d ...
daemonize の機能はないので各自で行ってください。
追記
〜 2016-05-18 17:00
以下のバージョンをリリースしています。
- v0.1.2
- コマンドの標準(エラー)出力を1行ずつログに書き出すように修正
- v0.1.3
- hook[].branch オプション追加
- イベント毎に、正規表現にマッチした branch のみでコマンドを実行可能に
- hook[].branch オプション追加
- v0.2.0
- イベント毎に、コマンドを直列実行するように修正