githubなどのwebhookをうけとる便利なGo製サーバー adnanh/webhook
2017/10/26 06:45 JST
hugoでビルド&プッシュしたgitリポジトリをサーバに反映させるためにwebhookが有効だと思ったのでいろいろ調べてみた結果
https://github.com/adnanh/webhook
が, シングルバイナリのこれが一番使い勝手が良かった.
設定ファイル(hooks.json)は以下
[{
"id": "update-script",
"execute-command": "/tmp/update-script.sh",
"command-working-directory": "/tmp",
"trigger-rule": {
"and": [{
"match": {
"type": "payload-hash-sha1",
"secret": "<<SECRET KEY>>",
"parameter": {
"source": "header",
"name": "X-Hub-Signature"
}
}
},
{
"match": {
"parameter": {
"source": "header",
"name": "X-GitHub-Event"
},
"type": "value",
"value": "push"
}
}
]
}
}]
これでSECRET KEYで認証が行えるのと push
イベント以外は弾くようにできる.
http://<<HOSTADDR:PORT>>/hooks/update-script
にgithubからpostが飛んでくるとあとは設定したスクリプトが実行される.
あとはsystemdなりにサービス登録しておわり.
[Unit]
Description=webhook
[Service]
User=root
Group=root
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/webhook -hooks /tmp/hooks.json -verbose -hotreload
[Install]
WantedBy=multi-user.target
自分の環境はlet's encrypt
+ nginx
でhttpsなリバプロでセキュアなフックサーバを建てた.