Webhook 是什么?
Webhook,也就是人们常说的钩子,是一个很有用的工具。Webhook 允许第三方应用监听 Github.com 上的特定事件,在这些事件发生时通过 HTTP POST 方式通知( 超时5秒) 到第三方应用指定的 Web URL。 例如项目有新的内容 Push,或是 Merge Request 有更新等。 WebHook 可方便用户实现自动部署,自动测试,自动打包,监控项目变化等。
如此一来,可以通过这种方式去自动完成一些重复性工作;比如,用 Webhook 来自动触发一些持续集成(CI)工具的运作,比如 Travis CI;又或者是通过 Webhook 去部署你的线上服务器。
Webhook使用场景
实际工作中,经常有这样的场景,本地提交代码到git仓库以后需要网站远程自动同步代码, 大概流程如下图:
Webhook自动化部署
1.为了响应 Webhook 发出的请求,从而做一些我们想做的事情,我们得先实现一个响应服务器。本文采用 Node 来实现一个原型,你当然也可以用 PHP,python 等, 这里使用了github-webhook-handler插件:
1 | const http = require('http') |
例如 deploy.sh
1 | //执行通关exec做操作,也可以尝试用sh脚本 |
1 | #!/bin/bash |
配置 Webhook
Webhook 的配置是十分简单的,首先进入你的 repo 主页,通过点击页面上的按钮 [settings] -> [Webhooks & service] 进入 Webhooks 配置主页面。也可以通过下面这个链接直接进入配置页面:
配置好 Webhook 后,Github 会发送一个 ping 来测试这个地址。如果成功了,那么这个 Webhook 前就会加上一个绿色的勾;如果你得到的是一个红色的叉,那就好好检查一下哪儿出问题了吧!
参考资料: