一种同步Jenkins流水线运行状态的方法、系统及装置制造方法及图纸

技术编号:36433666 阅读:16 留言:0更新日期:2023-01-20 22:46
本发明专利技术公开了一种同步Jenkins流水线运行状态的方法、系统及装置,属于软件开发技术领域,该方法的实现包括通过插件接口获取Jenkins流水线运行状态并分类存储,提供分类获取流水线状态接口,前端初始化数据及定时刷新状态;通过缓存队列执行调用Jenkins插件接口来获取流水线状态,并将运行状态和静止状态的流水线分开存储,采用键值数据库缓存运行状态数据;提供分类获取流水线状态接口,包括返回全量数据的接口,返回运行状态数据的接口,修改流水线运行状态的接口;前端初始化数据及定时刷新状态,包括初始化渲染页面,定时刷新运行状态变化。本发明专利技术使同步Jenkins流水线状态更准确,并大幅降低数据库I/O占用。并大幅降低数据库I/O占用。并大幅降低数据库I/O占用。

【技术实现步骤摘要】
一种同步Jenkins流水线运行状态的方法、系统及装置


[0001]本专利技术涉及软件开发
,具体地说是一种同步Jenkins流水线运行状态的方法、系统及装置。

技术介绍

[0002]Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins的主要特点包括:持续交付管道的可视化,通过直观和可视化的过程来创建管道,在需要干预或出现问题时精确定位。
[0003]在一些借助于Jenkins对外提供服务的平台中,通常需要实时获取Jenkins Pipeline的运行状态,以便用户及时了解进展和发现问题,通常的方式是通过调用Jenkins接口或在Jenkins中回调平台接口来记录信息,这两种方式都会增加应用的负载压力从而造成请求时长增加,同时回传的数据需要在数据库进行存储以供查询,当数据量增大或流水线状态频繁变化时,数据库的读写也更频繁,造成数据库I/O异常,从而影响业务的正常查询。

技术实现思路

[0004]本专利技术的技术任务是针对以上不足之处,提供一种同步Jenkins流水线运行状态的方法、系统及装置,能够使得同步Jenkins流水线状态更为准确,并大幅降低数据库I/O占用。
[0005]本专利技术解决其技术问题所采用的技术方案是:
[0006]一种同步Jenkins流水线运行状态的方法,该方法的实现包括:通过插件接口获取Jenkins流水线运行状态并分类存储,提供分类获取流水线状态接口,前端初始化数据及定时刷新状态;
[0007]通过缓存队列执行调用Jenkins插件接口来获取流水线状态,并将运行状态和静止状态的流水线分开存储,采用键值数据库缓存运行状态数据;
[0008]所述提供分类获取流水线状态接口,包括返回全量数据的接口,返回运行状态数据的接口,修改流水线运行状态的接口;
[0009]所述前端初始化数据及定时刷新状态,包括初始化渲染页面,定时刷新运行状态变化。
[0010]本方法通过缓存队列执行调用Jenkins插件接口来获取流水线状态,减少应用负载压力,并将运行状态和静止状态的流水线分开存储,采用redis等类型的键值数据库缓存运行状态数据以解决数据频繁刷新造成的数据库压力,从而使业务系统能及时同步流水线状态并平稳运行。
[0011]优选的,所述通过插件接口获取Jenkins流水线运行状态并分类存储的过程包括:
[0012]1)、开启pipeline缓存,从数据库中取出正在运行中的流水线,将流水线的元数据
放入pipeline缓存中;
[0013]2)、当触发执行流水线时,将流水线的元数据存储于pipeline缓存中,定时循环读取pipeline缓存获取元数据;
[0014]3)、根据元数据中pipelineid和buildNum调用Jenkins插件接口查询stage状态,此处若产生异常,则停止处理,等待下次读取到该数据继续查询;
[0015]4)、判断接口返回的流水线状态是否为运行状态;
[0016]5)、如果此时状态为运行结束状态,说明该条流水线本次运行已经结束,即接口返回的数据为本次最终运行结果,移除pipeline缓存中该元数据以防止再次查询,解析接口回值,更新mysql中节点运行状态数据和流水线运行结果数据,更新redis中运行数据并设置剩余过期时间,单次流程处理结束;
[0017]6)、如果状态为运行中,说明流水线状态还会发生变化,此时通过键值数据库存储当前状态数据,解析接口回值,将返回的运行数据刷新到redis中,单次流程处理结束。
[0018]优选的,所述判断接口返回的流水线状态,
[0019]运行结束状态包括:"UNBUNID","ABORTED","FAILED","SUCCESS","NOT_EXECUTED";
[0020]运行状态包括:"IN_PROGRESS","PAUSED_PENDING_INPUT"。
[0021]优选的,所述更新redis中运行数据并设置剩余过期时间为10s。
[0022]优选的,所述提供分类获取流水线状态接口,包括:
[0023]接口pipeline

