『PasteSpider』
最新文章
贴代码出品
热门话题
用户问答
lao人言
「搜索」
【本期话题】更多
三人寄语更多
谋而后动,往往会让你对自己的代码更具信心!
点赞:1
逻辑注解清晰的代码优于那些一眼看不明白的语法糖
点赞:0
能通过内网IP访问的,尽量不要使用域名访问!
点赞:0
对于答案来说,更重要的是找到答案的这个过程而不是答案本身!
点赞:0
抛开需求谈架构是无意义的事情!
点赞:0
需求就是系统的千年杀,相爱相杀那种!
点赞:0
往往会为了一个项目,搭建适合他专属的脚手架!
点赞:1
由于时间的问题,我们往往会给自己埋坑,等着后续或者下一任来填!
点赞:0
抛开需求讲架构,和纸上谈兵无差!
点赞:1
没有最好的语言,只有更合适的语言!
点赞:0
使用PasteSpider实现CI/CD持续部署,类似Jenkins的功能,让你的2G服务器也可以飞起
尘埃 2024-08-03 819 40 0
使用PasteSpider的SVN/GIT模块,你也可以实现类似Jenkins的功能,关键点在于配置简单!!!服务器资源消耗小!!!

或许你接触过Jenkins,在我理解就是拉取源码,然后构建成镜像,最后启动容器!

这个步骤你在PasteSpider上也可以实现,以下案例使用svn/gitee作为源码管理

目前支持的源码有svn,gitee,github,gitlab等

如果你使用git作为源码管理,道理差不多

实现原理

1.webhook是时下非常流行的一个推送模式,webhook其实就是往某一个特定的地址推送消息,这样可以避免频繁的轮询,在事件发生后的第一时间告知某一个目标!

2.开发者往gitee的源码仓推送一条升级的时候,基于配置会推送一个信息到PasteSpider中,如果符合配置,则会执行构建并持续部署,也就是升级你服务器上的服务!

3.工作目录,基于配置,默认是宿主服务器上的/spider/,然后是服务的类型,比如构建类型,则为/spider/publish/,如果为静态的则为/spider/static/,后面是项目代码和服务代码,比如商城项目(代码为:shop),的服务(代码为:api),如果这个服务配置的类型为发布模式,则他的工作目录就是/spider/publish/shop/api,服务升级的时候,就会到这个目录执行docker build ,所以webhook值要把最新的项目发布文件覆盖到这个目录即可!

以我的代码为例

dotnet 6.0 + Linux AliBaba + PasteSpider v24.07.20.01

1.按照论坛的方式安装PasteSpider

一键安装PasteSpider

2.在服务器linux上安装dotnet

这个可以查看微软官方网站

https://learn.microsoft.com/zh-cn/dotnet/core/install/linux-scripted-manual#scripted-install

安装完成后执行命令监测下

dotnet --info

SVN/GIT的配置

svn源码管理模式

3.打开PasteSpider的管理端,找到菜单

image.png以我的为例,我为项目

image.png

如果你启用了docker registry的私人仓库,则上面的配置中仓储那边要对应的选择,选择哪个要看你所选的服务

上面中要注意的是 克隆编译命令

我的如下

#删除旧的源码
rm -rf /spider/source/blog/tool/
#创建文件夹,可能文件夹不存在
mkdir -p /spider/settings/blog/tool/
#删除旧的配置文件,这一步看实际情况,因为拉取源码会把所有代码都覆盖
rm -rf /spider/settings/blog/tool/appsettings.json
#复制配置文件,留着备用
cp -f /spider/publish/blog/tool/appsettings.json /spider/settings/blog/tool/appsettings.json
#从服务端拉取源码,这个第一次的时候一般会失败,所以要直接去服务端试着拉取代码
svn checkout svn://your_svn_ip:your_svn_port/PasteSoft/PasteSoft --username=your_svn_name --password=your_svn_password /spider/source/blog/tool/
#构建命令,不同语言不一样处理,目的就是发布到文件夹
dotnet publish /spider/source/blog/tool/ -c release -r linux-x64 --self-contained false -o /spider/publish/blog/tool/
#删除拉取的配置文件
rm -rf /spider/publish/blog/tool/appsettings.json
#从刚刚备份的配置文件复制到发布文件夹
cp -f /spider/settings/blog/tool/appsettings.json /spider/publish/blog/tool/appsettings.json
#后续的动作由系统接管,其实就是构建镜像和升级!


gitee源码管理配置

    如果你的源码是使用giteee的,则可以参考如下配置

image.png

如上图,有几个要点要注意

1.哪个服务,表示接收到消息后,要对你PasteSpider中的哪个服务执行升级操作

2.克隆编译命令,这个里面填写的命令是linux上执行的,一行一条命令,目的是从对应的源码仓库拉取代码,然后编译,发布,注意要发布到PasteSpider的工作目录中!

a.一个命令一行,行行之间无关,所以目录要用全路径

b.命令是在宿主服务器上执行的,所以没有的命令要自己去安装,比如git

