CN112148462A - 基于Jenkins的CICD流程的处理方法 - Google Patents
基于Jenkins的CICD流程的处理方法 Download PDFInfo
- Publication number
- CN112148462A CN112148462A CN202011124838.3A CN202011124838A CN112148462A CN 112148462 A CN112148462 A CN 112148462A CN 202011124838 A CN202011124838 A CN 202011124838A CN 112148462 A CN112148462 A CN 112148462A
- Authority
- CN
- China
- Prior art keywords
- node
- jenkins
- task
- scheduling
- cicd
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种基于Jenkins的CICD流程的处理方法,包括:S1)建立Jenkins资源池集中监控管理所有的Master节点服务器,实时反馈节点的性能状态;S2)建立统一的流程服务调度中心,基于Master节点的实时状态实施任务调度;S3)在资源池中,将一部分Master节点作为可调度任务节点,剩余部分作为备机节点;如果监控发现某调度节点宕机,则发出通知信息,并等待接收备机切换指令;S4)发生切换动作通知流程服务调度中心取消对该节点的任务调度直至其恢复正常运行。本发明能够解决Jenkins Master资源浪费的问题,在自动化运维CICD流程中保证多任务情况下的高并发性和高可用性。
Description
技术领域
本发明涉及一种高并发流程处理方法,尤其涉及一种基于Jenkins的CICD流程的处理方法。
背景技术
Jenkins本身用java语言开发的是一个开源的Web平台,用于支持软件/测试项目的持续集成、持续部署的工具,具备高扩展性,通常与版本管理工具(SCM)、构建工具结合使用。
目前国内外软件开发测试行业,大部分都直接采用或者基于Jenkins来组建软件项目的CICD(持续集成和持续交付)流程方案。
因为Jenkins具备分布式特性,能够让多台计算机一起构建/测试,所以现有的技术方案技术基本上都是利用此特性来实现大规模执行JOB,从而提高CICD流程效率。
如图1所示,这是一种常见的Jenkins Master-Slave的部署方式,Job统一在Master上创建,由Master通过管理Slave节点,并分发Job任务到各个节点上执行,从而提供并发任务数;这种方式可以通过不断添加Slave节点的方式来提高执行能力和总的任务执行效率。在实际生产环境中,用户确实可以通过增加机器节点的方式来实现高并发,而高可用也可以通过增加LVS+NGINX负载均衡,部署多个Master节点的方式来有效实现,
虽然通过Jenkins的Master-Slave方式和LVS+NGINX分发方式可以相当程度解决自动化运维CICD流程高并发高可用的问题,但这种方案存在下述弊端:
1、单Master实例承载流水线任务数量有限,多任务请求情况下易发生资源抢占,导致性能越来越差,构建速度慢。
2、多Master实例情况下,分发方式没有考虑Jenkins服务节点的任务情况和性能情况,容易导致资源浪费。
发明内容
本发明所要解决的技术问题是提供一种基于Jenkins的CICD流程的处理方法,能够解决Jenkins Master资源浪费的问题,在自动化运维CICD流程中保证多任务情况下的高并发性和高可用性。
本发明为解决上述技术问题而采用的技术方案是提供一种基于Jenkins的CICD流程的处理方法,包括如下步骤:S1)建立统一的Jenkins资源池,集中监控管理所有的Jenkins Master节点服务器,实时反馈节点的性能状态,并为后面任务调度服务提供信息参考;S2)建立统一的流程服务调度中心,基于Master节点的实时状态实施任务调度;S3)在Jenkins资源池中,将一部分Master节点作为可调度任务节点,剩余部分作为备机节点;如果监控发现某调度节点宕机,则发出通知信息,并等待接收备机切换指令;S4)如果发生切换动作,则立即通知流程服务调度中心取消对该节点的任务调度,避免发生无效的任务调度和执行;在调度节点恢复正常运行后,通知进行备机取消操作,同时再通知流程服务调度中心恢复调度服务。
上述的基于Jenkins的CICD流程的处理方法,其中,所有Jenkins Master节点服务器通过NGINX建立Jenkins访问网关,提供唯一的Jenkins Master外部用户访问节点。
上述的基于Jenkins的CICD流程的处理方法,其中,对于每一次CICD流程任务,首先根据流程服务调度中心存储的任务调度表数据判定是新建任务,还是已有相同项目下的任务;如果属于后者,则立即查询相同项目下的任务分配的节点,该新建任务请求直接使用已分配的节点进行调度分配,使得基于相同项目下任务分配在同一Jenkins Master节点。
上述的基于Jenkins的CICD流程的处理方法,其中,对于新建任务,所述流程服务调度中心根据任务调度表数据确定各可用节点任务数分配情况,获取最少任务数量的可用节点作为待分配节点;如果待分配节点唯一,则直接取该可用节点进行任务调度。
上述的基于Jenkins的CICD流程的处理方法,其中,如果待分配节点不唯一,设定一个时间周期计算指标,所述流程服务调度中心获取该时间周期内分配给该节点上的所有CICD流程任务完整执行时间,以此判定各Jenkins Master节点的繁忙程度,并以Master节点繁忙程度最低的节点作为最佳分配节点。
上述的基于Jenkins的CICD流程的处理方法,其中,如果待分配节点不唯一,则获取所有最少任务数的节点列表进行随机分配。
本发明对比现有技术有如下的有益效果:本发明提供的基于Jenkins的CICD流程的处理方法,可以高效监管和调度使用Jenkins Master节点,解决高并发下的CICD任务流程问题,在实现高可用情况下解决节点资源浪费问题。
附图说明
图1为现有基于Jenkins的CICD流程的处理系统架构示意图;
图2为本发明基于Jenkins的CICD流程的处理系统架构示意图;
图3为本发明基于Jenkins的CICD流程的处理过程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
图2为本发明基于Jenkins的CICD流程的处理系统架构示意图;图3为本发明基于Jenkins的CICD流程的处理过程示意图。
请参见图2和图3,本发明提供的基于Jenkins的CICD流程的处理方法,包括如下步骤:
S1、建立统一的Jenkins资源池管理机制,通过监控器集中监管所有的JenkinsMaster节点服务器,实时反馈节点的性能状态,为后面任务调度服务提供信息参考。
S2、建立统一的流程服务调度中心,基于Master的实时状态实施任务调度。同时,可通过NGINX建立Jenkins访问网关,保证唯一的Jenkins Master外部用户访问节点,检查任务信息。
S3、在Jenkins的资源池管理中,大部分Master节点作为可调度任务节点,小部分将作为备机节点。如果监控器发现某调度节点宕机,将通过一定机制和策略,如邮件或者短信通知管理者,由管理者决定是否实施备机切换。
S4、如果发生切换动作,将立即通知调度服务中心取消对该节点的任务调度,避免发生无效的任务调度和执行,在调度节点恢复正常运行后,通知进行备机取消操作,同时再通知调度中心回复调度服务,保证过渡顺利,从而保证节点的高可用。
每一次CICD流程任务首先根据服务中心存储的任务调度表数据判定和分解为是新建任务,还是已有相同项目下的任务。如果属于后者,则立即查询相同项目下的任务分配的节点,该新建任务请求则直接使用该节点进行调度分配。这是基于相同项目下任务分配在同一Jenkins Master节点的原则上进行的调度。
对于一个项目完全首次创建新的CICD任务,首先在基于可用Jenkins节点状态下,根据任务调度表数据确定各可用节点JOB任务数分配情况,获取最少任务数量的节点,如果该节点唯一,则直接取该节点进行任务调度,如果该节点不唯一,则获取所有最少任务数的节点列表进行下一步计算。
本发明在获取最少任务执行时间的节点时,如果该节点唯一,则直接取该节点进行任务调度,如果不唯一,则获取最少任务时间的节点列表,以此节点列表范围进行随机分配。或者,本发明还进一步分析最少任务数节点列表的各个节点的任务执行情况,自定义一个时间周期计算指标,例如季、月、周等单位,在这一时间周期范围内在分配在该节点上的所有CICD流程任务完整执行时间,以此判定各Jenkins Master节点的繁忙程度,并以Master节点繁忙程度获取最佳分配节点。
按上述算法获取最佳任务调度节点,确保了各个节点合理均衡分配了任务的创建,结合Master本身对Slave节点调度,最大化增加了高并发任务情况下各Master节点的承载能力和处理能力。
本发明的任务调度信息将集中存储到调度中心的调度表,每次任务执行都将从该调度表获取该任务的调度节点信息,结合实时的节点健康状态判断是否执行该任务,提前避免无效的任务调度和执行。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
Claims (6)
1.一种基于Jenkins的CICD流程的处理方法,其特征在于,包括如下步骤:
S1)建立统一的Jenkins资源池,集中监控管理所有的Jenkins Master节点服务器,实时反馈节点的性能状态,并为后面任务调度服务提供信息参考;
S2)建立统一的流程服务调度中心,基于Master节点的实时状态实施任务调度;
S3)在Jenkins资源池中,将一部分Master节点作为可调度任务节点,剩余部分作为备机节点;如果监控发现某调度节点宕机,则发出通知信息,并等待接收备机切换指令;
S4)如果发生切换动作,则立即通知流程服务调度中心取消对该节点的任务调度,避免发生无效的任务调度和执行;在调度节点恢复正常运行后,通知进行备机取消操作,同时再通知流程服务调度中心恢复调度服务。
2.如权利要求1所述的基于Jenkins的CICD流程的处理方法,其特征在于,所有JenkinsMaster节点服务器通过NGINX建立Jenkins访问网关,提供唯一的Jenkins Master外部用户访问节点。
3.如权利要求1所述的基于Jenkins的CICD流程的处理方法,其特征在于,对于每一次CICD流程任务,首先根据流程服务调度中心存储的任务调度表数据判定是新建任务,还是已有相同项目下的任务;如果属于后者,则立即查询相同项目下的任务分配的节点,该新建任务请求直接使用已分配的节点进行调度分配,使得基于相同项目下任务分配在同一Jenkins Master节点。
4.如权利要求3所述的基于Jenkins的CICD流程的处理方法,其特征在于,对于新建任务,所述流程服务调度中心根据任务调度表数据确定各可用节点任务数分配情况,获取最少任务数量的可用节点作为待分配节点;如果待分配节点唯一,则直接取该可用节点进行任务调度。
5.如权利要求4所述的基于Jenkins的CICD流程的处理方法,其特征在于,如果待分配节点不唯一,设定一个时间周期计算指标,所述流程服务调度中心获取该时间周期内分配给该节点上的所有CICD流程任务完整执行时间,以此判定各Jenkins Master节点的繁忙程度,并以Master节点繁忙程度最低的节点作为最佳分配节点。
6.如权利要求4所述的基于Jenkins的CICD流程的处理方法,其特征在于,如果待分配节点不唯一,则获取所有最少任务数的节点列表进行随机分配。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011124838.3A CN112148462B (zh) | 2020-10-20 | 2020-10-20 | 基于Jenkins的CICD流程的处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011124838.3A CN112148462B (zh) | 2020-10-20 | 2020-10-20 | 基于Jenkins的CICD流程的处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112148462A true CN112148462A (zh) | 2020-12-29 |
CN112148462B CN112148462B (zh) | 2023-03-28 |
Family
ID=73954084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011124838.3A Active CN112148462B (zh) | 2020-10-20 | 2020-10-20 | 基于Jenkins的CICD流程的处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112148462B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626463A (zh) * | 2021-07-31 | 2021-11-09 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 高并发访问下的Web性能优化方法 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101957780A (zh) * | 2010-08-17 | 2011-01-26 | 中国电子科技集团公司第二十八研究所 | 一种基于资源状态信息的网格任务调度处理器及方法 |
CN102096602A (zh) * | 2009-12-15 | 2011-06-15 | 中国移动通信集团公司 | 一种任务调度方法及其系统和设备 |
CN102843418A (zh) * | 2012-07-03 | 2012-12-26 | 广东电网公司信息中心 | 一种资源调度系统 |
WO2015139374A1 (zh) * | 2014-03-18 | 2015-09-24 | 成都盛思睿信息技术有限公司 | 一种云计算平台下的虚拟机分布式任务调度方法 |
CN105703940A (zh) * | 2015-12-10 | 2016-06-22 | 中国电力科学研究院 | 一种面向多级调度分布式并行计算的监控系统及监控方法 |
WO2017045424A1 (zh) * | 2015-09-18 | 2017-03-23 | 乐视控股(北京)有限公司 | 一种应用程序部署系统及部署方法 |
US20170329643A1 (en) * | 2014-11-25 | 2017-11-16 | Institute Of Acoustics, Chinese Academy Of Sciences | Distributed node intra-group task scheduling method and system |
CN107608710A (zh) * | 2017-08-31 | 2018-01-19 | 华为技术有限公司 | 基于Jenkins工具的软件项目构建任务配置方法及装置 |
WO2018116460A1 (ja) * | 2016-12-22 | 2018-06-28 | 株式会社日立製作所 | 継続的インテグレーションシステム及びリソース制御方法 |
CN109117170A (zh) * | 2017-06-22 | 2019-01-01 | 中兴通讯股份有限公司 | 一种运行环境搭建方法及装置、代码合入方法及系统 |
CN109445802A (zh) * | 2018-09-25 | 2019-03-08 | 众安信息技术服务有限公司 | 基于容器的私有化Paas平台及其发布应用的方法 |
US20200177478A1 (en) * | 2018-12-04 | 2020-06-04 | Bank Of America Corporation | Intelligent application deployment to distributed ledger technology nodes |
CN111475260A (zh) * | 2020-04-10 | 2020-07-31 | 杭州趣维科技有限公司 | 一种基于jenkins和kubernetes平台的可弹性CICD方法 |
CN111610980A (zh) * | 2020-05-21 | 2020-09-01 | 四川虹美智能科技有限公司 | 部署系统及方法 |
WO2020207264A1 (zh) * | 2019-04-08 | 2020-10-15 | 阿里巴巴集团控股有限公司 | 网络系统、服务提供与资源调度方法、设备及存储介质 |
-
2020
- 2020-10-20 CN CN202011124838.3A patent/CN112148462B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096602A (zh) * | 2009-12-15 | 2011-06-15 | 中国移动通信集团公司 | 一种任务调度方法及其系统和设备 |
CN101957780A (zh) * | 2010-08-17 | 2011-01-26 | 中国电子科技集团公司第二十八研究所 | 一种基于资源状态信息的网格任务调度处理器及方法 |
CN102843418A (zh) * | 2012-07-03 | 2012-12-26 | 广东电网公司信息中心 | 一种资源调度系统 |
WO2015139374A1 (zh) * | 2014-03-18 | 2015-09-24 | 成都盛思睿信息技术有限公司 | 一种云计算平台下的虚拟机分布式任务调度方法 |
US20170329643A1 (en) * | 2014-11-25 | 2017-11-16 | Institute Of Acoustics, Chinese Academy Of Sciences | Distributed node intra-group task scheduling method and system |
WO2017045424A1 (zh) * | 2015-09-18 | 2017-03-23 | 乐视控股(北京)有限公司 | 一种应用程序部署系统及部署方法 |
CN105703940A (zh) * | 2015-12-10 | 2016-06-22 | 中国电力科学研究院 | 一种面向多级调度分布式并行计算的监控系统及监控方法 |
WO2018116460A1 (ja) * | 2016-12-22 | 2018-06-28 | 株式会社日立製作所 | 継続的インテグレーションシステム及びリソース制御方法 |
CN109117170A (zh) * | 2017-06-22 | 2019-01-01 | 中兴通讯股份有限公司 | 一种运行环境搭建方法及装置、代码合入方法及系统 |
CN107608710A (zh) * | 2017-08-31 | 2018-01-19 | 华为技术有限公司 | 基于Jenkins工具的软件项目构建任务配置方法及装置 |
CN109445802A (zh) * | 2018-09-25 | 2019-03-08 | 众安信息技术服务有限公司 | 基于容器的私有化Paas平台及其发布应用的方法 |
US20200177478A1 (en) * | 2018-12-04 | 2020-06-04 | Bank Of America Corporation | Intelligent application deployment to distributed ledger technology nodes |
WO2020207264A1 (zh) * | 2019-04-08 | 2020-10-15 | 阿里巴巴集团控股有限公司 | 网络系统、服务提供与资源调度方法、设备及存储介质 |
CN111475260A (zh) * | 2020-04-10 | 2020-07-31 | 杭州趣维科技有限公司 | 一种基于jenkins和kubernetes平台的可弹性CICD方法 |
CN111610980A (zh) * | 2020-05-21 | 2020-09-01 | 四川虹美智能科技有限公司 | 部署系统及方法 |
Non-Patent Citations (5)
Title |
---|
VALENTINA ARMENISE: "Continuous delivery with Jenkins: Jenkins solutions to implement continuous delivery", 《RELENG "15: PROCEEDINGS OF THE THIRD INTERNATIONAL WORKSHOP ON RELEASE ENGINEERING》 * |
丁晶晶等: "一种基于Spark在线Web服务的高效低延迟调度资源算法", 《计算机工程与科学》 * |
刘博 等: "一种基于Jenkins的嵌入式软件持续集成方法", 《轨道机车车辆》 * |
王甫棣等: "基于SOA的任务调度框架设计与实现", 《气象科技》 * |
许丞等: "Hadoop云平台的一种新的任务调度和监控机制", 《计算机科学》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626463A (zh) * | 2021-07-31 | 2021-11-09 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 高并发访问下的Web性能优化方法 |
CN113626463B (zh) * | 2021-07-31 | 2024-03-15 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 高并发访问下的Web性能优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112148462B (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109857558A (zh) | 一种数据流处理方法及系统 | |
CN110351384B (zh) | 大数据平台资源管理方法、装置、设备及可读存储介质 | |
CN101702721B (zh) | 一种多集群系统的可重组方法 | |
CN109343939B (zh) | 一种分布式集群及并行计算任务调度方法 | |
CN101084680B (zh) | 在电信服务和/或网络管理平台中管理资源的方法、相应平台及其计算机程序产品 | |
CN108632365A (zh) | 服务资源调整方法、相关装置和设备 | |
JP2008527514A5 (zh) | ||
CN113608871A (zh) | 业务处理方法及装置 | |
CN105159769A (zh) | 一种适用于计算能力异构集群的分布式作业调度方法 | |
CN111064672A (zh) | 云平台通信系统、选举方法及资源调度管理方法 | |
US10168751B2 (en) | Method of executing an application on a distributed computer system, a resource manager and a distributed computer system | |
CN1954295A (zh) | 用于控制分布式处理环境中作业执行的计算机系统、方法及程序 | |
Pautasso et al. | Autonomic resource provisioning for software business processes | |
CN112148462B (zh) | 基于Jenkins的CICD流程的处理方法 | |
CN111553545B (zh) | 一种优化批量任务调度依赖的方法 | |
CN117435324A (zh) | 基于容器化的任务调度方法 | |
CN112948088A (zh) | 一种云计算平台中的云工作流智能管理与调度系统 | |
CN117439885A (zh) | 一种基于服务网格的Kubernetes容器调度方法及系统 | |
CN117251269A (zh) | Jenkins资源管理方法、装置、设备及存储介质 | |
CN117033016A (zh) | 流程调度系统、方法、电子设备及存储介质 | |
CN110162381A (zh) | 一种容器内代理执行方法 | |
CN109634749B (zh) | 一种分布式统一调度方法及设备 | |
Coates et al. | A generic coordination approach applied to a manufacturing environment | |
CN115237548A (zh) | 多机协作的设备调度方法、装置、电子设备以及存储介质 | |
CN113515356A (zh) | 一种轻量级分布式资源管理与任务调度器及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |