Jenkins高可用的系统及方法技术方案

技术编号:27848210 阅读:17 留言:0更新日期:2021-03-30 13:04
本申请公开了一种Jenkins高可用的系统及方法,系统包括任务管理模块,用于接收用户创建的任务数据,将所述任务数据持久化到本地数据库中;任务调度模块,用于调用Jenkins的接口将所述任务数据作为输入同步创建jenkins任务到可用的Jenkins主节点上;将任务结果数据写入所述本地数据库中;jenkins管理模块,用于对jenkins主节点进行异常检查;当检查到异常的jenkins主节点后,检查异常jenkins主节点中正在执行的jenkins任务。本申请提高现有的Jenkins的高可用方案的可用性、稳定性。稳定性。稳定性。

【技术实现步骤摘要】
Jenkins高可用的系统及方法


[0001]本申请涉及软件开发
,具体而言,涉及一种Jenkins高可用的系统及方法。

技术介绍

[0002]随着互联网技术的发展,DevOps(Development和Operations的组合词,是一组过程、方法与系统的统称)的普及,越来越多的公司将CI/CD(软件的持续集成、持续交付和持续部署)引入公司的研发流程,而Jenkins(一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作)也成为了众多公司的首选,Jenkins的稳定性直接影响了CI/CD平台的构建交付效率。
[0003]Jenkins的存储模型是使用本地文件系统作为存储的,所有的任务数据配置都存储在JENKINS_HOME对应的文件目录下,即Jenkins master是有状态的,它依赖于本地文件。因此,目前Jenkins的高可用方案是基于Kubernetes(一个自动化部署,缩放,以及容器化管理应用程序的开源系统)和nfs(网络文件系统)的。具体为,在Kubernetes上部署一套Jenkins系统,并将nfs服务挂为JENKINS_HOME目录,以此来达到在Jenkins进行漂移时,数据文件不丢失,Jenkins高可用的目的。
[0004]本专利技术人在使用上述Jenkins的高可用方案时发现存在以下缺陷:
[0005]1)作为文件存储,nfs本身又是单点的,存在着nfs单点故障/数据丢失后,Jenkins完全不可用的问题;
[0006]2)由于使用nfs即网络文件系统作为文件存储,而在Jenkins任务执行过程中又存在着相当多的文件IO操作(拉取代码等),因此增加了网络IO的开销,任务的执行效率也依赖于网络状况;
[0007]3)现有的部署架构依然为单master结构,master无法动态扩容也无法集群化,当任务数和请求量增多时,Jenkins master将成为性能的瓶颈。

技术实现思路