c.编译发布,要看你的开发语言,以.netcore为例,则需要安装dotnet sdk才可以编译发布!

d.至于配置文件等,需要你使用这个命令自己实现备份,覆盖等!

3.源码管理方式,就是源码是哪个类型的,不同的源码仓库使用的签名是不一样的,对应的路径也不一样!

4.项目名称,这个不是乱填写,要到对应的仓库中去看,在如下位置:

image.png

5.验证密钥,其实就是消息校验的签名,这样可以防止别人通过接口随意的给你推送消息,需要和对应的gitee后台的配置一致,比如:

image.png

如果是svn的模式,则为

post-commit的内容上

#REPOS="$1"
#REV="$2"
export LANG=zh_CN
MESSAGE=$(svnlook log -r $2 $1)
curl -d "token=your_token&repos=$1&version=$2&info=$3&info=$MESSAGE" "https://spider.abc.com/api/spider/Code/svncommit%22

假设访问https://spider.abc.com/page/index.html可以访问到我的PasteSpider管理端,则有如上配置

注意上面的your_token,和我们3步骤配置的验证密钥需要一致,一会有个地方要用

上面的文件保存好了后,注意修改post-commit的执行权限,需要能够执行,否则是不会生效的

6.私有仓库,这个要看你的PasteSpider是否配置了,而且这个服务是否启用了私有仓库模式!

7.升级规则,这个是防止所有的源码提交都执行升级操作,这里采用的是关键字模式,也就是提交源码的时候填写的备注的前缀,我个人是习惯用update,也就是说如果我本次需要升级服务器上的服务,则提交源码的时候,我用update打头,后面在填写我升级的内容即可!

5检查流程

以上按照要求配置后,特别注意的是命令相关的内容

服务器是否支持相关的命令

是否支持curl 这个用于推送信息到PasteSpider的接口上的

是否支持dotnet 这个要看你是啥语言,不同语言的编译发布命令是不一样的

是否支持svn 这个是拉取源码的,比如我这个服务器上找不到这个命令,就使用yum -y install svn 不同服务器要基于自己的去安装

一些登陆操作是否已经执行

比如svn这个拉取代码的操作,一般是要求第一次执行,会有一个提示,大致意思是登陆,授权啥的,你可以手动执行下

6.准备测试

以上信息保存后,我们来提交一下代码!

image.png

注意看我的备注是update打头的,这个和我的步骤3的相对应!

我的启动前的资源使用情况

image.png

提交后,到PasteSpider的管理端的任务列表查看

image.png

在接收到对应的post-commit的推送后,会先执行镜像的构建,然后会基于配置执行升级!

或者是等待通知,比如我的

image.png

当然,如果执行失败了,则需要到任务的详细中查看,具体哪个命令失败了,比如我以前的

image.png

打开后,查看这个任务里面的子任务,哪条执行失败!

image.png

点击详细,会看到具体执行的命令,你可以把这个命令自己复制到服务器上去执行,看看为啥错误!

基于任务详细的反馈,如果有错误的修正后重新提交尝试!

升级后

image.png
多的部分,就是克隆命令后的编译发布花费的,使用ps -aux 可以查看到对应多出来的

image.png

查过资料,一段时间后这个会自己退出!

所以资源占用是非常划算的!

多测试几次,发现时间还是有差的!

image.png

写在后面

其实克隆代码执行完成后,走的就是默认的服务的发布模式(就是开发者在开发机上发布项目到文件,然后把发布后的项目文件同步到服务器上,然后服务器基于发布的文件执行镜像的构建和对应服务的发布!)

也就是说克隆代码执行完成后,其他的步骤执行的逻辑就和发布模式一致了

比如会运行几个容器

端口配置

IP配置

nginx配置等

评论列表
尘埃
40 819 0
快捷注册
热门推荐更多
PasteBuilder代码生成器
;
最新动态
  • 26.****.35 正在查看 PasteSpider之占位符,宏,对象属性遍历的说明 !
  • 151.****.173 正在查看 【PasteForm】最佳CRUD的实现案例项目PasteTemplate解析,包含源码(二) !
  • 2.****.65 正在查看 PasteSpider之项目-服务-环境介绍 !
  • 131.****.97 正在查看 贴代码框架PasteForm特性介绍之file特性(上传文件) !
  • 6.****.151 正在查看 PasteSpider之占位符,宏,对象属性遍历的说明 !
  • 215.****.57 正在查看 Postgresql的安装 !
  • 112.****.22 正在查看 Serilog在appsettings.json中的配置 !
  • 65.****.162 正在查看 PasteBuilder的进阶用法 !
  • 101.****.47 正在查看 Postgresql的安装 !
  • 57.****.56 正在查看 贴代码框架PasteForm特性介绍之datetime,daterange !
  • 111.****.206 正在查看 PasteSpider之占位符,宏,对象属性遍历的说明 !
欢迎加入QQ讨论群 296245685 更新记录 [PasteSpider]介绍 @2022-2023 PasteCode.cn 版权所有 ICP证 闽ICP备2021013869号-2