一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于Jenkins的DevOps平台流水线运行状态维护方法与流程

2022-03-23 01:36:41 来源:中国专利 TAG:

一种基于jenkins的devops平台流水线运行状态维护方法
技术领域
1.本发明涉及软件开发技术领域,具体提供一种基于jenkins的devops平台流水线运行状态维护方法。


背景技术:

2.jenkins是一个开源软件项目,是基于java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
3.devops(英文development(开发)和operations(技术运营)的组合)是一组过程、方法与系统的统称,devops是一组最佳实践强调(开发、运维、测试)在应用和服务生命周期中的协作和沟通,强调整个组织的合作,以及交付和基础设施变更的自动化,从而实现持续集成、持续部署和持续交付。
4.在基于jenkins的devops平台对外提供服务的过程中,传统的方法是调用jenkins接口定时的获取jenkins中对应流水线的状态。这种定时刷新的方法会增加jenkins的响应时长同时增加网络负载,不能够实时的更新流水线在devops平台页面中的准确状态,使得流水线输出状态转换有延时性。其次从jenkins中定时获取的流水线状态方案只能使用jenkins已经定义的状态,不能够满足用户对流水线状态多样化展示的需求,不能根据业务需求灵活转换。


技术实现要素:

5.本发明的技术任务是针对上述存在的问题,提供一种基于jenkins的devops平台流水线运行状态维护方法。通过回调刷新和定时刷新两种刷新方案同时进行,增加流水线状态转换的灵活性和流水线状态结果的正确性,使得devops平台流水线状态正确易用。
6.为实现上述目的,本发明提供了如下技术方案:
7.一种基于jenkins的devops平台流水线运行状态维护方法,所述方法通过回调刷新和定时刷新两种刷新方案同时进行,增加流水线状态转换的灵活性和流水线状态结果的正确性,使devops平台流水线状态正确易用。
8.所述方法的实现包括内容如下:
9.定义状态转换机;制定jenkinsfile文件回调devops平台接口方案;定时任务刷新状态过程;状态检查修复过程。
10.所述定义状态转换机的过程包括:
11.(1)根据devops平台实际业务需求,划分流水线状态;
12.(2)使用字典将自定义的流水线状态和jenkins平台流水线原生状态基于业务需求做一对一或者一对多的对应;
13.(3)定义状态转换的触发器触发条件;
14.(4)定义一种状态转换为下一种状态的触发规则。
15.所述jenkinsfile文件回调devops平台接口方案包括内容如下:
16.(1)jenkinsfile脚本使用声明式流水线的语法方式构建脚本执行的业务逻辑,并将每一个任务放入stage模块当中;
17.(2)在所构建的声明式流水线脚本的每个stage模块的开始,添加jenkins平台回调devops平台的回调接口api、status和start,返回stage模块中任务执行结果success或者failed;
18.(3)在所述声明式流水线脚本的每个stage模块的结束,添加jenkins平台回调devops平台的回调接口api、status和start,返回stage中任务执行结果success或者failed;
19.(4)devops平台接收jenkins平台发送消息,将消息结果依据状态转换机的定义转换为业务过程定义状态,并将状态结果存入数据库。
20.所述定时状态刷新过程包括内容如下:
21.(1)开启缓存池,缓存池中存放处于运行中的流水线id;
22.(2)开启任务队列,任务队列从缓存池中获取任务;
23.(3)开启线程池,线程池从任务队列中取任务执行;
24.(4)从数据库中取出正在运行中的流水线,将流水线的id放入缓存池中;
25.(5)若任务队列中的任务数少于所述任务队列容量,从缓存池中取出数据放入任务队列中;
26.(6)线程池中若存在空闲的线程从任务队列中获取一条任务执行;
27.(7)每条线程调用jenkins平台接口,获取对应流水线的当前状态。
28.所述缓存池,容量为500;
29.所述任务队列容量为200;
30.所述线程池容量为100;
31.所述线程池从所述任务队列中取任务执行,最大并发量为线程池容量100;
32.若任务队列中的任务数少于200,从缓存池中取出数据放入任务队列中。
33.所述水线状态的维护和修正的过程包括内容如下:
34.(1)将定时回调接口的jenkins任务状态和jenkinsfile回调得到的jenkins流水线的状态进行比较;
35.(2)当定时任务获取的流水线的状态和jenkinsfile回调得到的状态相同,则跳过不做任何处理;
36.(3)当定时任务获取的流水线的状态和jenkinsfile回调得到的状态不相同,则使用定时任务获取的流水线状态覆盖jenkinsfile回调得到的流水线状态;
37.(4)将修正后的流水线状态信息插入到数据库中。
38.所述流水线状态的划分包括:unbunid、in_progress、error、success、retry、wait_for_deployment、timeout、not_executed、paused_pending_input、aborted、failed、nil等多个状态。
39.所述触发器触发条件包括:start、failed、success、inmanual、inretry、accept、refuse、reset、stop、timeout。
40.所述触发规则包括:
41.nil状态在start的触发下转换为in_progress状态;
42.failed状态在start的触发下转换为in_progress状态;
43.in_progress状态在stop的触发下转换为in_progress状态;
44.paused_pending_input状态在accept的触发下转换为in_progress状态;
45.wait_for_deployment状态在timeout的触发下转换为timeout状态;
46.error状态在reset的触发下转换为unbunid状态;
47.in_progress状态在accept的触发下转换为success状态。
48.与现有技术相比,本发明一种基于jenkins的devops平台流水线运行状态维护方法具有以下突出的有益效果:
49.本发明通过自研devops平台和jenkins进行集成对接,获取实时的jenkins状态,通过流水线状态维护方法对jenkins原生流水线状态进行转换,满足devops平台对外状态显示需求。其中流水线状态维护方法通过回调刷新和定时刷新两种方案同时进行的方式,回调刷新方式保证了状态返回的灵活性、及时性和多样性,可以更加及时的更新运行中流水线的状态。定时刷新可以将结果和回调刷新结果相互比对验证,防止devops平台和jenkins启停更新时候产生的流水线状态错误,不仅维护了流水线状态转换的正确性,同时还为devops平台和jenkins独立升级更新提供了状态转换的一致性保证。
附图说明
50.图1是本发明基于jenkins的devops平台流水线运行状态维护方法流程图;
51.图2是本发明状态转换机状态转换过程示意图;
52.图3是本发明依靠jenkinsfile实现状态实时发送流程;
53.图4是本发明流水线运行状态修正流程图。
具体实施方式
54.下面将结合附图和实施例,对本发明作进一步详细说明。
55.一种基于容器技术实现模拟电网管理的方法,所述方法的实现包括:
56.一种基于jenkins的devops平台流水线运行状态维护方法,通过回调刷新和定时刷新两种刷新方案同时进行,增加流水线状态转换的灵活性和流水线状态结果的正确性,其中实现内容包含:定义状态转换机;制定jenkinsfile文件回调devops平台接口方案;定时任务刷新状态过程;状态检查修复过程。如图1所示。
57.具体包括技术方案如下:
58.1.定义状态转换机
59.(1)根据devops平台实际业务需求将流水线状态划分为unbunid、in_progress、error、success、retry、wait_for_deployment、timeout、not_executed、paused_pending_input、aborted、failed、nil等多个状态;
60.(2)使用字典将自定义的流水线状态和jenkins平台流水线原生状态基于业务需求做一对一或者一对多的对应;
61.(3)定义状态转换的触发器触发条件为start、failed、success、inmanual、inretry、accept、refuse、reset、stop、timeout;
62.(4)定义一种状态转换为下一种状态的触发规则,nil状态在start的触发下转换
为in_progress状态、failed状态在start的触发下转换为in_progress状态、in_progress状态在stop的触发下转换为in_progress状态、paused_pending_input状态在accept的触发下转换为in_progress状态、wait_for_deployment状态在timeout的触发下转换为timeout状态、error状态在reset的触发下转换为unbunid状态、in_progress状态在accept的触发下转换为success状态,如附图2所示。
63.2.制定jenkinsfile文件回调devops平台接口方案
64.(1)jenkinsfile脚本使用声明式流水线的语法方式构建脚本执行的业务逻辑。将每一个任务放入stage当中;
65.(2)在声明式流水线脚本的每个stage模块的开始添加jenkins平台回调devops平台的回调接口/api/status/start,返回stage中任务执行结果success或者failed;
66.(3)在声明式流水线脚本的每个stage模块的结束添加jenkins平台回调devops平台的回调接口/api/status/start,返回stage中任务执行结果success或者failed;
67.(4)devops平台接收jenkins平台发送消息,将消息结果依据状态转换机的定义转换为业务过程定义状态,并将状态结果存入数据库。如附图3所示。
68.3.定时任务刷新状态过程
69.(1)开启缓存池,缓存池中存放处于运行中的流水线id,容量为500;
70.(2)开启任务队列,任务队列从缓存池中获取任务,任务队列容量为200;
71.(3)开启线程池,线程池容量为100,线程池从任务队列中取任务执行,最大并发量为线程池容量100;
72.(4)从数据库中取出正在运行中的流水线,将流水线的id放入缓存池中;
73.(5)若任务队列中的任务数少于200,从缓存池中取出数据放入任务队列中;
74.(6)线程池中若存在空闲的线程从任务队列中获取一条任务执行;
75.(7)每条线程调用jenkins平台接口,获取对应流水线的当前状态。
76.4.流水线状态检查修复过程
77.(1)定时回调接口的jenkins任务状态和jenkinsfile回调得到的jenkins流水线的状态进行比较;
78.(2)当定时任务获取的流水线的状态和jenkinsfile回调得到的状态相同,则跳过不做任何处理;
79.(3)当定时任务获取的流水线的状态和jenkinsfile回调得到的状态不相同,则使用定时任务获取的流水线状态覆盖jenkinsfile回调得到的流水线状态;
80.(4)将修正后的流水线状态信息插入到数据库中。如图4所示。
81.以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献