[0008]本申请的主要目的在于提供一种Jenkins高可用的系统及方法,以提高现有的Jenkins的高可用方案的可用性、稳定性。
[0009]为了实现上述目的,根据本申请的第一方面,提供了一种Jenkins高可用的系统。
[0010]根据本申请的Jenkins高可用的系统包括:
[0011]任务管理模块,用于接收用户创建的任务数据,将所述任务数据持久化到本地数据库中;
[0012]任务调度模块,用于调用Jenkins的接口将所述任务数据作为输入同步创建jenkins任务到可用的Jenkins主节点上;将任务结果数据写入所述本地数据库中;
[0013]jenkins管理模块,用于对jenkins主节点进行异常检查;当检查到异常的jenkins主节点后,检查异常jenkins主节点中正在执行的jenkins任务。
[0014]进一步的,所述jenkins管理模块还包括:
[0015]发送单元,用于发送异常通知给所述任务调度模块;
[0016]所述任务调度模块还包括:
[0017]接收单元,用于接收jenkins管理模块发送的异常通知;
[0018]分配单元,用于为异常jenkins主节点中正在执行的jenkins任务进行可用jenkins主节点的重新分配。
[0019]进一步的,所述jenkins管理模块还包括:
[0020]计算单元,用于根据所述任务管理模块中的任务数据,计算每个jenkins主节点的任务负载;
[0021]扩缩容单元,用于根据任务负载的计算结果,通过Kubernetes的接口对jenkins集群进行动态扩缩容,动态扩缩容包括主从节点的扩缩,其中,jenkins集群中的主从节点都容器化部署在Kubernetes上。
[0022]进一步的,所述任务管理模块还包括:
[0023]删除单元,用于对所述任务数据进行删除;
[0024]查看单元,用于查看执行中的任务数据及执行完成的任务结果。
[0025]进一步的,所述任务调度模块还包括:
[0026]任务清理单元,用于对执行完成的jenkins任务的清理。
[0027]为了实现上述目的,根据本申请的第二方面,还提供了一种Jenkins高可用的方法。
[0028]所述方法包括:
[0029]接收到用户创建的任务数据后,将其持久化到本地数据库;并调用Jenkins的接口将所述任务数据作为输入同步创建jenkins任务到可用的Jenkins主节点上;
[0030]对jenkins主节点进行异常检查,并将异常的jenkins主节点上正在执行的jenkins任务重新创建到可用jenkins主节点;
[0031]在jenkins任务完成后将执行的结果存储到所述本地数据库。
[0032]进一步的,所述方法还包括:
[0033]根据用户创建的任务计算每个jenkins主节点的任务负载;
[0034]根据任务负载的计算结果,通过Kubernetes的接口对jenkins集群进行动态扩缩容,动态扩缩容包括主从节点的扩缩,其中,jenkins集群中的主从节点都容器化部署在Kubernetes上。
[0035]进一步的,所述在jenkins任务完成后将执行的结果存储到所述本地数据库包括:
[0036]jenkins任务完成后,接收到jenkins发送的任务完成通知;
[0037]根据任务完成通知,从jenkins主节点获取执行的结果存储到所述本地数据库。
[0038]进一步的,所述方法还包括:
[0039]接收查看请求,所述查看请求包括任务标识;
[0040]根据所述任务标识返回正在执行中的任务数据和/或执行完成的任务结果。
[0041]为了实现上述目的,根据本申请的第三方面,提供了一种Jenkins高可用的系统,包括安装上述第一方面中任一项所述系统的第一计算机,安装Jenkins的第二计算机:
[0042]所述第一计算机,用于执行上述第二方面中任一项所述的Jenkins高可用的方法;
[0043]所述第二计算机,用于接收所述第一计算机创建的jenkins任务,独立执行任务或者分配给jenkins从节点执行任务;任务执行完成后生成任务结果,并通知所述第一计算机。
[0044]为了实现上述目的,根据本申请的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行上述第二方面中任意一项所述的Jenkins高可用的方法。
[0045]在本申请实施例中,Jenkins高可用的系统及方法中,接收到用户创建的任务数据后,将其持久化到本地数据库;并调用Jenkins的接口将所述任务数据作为输入同步创建jenkins任务到可用的Jenkins主节点上;对jenkins主节点进行异常检查,并将异常的jenki本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Jenkins高可用的系统,其特征在于,所述系统包括:任务管理模块,用于接收用户创建的任务数据,将所述任务数据持久化到本地数据库中;任务调度模块,用于调用Jenkins的接口将所述任务数据作为输入同步创建jenkins任务到可用的Jenkins主节点上;将任务结果数据写入所述本地数据库中;jenkins管理模块,用于对jenkins主节点进行异常检查;当检查到异常的jenkins主节点后,检查异常jenkins主节点中正在执行的jenkins任务。2.根据权利要求1所述的Jenkins高可用的系统,其特征在于,所述jenkins管理模块还包括:发送单元,用于发送异常通知给所述任务调度模块;所述任务调度模块还包括:接收单元,用于接收jenkins管理模块发送的异常通知;分配单元,用于为异常jenkins主节点中正在执行的jenkins任务进行可用jenkins主节点的重新分配。3.根据权利要求1所述的Jenkins高可用的系统,其特征在于,所述jenkins管理模块还包括:计算单元,用于根据所述任务管理模块中的任务数据,计算每个jenkins主节点的任务负载;扩缩容单元,用于根据任务负载的计算结果,通过Kubernetes的接口对jenkins集群进行动态扩缩容,动态扩缩容包括主从节点的扩缩,其中,jenkins集群中的主从节点都容器化部署在Kubernetes上。4.根据权利要求1所述的Jenkins高可用的系统,其特征在于,所述任务管理模块还包括:删除单元,用于对所述任务数据进行删除;查看单元,用于查看执行中的任务数据及执行完成的任务结果。5.根据权利要求1所述的Jenkins高可用的系统,其特征在于,所述任务调度模块还包括:任务清理单元,用于对执行完成的jenkins任务的清理。6.一种Jenkins高可用的方法,其特征在于...

【专利技术属性】
技术研发人员:谢玮玮潘晓春
申请(专利权)人:同盾控股有限公司
类型:发明
国别省市:

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

1