System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 快速伸缩Jenkins Slave节点的方法及系统技术方案_技高网

快速伸缩Jenkins Slave节点的方法及系统技术方案

技术编号:40832375 阅读:3 留言:0更新日期:2024-04-01 14:55
本发明专利技术公开了快速伸缩Jenkins Slave节点的方法及系统,该方法包括:确定Jenkins的Node节点配置所需参数,并创建一个Shell脚本,可基于JenkinsAPI创建Jenkins的Node节点配置;根据所述Shell脚本,创建Shell镜像;基于Jenkins提供的代理agent.jar,创建Agent镜像;利用Kubernetes的编排文件方式,首先启动Shell镜像,启动后执行镜像中Shell脚本并完成Jenkins的Node节点配置创建;然后启动Agent镜像,计算单元Pod作为Slave节点自动连接到Jenkins。本发明专利技术实现了SlavePod的自动化快速动态伸缩。

【技术实现步骤摘要】

本专利技术涉及容器和软件开发领域,具体涉及快速伸缩jenkins slave节点的方法及系统。


技术介绍

1、现有技术下,jenkins(一款开源ci&cd软件,用于自动化各种任务,包括构建、测试和部署软件)增加slave节点(从节点)方式可以大致分为两类:

2、第一种方案,通过配置服务器作为slave节点,步骤为:

3、a)提前准备一台服务器作为slave节点,并将服务器账号密码提前配置到jenkins的“credentials(凭据)”中;

4、b)在jenkins的节点配置页面填写slave节点的详细信息,包括名称、标签、描述、主机和凭证等信息;

5、c)配置成功后,点击“launchagent(启动代理)”,jenkins会通过ssh将agent.jar发送到服务器上并启动代理,服务器成为jenkinsslave节点。

6、第二种方案,通过jenkins的kubernetes(一种容器调度和编排软件)插件动态生成pod(在kubernetes中创建和管理的、最小的可部署的计算单元)作为slave节点,步骤为:

7、a)在插件配置中定义好kubernetes集群和pod模板,用于描述创建jenkinsslavepod节点所需的容器镜像、标签等信息;

8、b)当jenkins需要启动一个构建时,插件会根据需要创建一个新的pod,并将pod配置为slavepod节点;

9、c)构建完成后,插件会自动删除slave pod节点

10、以上第一种方案是手动在jenkins页面提前配置好slave服务器,该服务器是常驻slave节点。第二种方案是通过kubernetes插件在需要构建任务时动态创建slavepod节点,并在构建后会自动删除,该节点是一次性slave节点。

11、然而,第一种方案是基于传统的服务器实现,用户需要在jenkins页面提前配置好slave节点(从节点,是一种节点服务器)的node信息(节点配置信息)。然而,在需要快速扩容的场景下,无法快速响应。如果提前配置过多的slave节点,会导致资源利用率低下。

12、第二种方案是通过jenkins的kubernetes插件在kubernetes集群中按构建任务需要动态创建pod作为slave节点,在完成构建任务后自动销毁。这种方案的优点是资源利用率高,能够根据构建任务数量快速扩容slave节点。然而,在高并发的场景下,短时间频繁创建、销毁pod会对kubernetes集群造成高负载的影响,从而影响性能。以上方案需要增加kubernetes集群负载的前提下实现slave节点的伸缩。


技术实现思路

1、本方案旨在解决jenkinsmaster-slave架构下,无法在不增加kubernetes集群负载的前提下实现slave节点的自动化快速伸缩的问题。本专利技术目的在于提供快速伸缩jenkins slave节点的方法及系统,在不给kubernetes集群增加额外负载的情况下,实现了slavepod的自动化快速动态伸缩。

2、本专利技术通过下述技术方案实现:

3、第一方面,本专利技术提供了快速伸缩jenkins slave节点的方法,该方法包括:

4、确定jenkins的node节点配置所需参数,并创建一个shell脚本,可基于jenkinsapi创建jenkins的node节点配置;

5、根据shell脚本,创建shell镜像;

6、基于jenkins提供的代理agent.jar,创建agent镜像;

7、利用kubernetes的编排文件方式,首先以初始化容器initcontainer启动shell镜像,启动后执行镜像中shell脚本并完成jenkins的node节点配置创建;然后启动agent镜像,计算单元pod作为slave节点自动连接到jenkins。

8、进一步地,node节点配置所需参数包括slave节点名字、slave节点描述、slave节点最大并发构建数、slave节点标签名、基于tcp/ip协议的jenkinsip地址和端口。

9、进一步地,创建一个shell脚本,基于jenkinsapi创建jenkins的node节点配置,包括:

10、步骤11,创建一个shell脚本,在shell脚本里声明第一环境变量;读取第一环境变量以获得node节点配置所需参数;

11、步骤12,调用jenkinsapi创建jenkins的node节点配置。

