原理就是仓库版本变动之后会给设定的URL发送一个POST请求,然后服务器通过这个请求去Pull以及构建重启web服务什么的,不用手动去服务器更新,也有一些其他玩法。
用于Webhook的web服务
更新: python-github-webhook ,这个库可以很简单地监听事件做出动作。只要加上对应地装饰器,就可以监听对应事件了。 正常做法 有很多信息可以获得,但是我只是更新代码构建,最简单的是接收到post请求采取动作就行了。
图省事直接扔在现有flask项目里面了,本来想验证secret,试了半天没成功,真正使用的时候有风险,一定要加上。
看网上的文章都是用的node,有个 webhook的包 很方便。
@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
和别的事就行了。
#!/bin/bash
cd /var/www/xxx
git pull
git checkout master
yarn run build
在Github添加
可以选择只监听
Push
还是全部或是自己选。
添加之后会自动发送一个测试的请求验证是否正确。