CN117519800A - 一种流水线引擎实现方法及装置 - Google Patents
一种流水线引擎实现方法及装置 Download PDFInfo
- Publication number
- CN117519800A CN117519800A CN202311477655.3A CN202311477655A CN117519800A CN 117519800 A CN117519800 A CN 117519800A CN 202311477655 A CN202311477655 A CN 202311477655A CN 117519800 A CN117519800 A CN 117519800A
- Authority
- CN
- China
- Prior art keywords
- task
- container
- pipeline
- execution
- configuration file
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000013515 script Methods 0.000 claims description 86
- 238000004806 packaging method and process Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 16
- 238000005516 engineering process Methods 0.000 abstract description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000006378 damage Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种流水线引擎实现方法及装置,其中,该方法包括:接收流水线执行请求,并根据流水线执行请求获取预先存储的流水线配置文件;根据流水线配置文件分别判断流水线中每个任务的运行环境是否为云原生;在运行环境为云原生的情况下,根据流水线配置文件生成与任务对应的任务容器镜像,并通过容器编排工具执行任务容器镜像;在运行环境为非云原生的情况下,根据流水线配置文件生成与任务对应的任务指令,并通过执行机执行任务指令。通过本发明实施例,可以同时适配云上和云下两种执行环境,进而解决了相关技术中流水线配置无法同时适用云上云下两种架构,通用性较差问题,提高了流水线配置和部署效率。
Description
技术领域
本发明涉及持续集成领域,具体而言,涉及一种流水线引擎实现方法及装置。
背景技术
随着云原生技术的不断发展,云计算平台具备扩展性强、成本效益低、安全性高等多重优势,应用上云也是大势所趋,持续集成平台需要支持云上云下两种架构并存场景,以提高开发效率和企业竞争力。
相关技术中针对不同系统、不同业务需求,通常采用流水线即代码(Pipeline asCode,简称PAC)的思想来定制流水线,流水线即代码是一种将持续集成和交付流程以代码的形式进行定义和管理的方法,通常是基于领域特定语言(Domain Specific Language,简称DSL)定制化生成的,如采用主流的持续集成工具Jenkins,需要编写jenkinfile来实现。另外,定制化流水线无法同时适用云上云下两种架构,需要针对云上云下两种架构的环境要求分别进行DSL配置,配置过程较为复杂,开发人员需要掌握一定的编码能力,学习成本较高。
针对相关技术中的上述问题,尚未提出解决方案。
发明内容
本发明实施例提供了一种流水线引擎实现方法及装置,以至少解决相关技术中流水线配置无法同时适用云上云下两种架构,通用性较差问题。
根据本发明的一个实施例,提供了一种流水线引擎实现方法,包括:
接收流水线执行请求,并根据所述流水线执行请求获取预先存储的流水线配置文件;
根据所述流水线配置文件分别判断流水线中每个任务的运行环境是否为云原生;
在所述运行环境为云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务容器镜像,并通过容器编排工具执行所述任务容器镜像;
在所述运行环境为非云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务指令,并通过执行机执行所述任务指令。
可选地,在接收流水线执行请求之前,所述方法还包括:
获取用户基于图形化操作界面配置的流水线信息;
将所述流水线信息转换成预设语言格式的流水线配置文件;
存储所述流水线配置文件。
可选地,所述流水线信息包括:所述任务的依赖关系、所述任务的任务信息、步骤的执行顺序、所述步骤的插件配置信息,其中,每一条流水线由至少一个所述任务组成,每个所述任务由至少一个所述步骤组成。
可选地,将所述流水线信息转换成预设语言格式的流水线配置文件,包括:
根据预设的容器化封装规则和所述插件配置信息将每个所述步骤封装成所述预设语言格式的步骤脚本;
根据所述执行顺序组合所述步骤脚本,并根据所述容器化封装规则、所述任务信息以及所述依赖关系将每个所述任务封装成所述预设语言格式的任务脚本,其中,每个所述任务脚本包含至少一个所述步骤脚本;
组合所述任务脚本得到所述流水线配置文件。
可选地,根据所述流水线配置文件分别判断流水线中每个任务的运行环境是否为云原生,包括:
解析所述流水线配置文件得到流水线中每个任务的云原生字段;
根据所述云原生字段判断对应任务的运行环境是否为云原生。
可选地,所述任务容器镜像包括初始化容器和普通容器,其中,所述初始化容器包括任务初始容器镜像和至少一个步骤执行容器镜像,所述普通容器包括任务结束容器镜像。
可选地,在所述运行环境为云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务容器镜像,包括:
在所述运行环境为云原生的情况下,解析所述流水线配置文件得到与所述任务对应的至少一个步骤的步骤脚本;
根据所述步骤脚本生成所述步骤执行容器镜像,其中,每个所述步骤执行容器镜像对应一个所述步骤脚本;
在所述步骤执行容器镜像之前添加所述任务初始容器镜像,得到所述初始化容器;
将所述任务结束容器镜像作为普通容器添加到所述初始化容器的后面。
可选地,通过容器编排工具执行所述任务容器镜像,包括:
通过所述容器编排工具依次执行所述初始化容器中的所述任务初始容器镜像和所述步骤执行容器镜像,其中,所述任务初始容器镜像用于创建运行所述任务的资源空间并配置所述资源空间的运行环境,所述步骤执行容器镜像用于在所述资源空间中执行对应的步骤;
在所述初始化容器中的多个容器镜像均执行成功的情况下,或者,在所述初始化容器中的任意容器镜像执行失败的情况下,通过所述容器编排工具执行所述任务结束容器镜像,其中,所述任务结束容器镜像用于销毁所述资源空间。
可选地,在所述运行环境为非云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务指令,并通过执行机执行所述任务指令,包括:
在所述运行环境为非云原生的情况下,解析所述流水线配置文件得到与所述任务对应的至少一个步骤的步骤脚本;
根据所述步骤脚本的执行顺序向所述执行机发送一条所述任务指令,其中,每一条所述任务指令中携带有一个步骤的步骤脚本;
通过所述执行机执行所述任务指令,并返回执行结果;
在所述执行结果为成功的情况下,根据所述步骤脚本的执行顺序向所述执行机发送下一条所述任务指令,直至所述任务中的步骤全部执行完成。
可选地,通过所述执行机执行所述任务指令,并返回执行结果,包括:
所述执行机在收到所述任务指令之后,解析所述任务指令得到对应步骤的插件信息和插件配置信息;
根据所述插件信息加载对应的插件脚本;
根据所述插件配置信息运行所述插件脚本得到所述插件脚本的执行结果,并返回所述执行结果。
根据本发明的另一个实施例,还提供了一种流水线引擎实现装置,包括:
接收模块,用于接收流水线执行请求,并根据所述流水线执行请求获取预先存储的流水线配置文件;
判断模块,用于根据所述流水线配置文件分别判断流水线中每个任务的运行环境是否为云原生;
云原生模块,用于在所述运行环境为云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务容器镜像,并通过容器编排工具执行所述任务容器镜像;
执行机模块,用于在所述运行环境为非云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务指令,并通过执行机执行所述任务指令。
可选地,所述装置还包括:
配置模块,用于获取用户基于图形化操作界面配置的流水线信息;
转换模块,用于将所述流水线信息转换成预设语言格式的流水线配置文件;
存储模块,用于存储所述流水线配置文件。
可选地,所述流水线信息包括:所述任务的依赖关系、所述任务的任务信息、步骤的执行顺序、所述步骤的插件配置信息,其中,每一条流水线由至少一个所述任务组成,每个所述任务由至少一个所述步骤组成。
可选地,转换模块,包括:
封装单元,用于根据预设的容器化封装规则和所述插件配置信息将每个所述步骤封装成所述预设语言格式的步骤脚本;
第一组合单元,用于根据所述执行顺序组合所述步骤脚本,并根据所述容器化封装规则、所述任务信息以及所述依赖关系将每个所述任务封装成所述预设语言格式的任务脚本,其中,每个所述任务脚本包含至少一个所述步骤脚本;
第二组合单元,用于组合所述任务脚本得到所述流水线配置文件。
可选地,判断模块,包括:
第一解析单元,用于解析所述流水线配置文件得到流水线中每个任务的云原生字段;
判断单元,用于根据所述云原生字段判断对应任务的运行环境是否为云原生。
可选地,所述任务容器镜像包括初始化容器和普通容器,其中,所述初始化容器包括任务初始容器镜像和至少一个步骤执行容器镜像,所述普通容器包括任务结束容器镜像。
可选地,云原生模块,包括:
第二解析单元,用于在所述运行环境为云原生的情况下,解析所述流水线配置文件得到与所述任务对应的至少一个步骤的步骤脚本;
第一镜像单元,用于根据所述步骤脚本生成所述步骤执行容器镜像,其中,每个所述步骤执行容器镜像对应一个所述步骤脚本;
第二镜像单元,用于在所述步骤执行容器镜像之前添加所述任务初始容器镜像,得到所述初始化容器;
第三镜像单元,用于将所述任务结束容器镜像作为普通容器添加到所述初始化容器的后面。
可选地,云原生模块,还包括:
第一执行单元,用于通过所述容器编排工具依次执行所述初始化容器中的所述任务初始容器镜像和所述步骤执行容器镜像,其中,所述任务初始容器镜像用于创建运行所述任务的资源空间并配置所述资源空间的运行环境,所述步骤执行容器镜像用于在所述资源空间中执行对应的步骤;
第二执行单元,在所述初始化容器中的多个容器镜像均执行成功的情况下,或者,在所述初始化容器中的任意容器镜像执行失败的情况下,通过所述容器编排工具执行所述任务结束容器镜像,其中,所述任务结束容器镜像用于销毁所述资源空间。
可选地,执行机模块,包括:
第三解析单元,用于在所述运行环境为非云原生的情况下,解析所述流水线配置文件得到与所述任务对应的至少一个步骤的步骤脚本;
发送单元,用于根据所述步骤脚本的执行顺序向所述执行机发送一条所述任务指令,其中,每一条所述任务指令中携带有一个步骤的步骤脚本;
第三执行单元,用于通过所述执行机执行所述任务指令,并返回执行结果;在所述执行结果为成功的情况下,根据所述步骤脚本的执行顺序向所述执行机发送下一条所述任务指令,直至所述任务中的步骤全部执行完成。
可选地,所述装置还包括:
执行机,用于在收到所述任务指令之后,解析所述任务指令得到对应步骤的插件信息和插件配置信息;根据所述插件信息加载对应的插件脚本;根据所述插件配置信息运行所述插件脚本得到所述插件脚本的执行结果,并返回所述执行结果。
根据本发明的又一个实施例,还提供了一种计算机可读的存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被处理器运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,可以解决相关技术中流水线配置无法同时适用云上云下两种架构,通用性较差问题。流水线配置文件可以同时适配云上云下两种架构,技术人员仅需要简单的修改运行环境的相关参数,就能实现云上云下两种架构的切换,提高了流水线配置和部署效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的流水线引擎实现方法的硬件结构框图;
图2是根据本发明实施例的流水线引擎实现方法的流程图;
图3是根据本发明实施例的图形化操作界面的示意图;
图4是根据本发明另一实施例的流水线引擎实现方法的流程图;
图5是根据本发明实施例的流水线引擎实现装置的框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
实施例1
本发明实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本发明实施例的流水线引擎实现方法的硬件结构框图,如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的流水线引擎实现方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述计算机终端或网络架构的流水线引擎实现方法,图2是根据本发明实施例的流水线引擎实现方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,接收流水线执行请求,并根据所述流水线执行请求获取预先存储的流水线配置文件;
步骤S204,根据所述流水线配置文件分别判断流水线中每个任务的运行环境是否为云原生;
步骤S206,在所述运行环境为云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务容器镜像,并通过容器编排工具执行所述任务容器镜像;
步骤S208,在所述运行环境为非云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务指令,并通过执行机执行所述任务指令。
在本实施例中,容器编排工具可以包括但不限于Kubernetes。执行机(agent)可以是虚拟机或物理机。
通过上述步骤S202至S208,可以解决相关技术中流水线配置无法同时适用云上云下两种架构,通用性较差问题,流水线配置文件可以同时适配云上云下两种架构,技术人员仅需要简单的修改运行环境的相关参数,就能实现云上云下两种架构的切换,提高了流水线配置和部署效率。
在一可选实施例中,在步骤S202接收流水线执行请求之前,所述方法还包括如下步骤:
步骤S2002,获取用户基于图形化操作界面配置的流水线信息;
步骤S2004,将所述流水线信息转换成预设语言格式的流水线配置文件;
步骤S2006,存储所述流水线配置文件。
在本实施例中,用户可以基于图形化操作界面编排流水线,无需学习或使用DSL,编排方式更加简单,降低了技术人员的学习成本。
在一示例性实施例中,一条流水线可以包括多个任务,任务可以设置为并行或串行关系(即依赖关系),每个任务可以包括多个步骤,同一任务下的多个步骤为串行关系,在前一步骤执行完成后才能执行下一步骤。
在本实施例中,流水线信息可以包括:任务的依赖关系和任务信息,步骤的名称、类型、执行顺序、插件配置信息、运行结果的通知方式等。任务信息还可以包括:任务名称、运行环境、执行机的标签(tag)、是否空间隔离、运行前是否需要人工确认等。用户可以根据配置需求在图形化操作界面中添加对应的参数,本发明对此不做限制。
在一示例性实施例中,步骤S2004中预设语言格式的流水线配置文件可以包括但并不限制于yaml文件。
在一示例性实施例中,流水线配置文件可以存储于版本控制系统,如Git,也可以存储于数据库,如键值存储数据库(Redis In-Memory Data Structure Store,简称Redis)。用户可以通过版本控制系统查询历史版本的配置文件,在步骤S202中,接收流水线执行请求后,可以直接从Redis中加载最新的流水线配置文件,以加快流水线执行效率。
在一示例性实施例中,流水线执行请求中携带有流水线标识,流水线引擎可以根据流水线标识来获取指定的流水线配置文件。
在一可选实施例中,所述流水线信息包括:所述任务的依赖关系、所述任务的任务信息、步骤的执行顺序、所述步骤的插件配置信息,其中,每一条流水线由至少一个所述任务组成,每个所述任务由至少一个所述步骤组成。
在一可选实施例中,步骤S2004将所述流水线信息转换成预设语言格式的流水线配置文件,可以包括如下步骤:
根据预设的容器化封装规则和所述插件配置信息将每个所述步骤封装成所述预设语言格式的步骤脚本;
根据所述执行顺序组合所述步骤脚本,并根据所述容器化封装规则、所述任务信息以及所述依赖关系将每个所述任务封装成所述预设语言格式的任务脚本,其中,每个所述任务脚本包含至少一个所述步骤脚本;
组合所述任务脚本得到所述流水线配置文件。
在一示例性实施例中,容器化封装规则是根据语言格式设置的,针对不同的语言格式,容器化封装规则也不相同。
在一可选实施例中,步骤S204根据所述流水线配置文件分别判断流水线中每个任务的运行环境是否为云原生,可以包括如下步骤:
步骤S2042,解析所述流水线配置文件得到流水线中每个任务的云原生字段;
步骤S2044,根据所述云原生字段判断对应任务的运行环境是否为云原生。
在一可选实施例中,所述任务容器镜像包括初始化容器和普通容器,其中,所述初始化容器包括任务初始容器镜像和至少一个步骤执行容器镜像,所述普通容器包括任务结束容器镜像。
在一示例性实施例中,容器集群管理系统(Kubernetes,简称K8s)中的容器类型可以分为:普通容器、初始化容器(Init Container)等类型。其中,一个初始化容器只能在前一个初始化容器运行结束之后才能启动,直到所有的初始化容器都启动完毕,Pod(容器占用的资源空间)中的其他容器才会开始启动。
在本发明实施例中,可以利用初始化容器的容器类型来控制云上任务的步骤执行顺序,保证步骤执行容器镜像按照流水线定义的执行顺序执行。
在一可选实施例中,步骤S206中的在所述运行环境为云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务容器镜像,包括如下步骤:
步骤S2061,在所述运行环境为云原生的情况下,解析所述流水线配置文件得到与所述任务对应的至少一个步骤的步骤脚本;
步骤S2062,根据所述步骤脚本生成所述步骤执行容器镜像,其中,每个所述步骤执行容器镜像对应一个所述步骤脚本;
步骤S2063,在所述步骤执行容器镜像之前添加所述任务初始容器镜像,得到所述初始化容器;
步骤S2064,将所述任务结束容器镜像作为普通容器添加到所述初始化容器的后面。
在一可选实施例中,步骤S206中的通过容器编排工具执行所述任务容器镜像,包括如下步骤:
步骤S2065,通过所述容器编排工具依次执行所述初始化容器中的所述任务初始容器镜像和所述步骤执行容器镜像,其中,所述任务初始容器镜像用于创建运行所述任务的资源空间并配置所述资源空间的运行环境,所述步骤执行容器镜像用于在所述资源空间中执行对应的步骤;
步骤S2066,在所述初始化容器中的多个容器镜像均执行成功的情况下,或者,在所述初始化容器中的任意容器镜像执行失败的情况下,通过所述容器编排工具执行所述任务结束容器镜像,其中,所述任务结束容器镜像用于销毁所述资源空间。
在一可选实施例中,步骤S208在所述运行环境为非云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务指令,并通过执行机执行所述任务指令,包括如下步骤:
步骤S2082,在所述运行环境为非云原生的情况下,解析所述流水线配置文件得到与所述任务对应的至少一个步骤的步骤脚本;
步骤S2084,根据所述步骤脚本的执行顺序向所述执行机发送一条所述任务指令,其中,每一条所述任务指令中携带有一个步骤的步骤脚本;
步骤S2086,通过所述执行机执行所述任务指令,并返回执行结果;
步骤S2088,在所述执行结果为成功的情况下,根据所述步骤脚本的执行顺序向所述执行机发送下一条所述任务指令,直至所述任务中的步骤全部执行完成。
在一可选实施例中,步骤S2086通过所述执行机执行所述任务指令,并返回执行结果,包括如下步骤:
所述执行机在收到所述任务指令之后,解析所述任务指令得到对应步骤的插件信息和插件配置信息;
根据所述插件信息加载对应的插件脚本;
根据所述插件配置信息运行所述插件脚本得到所述插件脚本的执行结果,并返回所述执行结果。
本发明实施例支持云上云下多架构复杂流水线的图形化编排,后台可以自动生成自定义的容器化封装配置文件,流水线执行引擎对容器化封装配置文件进行解析,可以同时适配云上和云下两种执行环境,用户在想要切换运行环境时,仅需切换运行环境开关即可,无需修改DSL以适配不同环境,可以解决相关技术中流水线配置无法同时适用云上云下两种架构,通用性较差问题,降低了流水线编排的复杂度,提升了配置效率。
图3是根据本发明实施例的图形化操作界面的示意图,如图3所示,在图形化操作界面中,一条流水线设置有多个任务,每个任务可以包括多个步骤。
在本实施例中,可以通过新建任务框的方式添加任务,任务之间的依赖关系可以通过拖动或点击连接节点的方式进行配置,依赖关系包括并行关系(不存在依赖关系)和串行关系(存在依赖关系)。如图3中,任务-1和任务-3为串行关系,任务-1和任务2为并行关系,同一任务下的多个步骤为串行关系。
在本实施例中,每个任务的基本信息、执行环境、执行步骤可以单独进行配置。如图3中执行环境中的容器化执行开关,可以实现对云原生或非云原生的环境配置。
在本实施例中,还可以对流水线的基本信息、触发方式、输入参数、流程(包括任务、步骤)、通知反馈进行设置。本发明对此不做限制。
在另一实施例中,用户在图形化操作界面配置以上信息后可以点击保存或提交按钮,后台将信息组合成自定义的容器化封装的流水线配置文件,并将该流水线配置文件提交至git和Redis。
在一示例性实施例中,流水线配置文件为yaml文件。具体的yaml语言格式的配置文件如下所示:
/>
/>
在本实施例中,/**/中的内容为字段注释说明。步骤脚本中可以包含类型(type)、名称(title)、插件配置信息(config)等多个字段。任务信息可以包含名称(title)、是否需要人工确认(confirmRequired)、环境(environment)、执行机标签(tags)、云原生(cloudNative)、是否空间隔离(isolated)、执行顺序控制(runAfter)等多个字段。
通过本发明实施例,可以简化流水线配置流程,用户无需具备编程能力,就能实现对流水线的图形化编排。针对云上云下两种架构,用户也无需分别编写配置文件,仅需要调整容器化执行开关就能够实现云上云下的架构切换,提高了流水线配置效率。
图4是根据本发明另一实施例的流水线引擎实现方法的流程图,如图4所示,该流程包括如下步骤:
步骤S401,查询流水线配置;
步骤S402,解析流水线配置文件;
步骤S403,判断是否有可执行任务;
步骤S404,判断任务运行环境;
步骤S405,容器化运行,将任务步骤整合后请求k8s;
步骤S406,执行机运行,判断是否有可执行步骤;
步骤S407,发送指令及运行参数给执行机;
步骤S408,执行机根据插件名称下载脚本;
步骤S409,执行插件脚本;
步骤S410,销毁空间。
在本实施例中,步骤S403中,若流水线中有可执行任务,则执行步骤S404至步骤S409,若流水线中没有可执行任务,则执行步骤S410,销毁空间,若为容器化执行则请求k8s销毁Pod,若为执行机,则向agent发送销毁指令。
在本实施例中,步骤S405为容器化运行流程,运行环境为云原生,步骤S406至步骤S409为执行机运行流程,运行环境为非云原生。执行机运行时是根据当前任务下的步骤顺序依次对每一个步骤进行处理。
通过本发明实施例,流水线配置文件可以同时适用云上云下两种架构,通用性更好,进而解决了相关技术中流水线配置无法同时适用云上云下两种架构,通用性较差问题,提高了流水线配置和部署效率。
在另一示例性实施例中,流水线引擎的运行流程可以分为以下步骤:
步骤S1,流水线触发执行,向流水线引擎发出流水线执行请求,引擎根据流水线标识查出对应流水线在Redis或git中的流水线配置文件,并解析流水线配置文件中的环境-云原生字段(environment.cloudNative),判断运行环境是否是云原生。
步骤S2,cloudNative=RTUE,表示云原生执行,引擎依据流水线配置信息拼接Pod规约,并通过三类镜像来控制Pod的创建到销毁,容器镜像如下表1所示。
表1:
在一示例性实施例中,在Pod规约中,将任务初始容器和步骤执行容器均放到初始化容器类型中(initContainers)作为多个初始化容器,将任务结束容器放到普通容器类型(Containers)中,并以此来控制任务多步骤的执行顺序。其中,每个初始化容器都必须在下一个初始化容器启动之前成功完成,多个步骤对应多个初始化容器。
在一示例性实施例中,容器镜像的结构如下:
在本实施例中,利用initContainer容器类型来保证步骤执行顺序,服务器(流水线引擎)和k8s仅一次交互即可完成一个任务下多步骤的执行,用户无需再编辑步骤顺序控制逻辑。
步骤S3,cloudNative=FALSE,表示由传统执行机执行。此时由引擎控制执行顺序,引擎向执行机(agent)发送执行指令,解析yaml文件中对应步骤的步骤-配置字段(step.config)的字段值,即插件配置信息,将该配置信息通过网络套接字(websocket)消息在发送任务指令时一并传给执行机。执行机接收指令后,根据插件名称下载对应插件所需的执行脚本到本地,并依据step.config中的字段值作为参数,运行插件入口脚本,插件脚本执行完后执行机回调结果给引擎,引擎再进行下一步的决策:若该步骤失败,则结束。若该步骤成功且仍有后续步骤配置,则再次向执行机发送插件执行指令。
步骤S4,当前任务执行完毕后,若还有下一个待执行任务,引擎重新回到步骤S1,直到所有任务步骤执行完毕,或步骤执行失败,再由引擎控制执行销毁空间:若为容器化执行则请求k8s销毁Pod,若为执行机,则向agent发送销毁指令。
通过本发明实施例,流水线配置文件可以同时适用云上云下两种架构,通用性更好,进而解决了相关技术中流水线配置无法同时适用云上云下两种架构,通用性较差问题,提高了流水线配置和部署效率。
根据本发明的另一个实施例,还提供了一种流水线引擎实现装置,图5是根据本发明实施例的流水线引擎实现装置的框图,如图5所示,该流水线引擎实现装置包括:
接收模块52,用于接收流水线执行请求,并根据所述流水线执行请求获取预先存储的流水线配置文件;
判断模块54,用于根据所述流水线配置文件分别判断流水线中每个任务的运行环境是否为云原生;
云原生模块56,用于在所述运行环境为云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务容器镜像,并通过容器编排工具执行所述任务容器镜像;
执行机模块58,用于在所述运行环境为非云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务指令,并通过执行机执行所述任务指令。
在一可选实施例中,所述装置还包括:
配置模块,用于获取用户基于图形化操作界面配置的流水线信息;
转换模块,用于将所述流水线信息转换成预设语言格式的流水线配置文件;
存储模块,用于存储所述流水线配置文件。
在一可选实施例中,所述流水线信息包括:所述任务的依赖关系、所述任务的任务信息、步骤的执行顺序、所述步骤的插件配置信息,其中,每一条流水线由至少一个所述任务组成,每个所述任务由至少一个所述步骤组成。
在一可选实施例中,转换模块,包括:
封装单元,用于根据预设的容器化封装规则和所述插件配置信息将每个所述步骤封装成所述预设语言格式的步骤脚本;
第一组合单元,用于根据所述执行顺序组合所述步骤脚本,并根据所述容器化封装规则、所述任务信息以及所述依赖关系将每个所述任务封装成所述预设语言格式的任务脚本,其中,每个所述任务脚本包含至少一个所述步骤脚本;
第二组合单元,用于组合所述任务脚本得到所述流水线配置文件。
在一可选实施例中,判断模块,包括:
第一解析单元,用于解析所述流水线配置文件得到流水线中每个任务的云原生字段;
判断单元,用于根据所述云原生字段判断对应任务的运行环境是否为云原生。
在一可选实施例中,所述任务容器镜像包括初始化容器和普通容器,其中,所述初始化容器包括任务初始容器镜像和至少一个步骤执行容器镜像,所述普通容器包括任务结束容器镜像。
在一可选实施例中,云原生模块,包括:
第二解析单元,用于在所述运行环境为云原生的情况下,解析所述流水线配置文件得到与所述任务对应的至少一个步骤的步骤脚本;
第一镜像单元,用于根据所述步骤脚本生成所述步骤执行容器镜像,其中,每个所述步骤执行容器镜像对应一个所述步骤脚本;
第二镜像单元,用于在所述步骤执行容器镜像之前添加所述任务初始容器镜像,得到所述初始化容器;
第三镜像单元,用于将所述任务结束容器镜像作为普通容器添加到所述初始化容器的后面。
在一可选实施例中,云原生模块,还包括:
第一执行单元,用于通过所述容器编排工具依次执行所述初始化容器中的所述任务初始容器镜像和所述步骤执行容器镜像,其中,所述任务初始容器镜像用于创建运行所述任务的资源空间并配置所述资源空间的运行环境,所述步骤执行容器镜像用于在所述资源空间中执行对应的步骤;
第二执行单元,在所述初始化容器中的多个容器镜像均执行成功的情况下,或者,在所述初始化容器中的任意容器镜像执行失败的情况下,通过所述容器编排工具执行所述任务结束容器镜像,其中,所述任务结束容器镜像用于销毁所述资源空间。
在一可选实施例中,执行机模块,包括:
第三解析单元,用于在所述运行环境为非云原生的情况下,解析所述流水线配置文件得到与所述任务对应的至少一个步骤的步骤脚本;
发送单元,用于根据所述步骤脚本的执行顺序向所述执行机发送一条所述任务指令,其中,每一条所述任务指令中携带有一个步骤的步骤脚本;
第三执行单元,用于通过所述执行机执行所述任务指令,并返回执行结果;在所述执行结果为成功的情况下,根据所述步骤脚本的执行顺序向所述执行机发送下一条所述任务指令,直至所述任务中的步骤全部执行完成。
在一可选实施例中,所述装置还包括:
执行机,用于在收到所述任务指令之后,解析所述任务指令得到对应步骤的插件信息和插件配置信息;根据所述插件信息加载对应的插件脚本;根据所述插件配置信息运行所述插件脚本得到所述插件脚本的执行结果,并返回所述执行结果。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被处理器运行时执行上述任一项方法实施例中的步骤。
在一可选实施例中,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-On ly Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一可选实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,在一可选实施例中,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种流水线引擎实现方法,其特征在于,包括:
接收流水线执行请求,并根据所述流水线执行请求获取预先存储的流水线配置文件;
根据所述流水线配置文件分别判断流水线中每个任务的运行环境是否为云原生;
在所述运行环境为云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务容器镜像,并通过容器编排工具执行所述任务容器镜像;
在所述运行环境为非云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务指令,并通过执行机执行所述任务指令。
2.根据权利要求1所述的方法,其特征在于,在接收流水线执行请求之前,所述方法还包括:
获取用户基于图形化操作界面配置的流水线信息;
将所述流水线信息转换成预设语言格式的流水线配置文件;
存储所述流水线配置文件。
3.根据权利要求2所述的方法,其特征在于,所述流水线信息包括:所述任务的依赖关系、所述任务的任务信息、步骤的执行顺序、所述步骤的插件配置信息,其中,每一条流水线由至少一个所述任务组成,每个所述任务由至少一个所述步骤组成。
4.根据权利要求3所述的方法,其特征在于,将所述流水线信息转换成预设语言格式的流水线配置文件,包括:
根据预设的容器化封装规则和所述插件配置信息将每个所述步骤封装成所述预设语言格式的步骤脚本;
根据所述执行顺序组合所述步骤脚本,并根据所述容器化封装规则、所述任务信息以及所述依赖关系将每个所述任务封装成所述预设语言格式的任务脚本,其中,每个所述任务脚本包含至少一个所述步骤脚本;
组合所述任务脚本得到所述流水线配置文件。
5.根据权利要求1所述的方法,其特征在于,根据所述流水线配置文件分别判断流水线中每个任务的运行环境是否为云原生,包括:
解析所述流水线配置文件得到流水线中每个任务的云原生字段;
根据所述云原生字段判断对应任务的运行环境是否为云原生。
6.根据权利要求1所述的方法,其特征在于,所述任务容器镜像包括初始化容器和普通容器,其中,所述初始化容器包括任务初始容器镜像和至少一个步骤执行容器镜像,所述普通容器包括任务结束容器镜像。
7.根据权利要求6所述的方法,其特征在于,在所述运行环境为云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务容器镜像,包括:
在所述运行环境为云原生的情况下,解析所述流水线配置文件得到与所述任务对应的至少一个步骤的步骤脚本;
根据所述步骤脚本生成所述步骤执行容器镜像,其中,每个所述步骤执行容器镜像对应一个所述步骤脚本;
在所述步骤执行容器镜像之前添加所述任务初始容器镜像,得到所述初始化容器;
将所述任务结束容器镜像作为普通容器添加到所述初始化容器的后面。
8.根据权利要求7所述的方法,其特征在于,通过容器编排工具执行所述任务容器镜像,包括:
通过所述容器编排工具依次执行所述初始化容器中的所述任务初始容器镜像和所述步骤执行容器镜像,其中,所述任务初始容器镜像用于创建运行所述任务的资源空间并配置所述资源空间的运行环境,所述步骤执行容器镜像用于在所述资源空间中执行对应的步骤;
在所述初始化容器中的多个容器镜像均执行成功的情况下,或者,在所述初始化容器中的任意容器镜像执行失败的情况下,通过所述容器编排工具执行所述任务结束容器镜像,其中,所述任务结束容器镜像用于销毁所述资源空间。
9.根据权利要求1所述的方法,其特征在于,在所述运行环境为非云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务指令,并通过执行机执行所述任务指令,包括:
在所述运行环境为非云原生的情况下,解析所述流水线配置文件得到与所述任务对应的至少一个步骤的步骤脚本;
根据所述步骤脚本的执行顺序向所述执行机发送一条所述任务指令,其中,每一条所述任务指令中携带有一个步骤的步骤脚本;
通过所述执行机执行所述任务指令,并返回执行结果;
在所述执行结果为成功的情况下,根据所述步骤脚本的执行顺序向所述执行机发送下一条所述任务指令,直至所述任务中的步骤全部执行完成。
10.根据权利要求9所述的方法,其特征在于,通过所述执行机执行所述任务指令,并返回执行结果,包括:
所述执行机在收到所述任务指令之后,解析所述任务指令得到对应步骤的插件信息和插件配置信息;
根据所述插件信息加载对应的插件脚本;
根据所述插件配置信息运行所述插件脚本得到所述插件脚本的执行结果,并返回所述执行结果。
11.一种流水线引擎实现装置,其特征在于,包括:
接收模块,用于接收流水线执行请求,并根据所述流水线执行请求获取预先存储的流水线配置文件;
判断模块,用于根据所述流水线配置文件分别判断流水线中每个任务的运行环境是否为云原生;
云原生模块,用于在所述运行环境为云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务容器镜像,并通过容器编排工具执行所述任务容器镜像;
执行机模块,用于在所述运行环境为非云原生的情况下,根据所述流水线配置文件生成与所述任务对应的任务指令,并通过执行机执行所述任务指令。
12.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被处理器运行时执行所述权利要求1至10任一项中所述的方法。
13.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311477655.3A CN117519800A (zh) | 2023-11-07 | 2023-11-07 | 一种流水线引擎实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311477655.3A CN117519800A (zh) | 2023-11-07 | 2023-11-07 | 一种流水线引擎实现方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117519800A true CN117519800A (zh) | 2024-02-06 |
Family
ID=89754351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311477655.3A Pending CN117519800A (zh) | 2023-11-07 | 2023-11-07 | 一种流水线引擎实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117519800A (zh) |
-
2023
- 2023-11-07 CN CN202311477655.3A patent/CN117519800A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114115852A (zh) | 可视化服务编排方法、装置、设备及介质 | |
US20130332524A1 (en) | Data service on a mobile device | |
CN109684054A (zh) | 信息处理方法及装置、电子设备及存储器 | |
CN112035228A (zh) | 一种资源调度方法及装置 | |
US10303463B2 (en) | Terminal management framework and terminal management method | |
CN110286939A (zh) | 软件开发工具包的开发方法、装置、设备及存储介质 | |
CN113835911B (zh) | 内网穿透代理方法、系统、主机及计算机可读存储介质 | |
CN113971110A (zh) | 接口测试方法、装置、设备与计算机可读存储介质 | |
CN108900627B (zh) | 一种网络请求方法、终端装置及存储介质 | |
CN114205230A (zh) | 云原生网元的配置方法、系统、介质及电子设备 | |
CN112583630B (zh) | 设备管理方法、装置、系统、设备及存储介质 | |
CN113360160A (zh) | 部署应用的方法、装置、电子设备和存储介质 | |
CN114546588A (zh) | 任务的部署方法、装置、存储介质及电子装置 | |
CN113934832A (zh) | 基于会话的交互处理方法、装置、设备、介质及程序产品 | |
CN110083366B (zh) | 应用运行环境的生成方法、装置、计算设备及存储介质 | |
CN111832273A (zh) | 目的报文的确定方法及装置、存储介质、电子装置 | |
CN116233217A (zh) | 基于路由的页面跳转方法、装置、电子设备及存储介质 | |
CN111240998A (zh) | 测试用例处理方法和装置 | |
CN116668520A (zh) | 一种基于网关的服务编排方法、系统、设备及存储介质 | |
CN117519800A (zh) | 一种流水线引擎实现方法及装置 | |
CN115437647A (zh) | 适配多框架的微服务部署方法、装置、终端及存储介质 | |
US11228502B2 (en) | Aggregation platform, requirement owner, and methods thereof | |
CN113254825A (zh) | 页面生成的方法、装置、电子设备和存储介质 | |
CN112564979A (zh) | 构建任务的执行方法、装置、计算机设备和存储介质 | |
US6678742B1 (en) | Object-oriented computer system and computer-readable storage medium which stores program |
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 |