12、进一步地,第一环境变量包括slave节点名字变量(jenkins_agent_name)、slave节点最大并发构建数变量(jenkins_slave_executors_num)、slave节点标签变量(jenkins_slave_labels)、jenkins通道变量(jenkins_tunnel)、jenkins用户变量(jenkins_user)和jenkins密码变量(jenkins_password);slave节点标签变量包括slave节点描述和slave节点标签名。

13、通过slave节点名字变量(jenkins_agent_name)对应获得slave节点名字,通过slave节点最大并发构建数变量(jenkins_slave_executors_num)对应获得slave节点最大并发构建数,通过slave节点标签变量(jenkins_slave_labels)对应获得slave节点描述和slave节点标签名,通过jenkins通道变量(jenkins_tunnel)对应获得基于tcp/ip协议的jenkinsip地址和端口,通过jenkins用户变量(jenkins_user)对应获得jenkins用户,通过jenkins密码变量(jenkins_password)对应获得jenkins密码。

14、进一步地,根据所述shell脚本,创建shell镜像,包括:

15、步骤21,在dockerfile文件中声明第二环境变量;所述第二环境变量包含slave节点名字、slave节点描述、slave节点最大并发构建数、slave节点标签名、基于tcp/ip协议的jenkinsip地址和端口;

16、步骤22,启动shell脚本;

17、步骤23,基于shell脚本和dockerfile文件,创建一个shell镜像。

18、进一步地,基于jenkins提供的代理agent.jar,创建agent镜像,包括:

19、步骤31,下载jenkins的代理agent.jar到本地;

20、步骤32,在dockerfile文件中声明第三环境变量;第三环境变量包括slave节点名字变量(jenkins_agent_name)、jenkins地址变量(je本文档来自技高网...

【技术保护点】

1.快速伸缩Jenkins Slave节点的方法,其特征在于,该方法包括:

2.根据权利要求1所述的快速伸缩Jenkins Slave节点的方法,其特征在于,所述Node节点配置所需参数包括Slave节点名字、Slave节点描述、Slave节点最大并发构建数、Slave节点标签名、基于TCP/IP协议的JenkinsIP地址和端口。

3.根据权利要求1所述的快速伸缩Jenkins Slave节点的方法,其特征在于,创建一个Shell脚本,基于JenkinsAPI创建Jenkins的Node节点配置,包括:

4.根据权利要求3所述的快速伸缩Jenkins Slave节点的方法,其特征在于,所述第一环境变量包括Slave节点名字变量、Slave节点最大并发构建数变量、Slave节点标签变量、Jenkins通道变量、Jenkins用户变量和Jenkins密码变量;所述Slave节点标签变量包括Slave节点描述和Slave节点标签名。

5.根据权利要求1所述的快速伸缩Jenkins Slave节点的方法,其特征在于,根据所述Shell脚本,创建Shell镜像,包括:

6.根据权利要求1所述的快速伸缩Jenkins Slave节点的方法,其特征在于,基于Jenkins提供的代理agent.jar,创建Agent镜像,包括:

7.根据权利要求1所述的快速伸缩Jenkins Slave节点的方法,其特征在于,利用Kubernetes的编排文件方式,首先以initContainer启动Shell镜像,启动后执行镜像中Shell脚本并完成Jenkins的Node节点配置创建;然后启动Agent镜像,计算单元Pod作为Slave节点自动连接到Jenkins,包括:

8.根据权利要求7所述的快速伸缩Jenkins Slave节点的方法,其特征在于,所述步骤44具体为:

9.快速伸缩Jenkins Slave节点的系统,其特征在于,该系统使用如权利要求1至8中任一所述的快速伸缩Jenkins Slave节点的方法;该系统包括:

10.根据权利要求9所述的快速伸缩Jenkins Slave节点的系统,其特征在于,所述Slave节点自动连接单元的执行过程为:

...

【技术特征摘要】

1.快速伸缩jenkins slave节点的方法,其特征在于,该方法包括:

2.根据权利要求1所述的快速伸缩jenkins slave节点的方法,其特征在于,所述node节点配置所需参数包括slave节点名字、slave节点描述、slave节点最大并发构建数、slave节点标签名、基于tcp/ip协议的jenkinsip地址和端口。

3.根据权利要求1所述的快速伸缩jenkins slave节点的方法,其特征在于,创建一个shell脚本,基于jenkinsapi创建jenkins的node节点配置,包括:

4.根据权利要求3所述的快速伸缩jenkins slave节点的方法,其特征在于,所述第一环境变量包括slave节点名字变量、slave节点最大并发构建数变量、slave节点标签变量、jenkins通道变量、jenkins用户变量和jenkins密码变量;所述slave节点标签变量包括slave节点描述和slave节点标签名。

5.根据权利要求1所述的快速伸缩jenkins slave节点的方法,其特征在于,根据所述she...

【专利技术属性】
技术研发人员:刘凯朱涵颖廖明乾
申请(专利权)人:四川新网银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1