准备事宜
1.已经在PasteSpider中配置好了相关的项目和服务
2.在gitee中有创建对应的代码仓库
实现原理
1.webhook是时下非常流行的一个推送模式,webhook其实就是往某一个特定的地址推送消息,这样可以避免频繁的轮询,在事件发生后的第一时间告知某一个目标!
2.开发者往gitee的源码仓推送一条升级的时候,基于配置会推送一个信息到PasteSpider中,如果符合配置,则会执行构建并持续部署,也就是升级你服务器上的服务!
3.工作目录,基于配置,默认是宿主服务器上的/spider/,然后是服务的类型,比如构建类型,则为/spider/publish/,如果为静态的则为/spider/static/,后面是项目代码和服务代码,比如商城项目(代码为:shop),的服务(代码为:api),如果这个服务配置的类型为发布模式,则他的工作目录就是/spider/publish/shop/api,服务升级的时候,就会到这个目录执行docker build ,所以webhook值要把最新的项目发布文件覆盖到这个目录即可!
配置接收端
由上可知,消息发生后,接收端在PasteSpdier中,以下以我的项目为例,打开PasteSpider的后台菜单,“项目信息”-“GIT/SVN”,大概如下图:
点击右侧主作业区域左上方的“+”新增一条规则
如上图,有几个要点要注意
1.哪个服务,表示接收到消息后,要对你PasteSpider中的哪个服务执行升级操作
2.克隆编译命令,这个里面填写的命令是linux上执行的,一行一条命令,目的是从对应的源码仓库拉取代码,然后编译,发布,注意要发布到PasteSpider的工作目录中!
a.一个命令一行,行行之间无关,所以目录要用全路径
b.命令是在宿主服务器上执行的,所以没有的命令要自己去安装,比如git
c.编译发布,要看你的开发语言,以.netcore为例,则需要安装dotnet sdk才可以编译发布!
d.至于配置文件等,需要你使用这个命令自己实现备份,覆盖等!
3.源码管理方式,就是源码是哪个类型的,不同的源码仓库使用的签名是不一样的,对应的路径也不一样!
4.项目名称,这个不是乱填写,要到对应的仓库中去看,在如下位置:
5.验证密钥,其实就是消息校验的签名,这样可以防止别人通过接口随意的给你推送消息,需要和对应的gitee后台的配置一致,比如:
6.私有仓库,这个要看你的PasteSpider是否配置了,而且这个服务是否启用了私有仓库模式!
7.升级规则,这个是防止所有的源码提交都执行升级操作,这里采用的是关键字模式,也就是提交源码的时候填写的备注的前缀,我个人是习惯用update,也就是说如果我本次需要升级服务器上的服务,则提交源码的时候,我用update打头,后面在填写我升级的内容即可!
Gitee中的配置
找到你的gitee中的项目,打开配置项目,如上图配置,注意修改你的URL,需要为你的PasteSpider的访问地址,然后是签名密钥,Push,激活等,配置好了后,就可以开始测试了!
测试上线
然后找到对应的项目源码,推送提交,然后可以去查看下你的PasteSpider的日志,推送的信息目前是打印到Warning层级!