使用PasteSpider实现类似Jenkins的功能,让你的2G服务器也可以飞起
或许你接触过Jenkins,
在我理解就是拉取源码,然后构建成镜像,最后启动容器!
但是这个功能对于小内存的服务器来说就是奢望了!
今天介绍一个新版本,把你这个遗憾弥补下!
在PasteSpider中,也是支持拉取源码,然后编译发布的!!!
以下案例使用svn作为源码管理
如果你使用git作为源码管理,道理差不多
以我的代码为例
dotnet 6.0 + Linux AliBaba + PasteSpider v24.07.20.01
1.按照论坛的方式安装PasteSpider
2.在服务器linux上安装dotnet
这个可以查看微软官方网站
https://learn.microsoft.com/zh-cn/dotnet/core/install/linux-scripted-manual#scripted-install
安装完成后执行命令监测下
dotnet --info
SVN/GIT的配置
3.打开PasteSpider的管理端,找到菜单
以我的为例,我为项目
如果你启用了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文件
https://soft.pastecode.cn/Article/1
精华部分其实就在
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.准备测试
以上信息保存后,我们来提交一下代码!
注意看我的备注是update打头的,这个和我的步骤3的相对应!
我的启动前的资源使用情况
提交后,到PasteSpider的管理端的任务列表查看
在接收到对应的post-commit的推送后,会先执行镜像的构建,然后会基于配置执行升级!
或者是等待通知,比如我的
当然,如果执行失败了,则需要到任务的详细中查看,具体哪个命令失败了,比如我以前的
打开后,查看这个任务里面的子任务,哪条执行失败!
点击详细,会看到具体执行的命令,你可以把这个命令自己复制到服务器上去执行,看看为啥错误!
基于任务详细的反馈,如果有错误的修正后重新提交尝试!
升级后
多的部分,就是克隆命令后的编译发布花费的,使用ps -aux 可以查看到对应多出来的
查过资料,一段时间后这个会自己退出!
所以资源占用是非常划算的!
多测试几次,发现时间还是有差的!
写在后面
其实克隆代码执行完成后,走的就是默认的服务的发布模式(就是开发者在开发机上发布项目到文件,然后把发布后的项目文件同步到服务器上,然后服务器基于发布的文件执行镜像的构建和对应服务的发布!)
也就是说克隆代码执行完成后,其他的步骤执行的逻辑就和发布模式一致了
比如会运行几个容器
端口配置
IP配置
nginx配置等
使用PasteSpider实现类似Jenkins的功能,让你的2G服务器也可以飞起的更多相关文章
- Jquery打造的类似新浪微博@提醒功能
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- python面向对象进阶 反射 单例模式 以及python实现类似java接口功能
本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和特性. 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存 ...
- ios实现类似魔兽小地图功能 在
写了一个类似魔兽小地图功能的控件. 比如你有一个可以放大缩小的scrollView.会在里面进行一些放大缩小,点击里面的按钮呀,等操作. 这个小地图控件.就会和你的大scrollView同步.并有缩略 ...
- js/jQuery实现类似百度搜索功能
一.页面代码:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www. ...
- pandas的筛选功能,跟excel的筛选功能类似,但是功能更强大。
Select rows from a DataFrame based on values in a column -pandas 筛选 https://stackoverflow.com/questi ...
- vue 使用watch监听实现类似百度搜索功能
watch监听方法,watch可以监听多个变量,具体使用方法看代码: HTML: <!doctype html> <html lang="en"> < ...
- 一个类似indexOf()的功能的函数
之前面试的时候遇到了这样的一道题,不过写的时候有些细节没注意到,现在重新写了一下. 写一个类似indexOf()的功能的函数 var str = "dafdfgvdahjfbhyuyvtur ...
- jenkins自动部署代码到多台服务器
下面讲一下如何通过一台jenkins服务器构建后将代码分发到其他的远程服务器,即jenkins自动部署代码到多台服务器. 1.下载 pulish over ssh 插件 2.系统管理 -> 系统 ...
- 利用FlashPaper实现类似百度文库功能
最近需要实现一个类似百度文库的功能,在Google上淘了一段时间,发现FlashPaper还算能够不错的实现此需求. 首先讲下思路: 1>安装FlashPaper: 2>利用java代码将 ...
- smarty模板中类似for的功能实现
1. 功能说明,在页面使用smarty循环100次输出,类似for循环100次 {section name=total loop=100} {$smarty.section.total.index+1 ...
随机推荐
- 混入 - Mixins
混入(mixins)是一种分发Vue组件中可复用功能的非常灵活的方式.混入对象可以包含任意组件选项.当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项. 混入分为:全局和局部 定义全局混 ...
- AnkhSVN For Visual Studio 2022
AnkhSVN For VS2022 AnkhSVN 2.9.87 - Visual Studio 2022 support https://github.com/AmpScm/AnkhSVN/rel ...
- Jmeter进行HTTPS接口压测及SSL证书验证
一.前言 使用JMeter压测HTTPS接口比较简单,只需要预先处理SSL证书认证,后面就是压测HTTP接口的通用步骤. HTTPS连接证书来验证浏览器和WEB服务器之间的连接.通过HTTP连接时,服 ...
- 『手撕Vue-CLI』自动安装依赖
开篇 经过『手撕Vue-CLI』拷贝模板,实现了自动下载并复制指定模板到目标目录.然而,虽然项目已复制,但其依赖并未自动安装,可能需要用户手动操作,这并不够智能. 正如前文所述,我们已经了解了业务需求 ...
- 高级前端开发需要知道的 25 个 JavaScript 单行代码
1. 不使用临时变量来交换变量的值 例如我们想要将 a 于 b 的值交换 let a = 1, b = 2; // 交换值 [a, b] = [b, a]; // 结果: a = 2, b = 1 这 ...
- 零基础写框架(3): Serilog.NET 中的日志使用技巧
.NET 中的日志使用技巧 Serilog Serilog 是 .NET 社区中使用最广泛的日志框架,所以笔者使用一个小节单独讲解使用方法. 示例项目在 Demo2.Console 中. 创建一个控制 ...
- 01-Python介绍、安装与入门
Python介绍 关于Python Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言. 解释型:Python将代码边解释边运行,而不是像C一样编译.类似解释型的语言还有JAVA. ...
- 【BUG记录】Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xA6' for column 'name' at row 1
大家好呀,我是summo,这次的文章标题是一个Mysql数据库的SQL错误,遇到的同学自然懂,没遇到的同学希望你永远也不要遇到. 一.错误说明 Cause: java.sql.SQLException ...
- Java实现管线拓扑关系连通性分析
管线拓扑关系的连通性分析通常涉及图论(Graph Theory)中的概念,特别是无向图(Undirected Graph)的遍历算法,如深度优先搜索(DFS, Depth-First Search)或 ...
- 【主流技术】聊一聊消息队列 RocketMQ 的基本结构与概念
目录 前言 一.初识 RocketMQ 1.1基本模型 二.基本概念 2.1Producer 2.2Consumer 2.3Topic 2.4Tag 2.5Message 2.6Broker 2.7P ...