使用GitHub的Webhooks自动部署Ghost主题

网友投稿 286 2022-09-14

使用GitHub的Webhooks自动部署Ghost主题

最近几天在做Ghost的主题​​Adam​​​,但是想要在远程调试就必须得ssh到服务器执行一下命令,光是​​cd path/to/theme​​就够烦了。于是想办法是否能让服务器自动从github上面pull代码,然后自动执行自定义命令让代码生效。

让服务器自动部署主题命令有两个方法:

用Crond执行周期任务,比如1分钟去git取一次。但是这样实时性其实并不那么好,并且如果任务所需负载较大(我就是这种情况,因为主题需要用​​Grunt​​跑一堆命令才能生效),那就更无法接受了。用GitHub webhooks监听GitHub发来的HTTP POST请求。

但是网上关于webhooks的资料实在是少之又少,中文的也基本上没有。自己也是弄了半天才搞明白,原谅我不是做web的吧,我只是一个手游客户端程序员 :D

详细资料可以在​​GitHub Developer API Webhooks​​找到。这里之做一些简单的说明。

GitHub Webhooks是怎么工作的?

设置钩子

在GitHub上,每个仓库(repository)都可以设置一个或多个自己专属的钩子,且每个钩子都可以设置独立的触发事件(​​Events​​)。

这里列举两个事件:

事件类型

描述

push

仓库有push时触发。默认事件

create

当有分支或标签被创建时触发

delete

当有分支或标签被删除时触发

下面讲一下webhooks的设置

Payloads URL:当事件被触发时,GitHub会将POST请求发送至改地址。Content type:数据格式。Secret: 用作给POST的body加密的字符串。采用HMAC算法。​​HMAC hex digest of the body, using the secret as the key​​

事件内容

Headers中:


描述

X-Github-Event

触发POST请求的事件名称。

X-Hub-Signature

用设置的Secret加密的哈希(如果有设置secret的话)

X-Github-Delivery

本次POST的全局ID(UID)

body中的内容,由事件不同而不同,就不做赘述了。具体可以看​​event types​​。

怎么使用hooks?

其实上面说了那么多,要使用钩子其实很简单。

在仓库的settings中添加一个钩子。设置Payloads URL为你准备监听的地址,比如

​​keys中。(此步骤根据个人需要可选)。自己写一个监听程序,解析header判断事件,然后执行你自己想要的命令吧。

嗯,第六步虽然说着简单但是还是要折腾一番。我折腾了大半天弄了个基于nodejs的监听程序​​Cherry-hooks​​,很简单,但足够我的情景用了。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:200万粉丝100万变现,视频号矩阵运营如何搭建团队?
下一篇:Auto Installing Vundle From Your Vimrc
相关文章

 发表评论

暂时没有评论,来抢沙发吧~