当前位置: 首页 > news >正文

使用PasteSpider实现类似Jenkins的功能,让你的2G服务器也可以飞起

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

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

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

以我的代码为例

dotnet 6.0 + Linux AliBaba + PasteSpider v24.07.20.01

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

一键安装PasteSpider

2.在服务器linux上安装dotnet

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

在 Linux 上不使用包管理器的情况下安装 .NET - .NET | Microsoft Learn

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

dotnet --info

SVN/GIT的配置

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
#后续的动作由系统接管,其实就是构建镜像和升级!

以上需要注意的地方有

目录说明

/spider/这个是工作目录,就是PasteSpider的工作目录,对于宿主服务器的路径而言的,默认是/spider/

这个目录下有几个功能文件夹

source 表示用于存放svn拉取的源码的

publish 表示用于存放服务编译后(发布)的文件的

settings 用于存放项目服务的特别文件的,这个看需求

克隆编译命令 的目的就是拉取源码到source文件夹,然后通过对应语言的发布命令,发布到publish文件夹

功能文件夹下还有几层 

/spider/source/blog/tool/为例

spider是PasteSpider的工作目录

source是功能文件夹 表示源码

blog表示这个项目的代码

tool表示这个服务的代码

命令说明

命令一行一条,每行之间没有上下关系,也就是没有相对路径的说法,你得写全路径

如果是#开头的,则这一行命令不会被执行,是注释

更新说明

在配置的下方有一个表示,其实是多少个环境就多少行,然后注意后面那个命令开头

意思是源码提交的备注是这个字母开头的,才会触发升级,比如我的配置是

update 的开头 就可以触发

验证密钥注意下,下面的步骤4要使用

4 post-commit

假设你一键有一个SVN代码管理器的服务端,则参考如下文章进行配置并设置post-commit的hook文件

PasteSpider的运行条件之SVNManage中Hook的配置

精华部分其实就在

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"

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

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

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

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配置等

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Scrapy框架在处理大规模数据抓取时有哪些优化技巧?
  • Spring实现自定义注解
  • PHP开发【石头剪刀布小游戏】
  • 04-Fastjson反序列化漏洞
  • 麻雀搜索算法(SSA)与长短期记忆网络(LSTM)结合的预测模型(SSA-LSTM)的Python 和 MATLAB实现
  • 文档在线预览:keking/kkFileView踩坑记
  • 精通Perl代码优化:释放自定义优化技术的力量
  • 微软蓝屏事件:全球网络安全与系统稳定性的警示
  • Unity获取Animator动画播放完成事件
  • 第三十一天 chrome调试工具
  • 2023-2024年 Java开发岗面试题经验分享
  • ESP32是什么?
  • C++函数详解:全面指南
  • 什么是API 网关?为什么要 API网关?
  • AI应用开发前景与目标
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【翻译】babel对TC39装饰器草案的实现
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Mysql优化
  • nodejs:开发并发布一个nodejs包
  • nodejs实现webservice问题总结
  • Python socket服务器端、客户端传送信息
  • React 快速上手 - 07 前端路由 react-router
  • React的组件模式
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • vuex 笔记整理
  • Vue--数据传输
  • webpack4 一点通
  • 计算机常识 - 收藏集 - 掘金
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 前端相关框架总和
  • 数据可视化之 Sankey 桑基图的实现
  • 微信小程序:实现悬浮返回和分享按钮
  • 系统认识JavaScript正则表达式
  • 一文看透浏览器架构
  • 异常机制详解
  • 原生Ajax
  • Java总结 - String - 这篇请使劲喷我
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ###C语言程序设计-----C语言学习(6)#
  • #1014 : Trie树
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (2)空速传感器
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (三)终结任务
  • (顺序)容器的好伴侣 --- 容器适配器
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)Mysql的优化设置