System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及自动化构建,具体而言,涉及一种支持多技术栈的流水线构建方法、装置及电子设备。
技术介绍
1、在现代软件开发过程中,持续集成和持续交付(ci/cd)已成为实现快速迭代、提高代码质量和交付效率的重要手段。ci/cd流程通常依赖于自动化构建、测试和部署流水线来完成各项任务。在实际应用中,jenkins是最为常用的ci/cd工具,许多企业基于jenkins平台构建和管理流水线任务。然而,jenkins本身也存在一些局限性,导致其在多技术栈支持和高并发执行方面表现不够理想。
2、现有的基于jenkins的流水线系统技术栈兼容性差,jenkins的流水线脚本主要使用特定的语法(如groovy),无法直接支持其他常用脚本语言,同时扩展性和并发性不足,jenkins虽然提供了大量插件,但许多插件维护不足,稳定性较差,且并发执行效率不高,导致在处理复杂、多任务的流水线时,系统资源占用率高,运行效率较低。
技术实现思路
1、本公开实施例至少提供一种支持多技术栈的流水线构建方法、装置及电子设备,可以使用户能够在创建流水线时自由选择技术栈,自动生成相应的执行脚本,并将任务发送到对应的构建环境中执行,从而实现跨技术栈的高效、稳定的自动化构建流程。
2、本公开实施例提供了一种支持多技术栈的流水线构建方法,包括:
3、响应于流水线任务请求,解析所述流水线任务请求中所指示的技术栈信息,并确定所述技术栈信息对应的目标技术栈类型;
4、调用所述目标技术栈类型对
5、将所述流水线执行脚本发送至与所述目标技术栈类型相匹配的构建环境中执行。
6、一种可选的实施方式中,解析所述流水线任务请求中所指示的技术栈信息,并确定所述技术栈信息对应的目标技术栈类型,具体包括:
7、创建定义有多种技术栈类型的技术栈映射,所述技术栈映射中通过键值对存储每种技术栈类型与对应的技术栈编号;
8、根据接收到所述流水线任务请求对应的任务请求标识,查询以所述技术栈编号形式描述的所述技术栈信息,并检查对应的所述技术栈编号是否存在于所述技术栈映射中;
9、若存在,则根据所述技术栈编号以及所述技术栈映射中所述存储的映射关系,确定所述目标技术栈类型。
10、一种可选的实施方式中,调用所述目标技术栈类型对应预设的流水线解析器,生成适用于所述目标技术栈类型的流水线执行脚本,具体包括:
11、调用所述目标技术栈类型对应预设的流水线解析器,解析用户为流水线任务所设置的任务参数信息;
12、选取所述目标技术栈类型对应的脚本生成模板,根据所述任务参数信息嵌入所述脚本生成模板中对应的变量中,生成所述流水线执行脚本。
13、一种可选的实施方式中,所述目标技术栈类型至少包括jenkins技术栈、shell技术栈、ansible技术栈以及python技术栈中的一种;
14、针对每种所述目标技术栈类型,调用对应的脚本生成方法并传入携带所述任务参数信息的任务参数对象;
15、在所述脚本生成方法中,读取所述任务参数对象中携带的所述任务参数信息,所述任务参数信息至少包括阶段信息以及命令列表;
16、通过执行所述脚本生成方法,采用所述目标技术栈类型对应的语法规范生成所述目标技术栈类型对应格式的所述流水线执行脚本;
17、其中,所述jenkins技术栈对应的所述脚本生成方法为getpipelinescript方法,所述shell技术栈对应的所述脚本生成方法为getshellscript方法,所述ansible技术栈对应的所述脚本生成方法为getansbscript方法,所述python技术栈对应的所述脚本生成方法为getpytnscript方法。
18、一种可选的实施方式中,将所述流水线执行脚本发送至与所述目标技术栈类型相匹配的构建环境中执行,具体包括:
19、确定与所述目标技术栈类型相匹配的目标构建环境;
20、创建封装有所述流水线执行脚本的http请求,并为所述http请求设置对应的请求超时时间;
21、执行所述http请求以将所述流水线执行脚本发送至所述构建环境,并接收所述构建环境返回的脚本执行响应信息。
22、一种可选的实施方式中,在接收所述构建环境返回的脚本执行响应信息之后,所述方法还包括:
23、解析所述脚本执行响应信息中包括的请求结果,当确定所述请求结果为请求失败时,记录错误日志并向用户发送流程请求失败信息;
24、当确定所述请求结果为请求成功时,解析所述脚本执行响应信息中包括的响应结果,若确定所述响应结果为响应失败,则记录错误日志并向用户发送流程执行失败信息。
25、一种可选的实施方式中,创建封装有所述流水线执行脚本的http请求,具体包括:
26、确定所述构建环境对应的目标api路径;
27、使用httppost对象将所述流水线执行脚本打包为post请求;
28、通过setentity方法将包含所述流水线执行脚本的json数据封装到请求主体中。
29、本公开实施例还提供一种支持多技术栈的流水线构建装置,包括:
30、技术栈类型确定模块,用于响应于流水线任务请求,解析所述流水线任务请求中所指示的技术栈信息,并确定所述技术栈信息对应的目标技术栈类型;
31、执行脚本生成模块,用于调用所述目标技术栈类型对应预设的流水线解析器,生成适用于所述目标技术栈类型的流水线执行脚本;
32、脚本执行模块,用于将所述流水线执行脚本发送至与所述目标技术栈类型相匹配的构建环境中执行。
33、本公开实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述支持多技术栈的流水线构建方法,或上述支持多技术栈的流水线构建方法中任一种可能的实施方式中的步骤。
34、本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述支持多技术栈的流水线构建方法,或上述支持多技术栈的流水线构建方法中任一种可能的实施方式中的步骤。
35、本公开实施例还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序、指令被处理器执行时实现上述支持多技术栈的流水线构建方法,或上述支持多技术栈的流水线构建方法中任一种可能的实施方式中的步骤。
36、本公开实施例提供的一种支持多技术栈的流水线构建方法、装置及电子设备,响应于流水线任务请求,解析所述流水线任务请求中所指示的技术栈信息,并确定所述技术栈信息对应的目标技术栈类型;调用所述目标技术栈类型对应预设的流水线本文档来自技高网...
【技术保护点】
1.一种支持多技术栈的流水线构建方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,解析所述流水线任务请求中所指示的技术栈信息,并确定所述技术栈信息对应的目标技术栈类型,具体包括:
3.根据权利要求1所述的方法,其特征在于,调用所述目标技术栈类型对应预设的流水线解析器,生成适用于所述目标技术栈类型的流水线执行脚本,具体包括:
4.根据权利要求3所述的方法,其特征在于,所述目标技术栈类型至少包括Jenkins技术栈、Shell技术栈、Ansible技术栈以及Python技术栈中的一种;
5.根据权利要求1所述的方法,其特征在于,将所述流水线执行脚本发送至与所述目标技术栈类型相匹配的构建环境中执行,具体包括:
6.根据权利要求5所述的方法,其特征在于,在接收所述构建环境返回的脚本执行响应信息之后,所述方法还包括:
7.根据权利要求5所述的方法,其特征在于,创建封装有所述流水线执行脚本的HTTP请求,具体包括:
8.一种支持多技术栈的流水线构建装置,其特征在于,包括:
9.一
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7中任一项所述的支持多技术栈的流水线构建方法的步骤。
...【技术特征摘要】
1.一种支持多技术栈的流水线构建方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,解析所述流水线任务请求中所指示的技术栈信息,并确定所述技术栈信息对应的目标技术栈类型,具体包括:
3.根据权利要求1所述的方法,其特征在于,调用所述目标技术栈类型对应预设的流水线解析器,生成适用于所述目标技术栈类型的流水线执行脚本,具体包括:
4.根据权利要求3所述的方法,其特征在于,所述目标技术栈类型至少包括jenkins技术栈、shell技术栈、ansible技术栈以及python技术栈中的一种;
5.根据权利要求1所述的方法,其特征在于,将所述流水线执行脚本发送至与所述目标技术栈类型相匹配的构建环境中执行,具体包括:
6.根据权利要求5所述的方法,其特...
【专利技术属性】
技术研发人员:王顺霆,胡汝道,
申请(专利权)人:中电金信软件有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。