java系统找不到指定文件怎么解决
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~