体验一下Github的Webhook

这东西就是版本库变动之后会给设定的URL发送一个POST请求,然后服务器通过这个请求去Pull以及构建重启web服务什么的,不用手动去服务器更新,好像也有其他不得了的玩法。

用于Webhook的web服务

更新:python-github-webhook,这个库可以很简单地监听事件做出动作。
只要加上对应地装饰器,就可以监听对应事件了。

正常做法有很多信息可以获得,但是我只是更新代码构建,最简单的是接收到post请求采取动作就行了。

图省事直接扔在现有flask项目里面了,本来想验证secret,试了半天没成功,真正使用的时候有风险,一定要加上。

看网上的文章都是用的node,有个webhook的包很方便。

1
2
3
4
5
6
7
@app.route('/webhook', methods=['POST'])
def webhook():
if 'X-Hub-Signature' in request.headers and request.headers['X-Hub-Signature'].startswith('sha1='):
p=Popen('/var/www/xxx/webhook.sh')
return 'Ok'
else:
return 'Forbidden.', 403

触发的脚本

上面的代码里面就有执行/var/www/xxx/webhook.sh这个脚本,在这个脚本里做pull和别的事就行了。

1
2
3
4
5
#!/bin/bash
cd /var/www/xxx
git pull
git checkout master
yarn run build

在Github添加

可以选择只监听Push还是全部或是自己选。

添加之后会自动发送一个测试的请求验证是否正确。

0%