lastbuilds:获取全部数据,包括流水线的元数据和状态数据,查询mysql中的全部元数据信息和运行结束的状态数据,正在运行的流水线状态数据查询redis获取,根据结构拼接数据返回;
[0024]接口pipeline

running:获取运行时状态数据,该接口根据参数中的pipelineid从redis获取需要展示的运行数据,redis中如不存在数据,说明该流水线已运行结束并超过过期时间,从mysql中获取缺少的数据信息。在前面所述的更新redis数据时设置的10s剩余过期时间,实质上是通过延迟数据删除来减少这类情况的发生,从而减少对mysql库的查询请求。
[0025]进一步的,流水线执行过程中,发生重试或终止操作,查询pipeline元数据,根据元数据从redis中查询重试节点信息,调用Jenkins插件接口终止或重试接口,结果返回后更新mysql中的数据,同步更新redis中运行状态,返回处理结果;
[0026]由停止状态启动流水线时,需要拼接参数调用Jenkins插件接口启动流水线,并将流水线的元数据存储于pipeline缓存中,等待读取同步流水线状态信息。
[0027]进一步的,所述接口包括相似数据计算功能的代码程序包、接口及工具插件。
[0028]优选的,所述前端初始化数据及定时刷新状态,包括:
[0029]前端页面初始化或有更改操作后,调用pipeline

lastbuilds接口,该接口会查询符合当前查询条件的流水线元数据及运行数据返回,前端根据返回数据渲染页面;
[0030]渲染结束后,定时获取当前页面的正在运行的流水线,并调用pipeline

running接口刷新运行状态,因为账号授权等功能可能会存在非本页面启动的情况,需要判断接口返回值与页面数据差异,当存在差异时说明有流水线从非当前页面启动,需要同步,再调用pipeline

lastbuilds接口,刷新全部数据,如果不存在差值,正常刷新运行节点状态。
[0031]本专利技术还要求保护一种同步Jenkins流水线运行状态的系统,包括通过插件接口获取Jenkins流水线运行状态并分类存储,提供分类获取流水线状态接口,以及前端初始化数据及定时刷新状态;
[0032]该系统执行上述的同步Jenkins流水线运行状态的方法。
[0033]本专利技术还要求保护一种同步Jenkins流水线运行状态的装置,包括:至少一个存储器和至少一个处理器;
[0034]所述至少一个存储器,用于存储机器可读程序;
[0035]所述至少一个处理本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种同步Jenkins流水线运行状态的方法,其特征在于,该方法的实现包括:通过插件接口获取Jenkins流水线运行状态并分类存储,提供分类获取流水线状态接口,前端初始化数据及定时刷新状态;通过缓存队列执行调用Jenkins插件接口来获取流水线状态,并将运行状态和静止状态的流水线分开存储,采用键值数据库缓存运行状态数据;所述提供分类获取流水线状态接口,包括返回全量数据的接口,返回运行状态数据的接口,修改流水线运行状态的接口;所述前端初始化数据及定时刷新状态,包括初始化渲染页面,定时刷新运行状态变化。2.根据权利要求1所述的一种同步Jenkins流水线运行状态的方法,其特征在于,所述通过插件接口获取Jenkins流水线运行状态并分类存储的过程包括:1)、开启pipeline缓存,从数据库中取出正在运行中的流水线,将流水线的元数据放入pipeline缓存中;2)、当触发执行流水线时,将流水线的元数据存储于pipeline缓存中,定时循环读取pipeline缓存获取元数据;3)、根据元数据中pipelineid和buildNum调用Jenkins插件接口查询stage状态,此处若产生异常,则停止处理,等待下次读取到该数据继续查询;4)、判断接口返回的流水线状态是否为运行状态;5)、如果此时状态为运行结束状态,说明该条流水线本次运行已经结束,即接口返回的数据为本次最终运行结果,移除pipeline缓存中该元数据以防止再次查询,解析接口回值,更新mysql中节点运行状态数据和流水线运行结果数据,更新redis中运行数据并设置剩余过期时间,单次流程处理结束;6)、如果状态为运行中,说明流水线状态还会发生变化,此时通过键值数据库存储当前状态数据,解析接口回值,将返回的运行数据刷新到redis中,单次流程处理结束。3.根据权利要求2所述的一种同步Jenkins流水线运行状态的方法,其特征在于,所述判断接口返回的流水线状态,运行结束状态包括:"UNBUNID","ABORTED","FAILED","SUCCESS","NOT_EXECUTED";运行状态包括:"IN_PROGRESS","PAUSED_PENDING_INPUT"。4.根据权利要求2所述的一种同步Jenkins流水线运行状态的方法,其特征在于,所述更新redis中运行数据并设置剩余过期时间为10s。5.根据权利要求1

4任一所述的一种同步Jenkins流水线运行状态的方法,其特征在于,所述提供分类获取流水线状态接口,包括:接口pipeline

las...

【专利技术属性】
技术研发人员:颜亮高传集董方辉孙乐恬于希光
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

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

1