WebHook实践
webhook介绍
用户通过自定义回调函数的方式来改变Web应用的一种行为,这些回调函数可以由不是该Web应用官方的第三方用户或者开发人员来维护,修改。通过Webhook,你可以自定义一些行为通知到指定的URL去。
其实说白了就是钩子,通常由一些事件触发。
例如 Github 和 码云 的 webhook ,你可以自定义:当你本地的代码 push 时,就会自动触发这个钩子,它会向你指定的 URL 发送一个请求。假设请求由服务器接受后并由脚本自动 pull,由此就可以实现代码本地提交,服务器自动部署。
免去了 提交代码后还得再 SSH 到服务器只为了 pull 一下代码的功夫了。
又或者其他用户在你的项目下提出 Issue 或评论时,自动触发钩子,发送请求到 sm ,消息将由此接口主动推送到你的微信中。
如图:
Github 中 webhook 的请求和响应详情 ↓
我自己在服务器上脚本的日志记录 ↓
通过 sm 推送到微信中的截图 ↓
使用
文档和帮助
详细的帮助和文档见:
大概就是这样的:
在项目的 Setting
中找到左侧的 Webhooks
,按照提示填写你的接口 URL,需要在什么时候发送请求,ContentType 等参数。
然后你就在你的服务器配置这么一个简单的接口,接收来自 Github 和码云的请求,并处理就可以了。怎么处理那就是你自己的事情了。
如果你懒得写接口。这里推荐使用的我的接口:ServerMessenger ,绑定微信后可以将消息推送到你的微信上,当然这样的话只能起到通知的作用。详情可以去参考 ServerMessenger - Help
脚本
接口如何实现我就不写了。网上一抓一大把。还有现成的第三方服务可以选择。
我服务器上处理请求的脚本,仅供参考:
DATE=`date '+%Y-%m-%d %T'`
echo '======================================================================'
echo $DATE
cd /path/to/your/project/
A=$(sudo -u www git pull)
echo '——————————————————接口返回结果———————————————————————'
#发送curl请求到sm,将结果通知到我的微信上
curl -d "title=webhook_result&body=$A&app_key=your_app_key" "http://sm.rooot.me/send"
echo ''
echo '——————————————————git pull结果———————————————————————'
echo $A
最后
- 关于 ServerMessenger 的使用请在下方留言,我会及时处理。
- 接口和脚本怎么写的问题,主要看自己的需求。我的需求就是自动 pull 和通知给我。其他的玩法可以自己开发。
本文由 root 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Aug 7, 2017 at 10:45 pm