体验一下Github的Webhook

目录

原理就是仓库版本变动之后会给设定的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 还是全部或是自己选。

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