CN113126961B - 流水线处理方法、装置和存储介质 - Google Patents

流水线处理方法、装置和存储介质 Download PDF

Info

Publication number
CN113126961B
CN113126961B CN202010042455.5A CN202010042455A CN113126961B CN 113126961 B CN113126961 B CN 113126961B CN 202010042455 A CN202010042455 A CN 202010042455A CN 113126961 B CN113126961 B CN 113126961B
Authority
CN
China
Prior art keywords
pipeline
task
template
target
pod
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.)
Active
Application number
CN202010042455.5A
Other languages
English (en)
Other versions
CN113126961A (zh
Inventor
段全锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, China Mobile Suzhou Software Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN202010042455.5A priority Critical patent/CN113126961B/zh
Publication of CN113126961A publication Critical patent/CN113126961A/zh
Application granted granted Critical
Publication of CN113126961B publication Critical patent/CN113126961B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)

Abstract

本发明公开了一种流水线处理方法、装置和存储介质,方法包括:确定至少一个目标流水线模板,根据所述至少一个目标流水线模板生成流水线任务;接收触发请求,根据所述触发请求触发所述流水线任务,生成所述流水线任务对应的流水线业务和所述流水线业务对应的任务Pod;基于所述任务Pod运行所述流水线业务,得到执行完成的流水线业务。本发明提供的方案中调度按照任务需求动态生成的任务Pod运行相应流水线业务,减少任务Pod的启动时间,并减少资源消耗。

Description

流水线处理方法、装置和存储介质
技术领域
本发明涉及云计算技术,尤其涉及一种流水线处理方法、装置和计算机可读存储介质。
背景技术
云原生应用的一个特点是应用的微服务化,微服务之间通过轻量级协议通信,与独体应用相比每个微服务可自由选择技术栈,例如开发的语言、框架和应用自动化构建工具等。
由于编译环境复杂、流水线配置繁琐等问题,相关流水线的运行效率不高,实现复杂,这导致云原生应用的实现效率不高。
发明内容
有鉴于此,本发明的主要目的在于提供一种流水线处理方法、装置和计算机可读存储介质。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例提供了一种流水线处理方法,所述方法包括:
确定至少一个目标流水线模板,根据所述至少一个目标流水线模板生成流水线任务;
接收触发请求,根据所述触发请求触发所述流水线任务,生成所述流水线任务对应的流水线业务和所述流水线业务对应的任务容器组(Pod);
基于所述任务Pod运行所述流水线业务,得到执行完成的流水线业务。
上述方案中,所述确定至少一个目标流水线模板,包括:
接收选择指令;所述选择指令用以从预设的流水线模板中选择至少一个目标流水线模板;
根据所述选择指令,从预设的流水线模板中选择至少一个目标流水线模板。
上述方案中,所述根据所述至少一个目标流水线模板生成流水线任务,包括:
接收针对所述至少一个目标流水线模板的任务参数,根据所述至少一个流水线模板和所述任务参数,生成流水线任务。
上述方案中,所述至少一个流水线模板中各流水线模板对应有容器化的任务脚本;所述根据所述触发请求生成所述流水线业务对应的任务Pod,包括:
将所述至少一个目标流水线模板中各目标流水线模板解析为任务Pod中的一个容器镜像;
根据至少一个容器镜像,生成所述流水线业务对应的任务Pod;所述任务Pod包括至少一个目标流水线模板中各目标流水线模板对应的容器。
上述方案中,所述基于所述任务Pod运行所述流水线业务,得到执行完成的流水线业务,包括:
针对所述至少一个目标流水线模板,基于所述任务Pod中相应目标流水线模板对应的容器执行相应的任务,直至所述至少一个目标流水线模板中各目标流水线模板对应的容器执行任务完毕。
本发明实施例还提供了一种流水线处理装置,所述装置包括:第一处理模块、第二处理模块和第三处理模块;其中:
所述第一处理模块,用于确定至少一个目标流水线模板,根据所述至少一个目标流水线模板生成流水线任务;
所述第二处理模块,用于接收触发请求,根据所述触发请求触发所述流水线任务,生成所述流水线任务对应的流水线业务和所述流水线业务对应的任务Pod;
所述第三处理模块,用于基于所述任务Pod运行所述流水线业务,得到执行完成的流水线业务。
上述方案中,所述第一处理模块,具体用于接收选择指令;所述选择指令用以从预设的流水线模板中选择至少一个目标流水线模板;
根据所述选择指令,从预设的流水线模板中选择至少一个目标流水线模板。
上述方案中,所述第一处理模块,具体用于接收针对所述至少一个目标流水线模板的任务参数,根据所述至少一个流水线模板和所述任务参数,生成流水线任务。
上述方案中,所述至少一个流水线模板中各流水线模板对应有容器化的任务脚本;所述第二处理模块,具体用于将所述至少一个目标流水线模板中各目标流水线模板解析为任务Pod中的一个容器镜像;
根据至少一个容器镜像,生成所述流水线业务对应的任务Pod;所述任务Pod包括至少一个目标流水线模板中各目标流水线模板对应的容器。
上述方案中,所述第三处理模块,具体用于针对所述至少一个目标流水线模板,基于所述任务Pod中相应目标流水线模板对应的容器执行相应的任务,直至所述至少一个目标流水线模板中各目标流水线模板对应的容器执行任务完毕。
本发明实施例提供了一种流水线处理装置,所述装置包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器;其中:
所述处理器用于运行所述计算机程序时,执行上述任一项流水线处理方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以上任一项所述流水线处理方法的步骤。
本发明实施例所提供的流水线处理方法、装置和计算机可读存储介质,确定至少一个目标流水线模板,根据所述至少一个目标流水线模板生成流水线任务;接收触发请求,根据所述触发请求触发所述流水线任务,生成所述流水线任务对应的流水线业务和所述流水线业务对应的任务Pod;基于所述任务Pod运行所述流水线业务,得到执行完成的流水线业务。本发明实施例中,在流水线运行时,Kubernetes调度按照任务需求(即按照选择的目标流水线模板)动态生成的任务Pod内的环境,减少任务Pod的启动时间,并减少资源消耗。
附图说明
图1为现有技术中的一种Master-Slave架构的示意图;
图2为现有技术中的一种Jenkins-kubernetes架构的示意图;
图3为本发明实施例提供的一种流水线处理方法的流程示意图;
图4为本发明实施例提供的一种流水线处理系统的组成结构示意图;
图5为本发明实施例提供的另一种流水线处理方法的示意图;
图6为本发明实施例提供的再一种流水线处理方法的流程示意图;
图7为本发明实施例提供的一种流水线处理装置的结构示意图;
图8为本发明实施例提供的另一种流水线处理装置的结构示意图。
具体实施方式
在结合实施例对本发明作进一步详细的说明之前,以下先对流水线进行如下说明。
云原生应用的一个特点是微服务化,应用拆分成大量可独立部署的单元,应用交付过程中依赖手工方式不能满足快速开发、快速交付的需求。持续集成/持续交付(CI/CD,Continuous Integration/Continuous Delivery)是一种软件开发实践,它加速了向用户提供可用软件的速度。其核心功能是流水线,使用自动化的方式代替软件开发过程中的手动操作,减少重复工作量和避免手工操作造成的失误,提高软件交付效率。
现有流水线大多基于Jenkins(一种开源软件项目)实现,架构主要有以下两种:
1、基于Master-Slave架构;具体如图1所示,代码提交到代码仓库后触发代码构建和部署流程,Jenkins的主节点(Master)负责管理创建的流水线,从节点(Slave)用来运行流水线任务。与单节点架构相比,多从节点的方案可以提高计算能力,但在任务多的时候需手工添加工作节点、即从节点,而在任务少的时候又会浪费计算资源。
2、基于容器平台Kubernetes(一种容器编排引擎)插件的Jenkins-kubernetes架构;Jenkins的业务节点实例的生命周期由Kubernetes控制。用户会在Jenkins上定义好一个全局的Pod模板,Pod模板中包括任务Pod的所有容器,由这些容器共同组成运行任务的环境。当流水线执行时,Jenkins的主节点(Master)实例会根据定义好的Pod配置在Kubernetes集群中创建一个新的从节点(Slave)来执行流水线任务。流水线运行完成后销毁从节点,这种用完即销毁的方式可以提高计算资源的利用率。
上述两种方案存在以下问题:
1、技术栈多,编译环境管理复杂。
具体来说,采用第一种方式,业务节点(如主节点、从节点)需要为每种语言安装对应的编译环境,如果新增的模块使用新语言开发,则需在业务节点上安装新的环境。在扩展Jenkins业务节点时较为麻烦,且多种编译环境下如果有多个项目容易产生环境冲突的问题;
采用第二种方式,只需将新增环境制作成Docker(一个开源的应用容器引擎)镜像,并修改全局的Pod配置,通过容器隔离的方式无需考虑多个项目之前环境冲突和扩展节点的问题,但在运行流水线时任务Pod中会启动配置中定义的所有容器,其中有些容器是不需要的,而启动多余的容器会增加任务Pod的启动时间且对于运行Pod的宿主机来说多余的进程会占用更多计算资源,极端情况下资源耗尽会导致宿主机崩溃。
2、部署单元多,新增和修改流水线配置繁琐,维护流水线成本高。
具体来说,原生Jenkinsfile的编写学习成本高,云原生应用可独立部署的单元多,每个单元都需要维护一条部署流水线,创建和更新配置需有专业维护人员进行维护,并且维护人员需要熟悉每个微服务的构建和部署。
基于此,在本发明的各种实施例中,确定至少一个目标流水线模板,根据所述至少一个目标流水线模板生成流水线任务;接收触发请求,根据所述触发请求触发所述流水线任务,生成所述流水线任务对应的流水线业务和所述流水线业务对应的任务Pod;基于所述任务Pod运行所述流水线业务,得到执行完成的流水线业务;如此,调度按照任务需求(即选择目标流水线模板)动态生成的任务Pod内的环境,减少任务Pod的启动时间,并减少资源消耗。
下面结合实施例对本发明再作进一步详细的说明。
图3为本发明实施例提供的一种流水线处理方法的流程示意图;所述方法可以应用于流水线处理系统,所述流水线处理系统可以加载在服务器中实现;如图3所示,所述流水线处理方法包括:
步骤301、确定至少一个目标流水线模板,根据所述至少一个目标流水线模板生成流水线任务;
步骤302、接收触发请求,根据所述触发请求触发所述流水线任务,生成所述流水线任务对应的流水线业务和所述流水线业务对应的任务容器组(Pod);
这里,一个任务Pod可以包括一个或多个相关容器。
步骤303、基于所述任务Pod运行所述流水线业务,得到执行完成的流水线业务。
具体地,所述步骤301中,确定至少一个目标流水线模板,包括:
接收选择指令;所述选择指令用以从预设的流水线模板中选择至少一个目标流水线模板;
根据所述选择指令,从预设的流水线模板中选择至少一个目标流水线模板。
具体来说,所述流水线处理系统提供有不同的流水线模板,并通过所述流水线处理系统的前端(所述前端用以实现流水线处理系统与用户之间的交互)提供给用户;由用户进行相应选择后,所述流水线处理系统接收到选择指令。
这里,所述前端可以为用户持有的终端,用户通过终端进行选择,终端确定相应的选择指令,并将选择指令发送给流水线处理系统。
所述流水线系统也可以自带人机交互界面,相应的,用户可以通过所述人机交互界面实现选择。
所述预设的流水线模板由开发人员预先设置并保存在流水线处理系统中。
具体地,针对流水线模板进行如下说明:
每个流水线模板包含流水线运行时的操作,所述操作以脚本的方式封装在Docker镜像中;
Jenkins的任务Pod运行时会使用上述镜像创建容器,创建得到的容器共同组成流水线任务的运行环境。
实际应用时,用户需要对选择的流水线模板进行相应配置,这里,所述流水线模板可以为用户提供可视化编辑功能,即针对每个流水线模板用户可以通过流水线模板的可视化编辑界面按照需求进行相应配置;所述流水线处理系统根据每条流水线的配置(即包含配置好的流水线模板的流水线),可以解析得到每个流水线对应的Jenkins文件(即Jenkinsfile)。这里,用户无需学习Jenkinsfile的语法,可以通过提供的流水线模板生成流水线业务,增加了流水线的易用性,降低使用成本。
上述针对每个流水线模板用户可以按照需求进行相应配置,可以由所述流水线处理系统的前端(如用户持有的终端或者流水线处理系统自身的人机交互界面)呈现可视化编辑界面,用户通过所述可视化编辑界面进行相应配置。
创建流水线时,用户根据自身所需的使用场景选择多个流水线模板以构造流水线人物,每个流水线模板对应的任务脚本均实现容器化;用户创建流水线时所选择的流水线模板被解析成任务Pod中的容器镜像,Jenkins在运行任务时使用选择的流水线模板相关的配置生成任务Pod。
具体地,针对Jenkins在运行任务时使用选择的流水线模板相关的配置生成任务Pod做如下说明:
按需选择不同的流水线模板会生成不同的Pod的配置,Jenkins在运行时使用生成的Pod的配置生成任务Pod,从而所述任务Pod仅与选择的流水线模板相关;与现有相关技术相比,无需使用所有的任务镜像,即只需启动较少的容器,从而可以减少任务Pod的启动时间,减少流水线运行时进程数,降低资源的消耗。
具体地,所述预设的流水线模板,包括以下至少之一:拉取代码、代码扫描类(如静态代码扫描)、单元测试类、代码构建类、制作镜像、构件入库、部署类(如应用部署)、消息类(如邮件通知)。
针对上述流水线模板,对每个流水线模板可以按照需求进行相应配置举例说明:
代码拉取:比如填写(即配置)Git仓库的代码仓库类型代码统一资源定位系统(URL,Uniform Resource Locator)和认证信息;
代码扫描类:如配置工具、运行环境等;
单元测试类:如配置工具、运行环境等;
代码构建类:如配置编译环境、版本号、构建工具等;
制作镜像:如配置镜像名称、版本号、dockerfile路径等;
构件入库:如配置制品仓库的URL、认证信息、待入库的各个镜像的名称等;
部署类:如配置应用的各种参数;
消息类:如配置邮件内容、收件人等信息。
具体地,所述确定至少一个目标流水线模板,还包括:
接收针对所述至少一个目标流水线模板中各目标流水线模板的任务参数;
这里,所述任务参数,即为上述针对每个流水线模板按照需求进行相应配置的配置参数。
相应地,所述根据所述至少一个目标流水线模板生成流水线任务,包括:
接收针对所述至少一个目标流水线模板的任务参数,根据所述至少一个流水线模板和所述任务参数,生成流水线任务。
具体地,所述接收触发请求,包括以下至少之一:手动触发、代码提交触发、定时触发、流水线触发和镜像触发。其中:
所述手动触发,包括:接收手动触发请求;根据所述手动触发请求触发所述流水线模板对应的流水线。这里,所述流水线处理系统可以设有触发按钮并显示在人机交互界面,用户点击所述触发按钮,所述流水线处理系统即可接收到手动触发请求。
所述代码提交触发,包括:接收代码仓库发送的代码触发请求;根据所述代码触发请求触发相应流水线任务;所述代码触发请求基于所述代码仓库接收的代码生成。这里,所述代码提交触发适用于在应用开发过程中,本地功能开发完成需能自动地将新代码部署到开发测试环境中与其他模块联调的场景。
所述定时触发,包括:接收代码仓库周期性发送的代码触发请求;根据所述代码触发请求周期性触发所述流水线任务。实际应用时,用户可以设置周期性的将代码仓库中的代码部署到开发测试环境中,即所述代码仓库周期性的接收代码;所述定时触发适用于需周期性将代码部署到测试环境验证代码正确性的场景。
所述流水线触发,包括:接收其他流水线的运行结果,基于其他流水线的运行结果确定触发请求;基于确定的触发请求触发相应的流水线任务。这里,当前流水线可以配置根据其他流水线(如上一条流水线)的运行结果来决定当前流水线是否运行,例如,第一条流水线是部署应用的,第二条流水线是发送邮件的,如果第一条流水线运行失败就触发第二条流水线给用户发邮件。
所述镜像触发,包括:接收镜像触发指令,根据所述镜像触发指令触发对应的流水线任务;所述镜像触发指令基于推送到镜像仓库的外部镜像生成。具体来说,当有外部镜像推送到镜像仓库,所述流水线处理系统中的镜像事件过滤器检测到镜像信息并推送给网关,以触发对应的流水线;流水线运行结束后将运行结果通知网关;所述镜像触发适用于以下场景:应用厂商的制品(开发的应用程序)在线下制作,需要更新到线上时,只需将镜像推送到生产环境就可以更新到线上。
针对定时触发和流水线触发进一步做如下说明:定时触发是周期性的将代码库中的代码部署到相应环境中,一个应用会有多个组件或者需要部署的第三方服务,每一个组件和所依赖的第三方服务的部署都是一条完整的流水线,当前流水线可以根据上一条流水线的运行结果判断是否运行;基于上述说明可以了解流水线也可支持流水线触发方式。
具体地,所述至少一个流水线模板中各流水线模板对应有容器化的任务脚本;
所述根据所述触发请求生成所述流水线业务对应的任务Pod,包括:
将所述至少一个目标流水线模板中各目标流水线模板解析为任务Pod中的一个容器镜像;
根据至少一个容器镜像,生成所述流水线业务对应的任务Pod;所述任务Pod包括至少一个目标流水线模板中各目标流水线模板对应的容器。
相应地,所述基于所述任务Pod运行所述流水线业务,得到执行完成的流水线业务,包括:
针对所述至少一个目标流水线模板,基于所述任务Pod中相应目标流水线模板对应的容器执行相应的任务,直至所述至少一个目标流水线模板中各目标流水线模板对应的容器执行任务完毕。
本发明实施例中的流水线处理方法,可以根据用户选择的流水线模板按需构造出任务Pod的配置,即在流水线运行时,由Kubernetes调度生成的任务Pod,所述任务Pod内的环境是按照任务需求动态生成;与相关现有技术相比,减少任务Pod初始化过程中启动的容器数量,即可减少运行任务期间宿主机的进程数,减少不必要的资源消耗,也即加快任务Pod的启动速度。另外,通过抽象出容器化应用打包和部署过程中需要的流水线模板,通过可视化的方式在显示界面中构造流水线任务,降低流水线的使用和维护成本。
图4为本发明实施例提供的一种流水线处理系统的组成结构示意图;如图4所示,所述流水线处理系统,包括以下至少之一:项目、流水线、代码库和报表;其中,所述项目是流水线和代码库的集合;
所述流水线作为核心功能,创建流水线和修改流水线均可以通过选择或修改流水线模板实现;
所述代码库包括流水线需要拉取的代码来源,例如,可以是已有的Git仓库、SVN(Subversion,一个开放源代码的版本控制系统)仓库;
所述报表是包括统计的流水线的运行情况。
其中,所述流水线模板,可以包括以下至少之一:
拉取代码的模板,如从SVN和Git中拉取代码的模板;
代码构建的模板,如编译Golang代码、C++代码和Java代码的模板;
代码扫描类模板,如对Golang、C++和Java语言进行代码扫描的模板;
单元测试类模板,如Golang和Java语言的单元测试模板;
制作镜像的模板,如确定镜像名称、版本号、dockerfile路径的模板;
构件入库的模板,如确定制品仓库的URL、认证信息、待入库的各个镜像的名称的模板;
应用部署模板,如配置应用的各种参数的模板;
消息类的模板,如邮件通知模板。
图5为本申请实施例提供另一种流水线处理方法的流程示意图;首先对图5所述方法应用的流水线处理系统包括的各组件进行以下说明:
bc-paas-cicd-apiserver为应用程序接口(API,Application ProgrammingInterface),用于处理流水线相关请求并为前端提供接口;
bc-paas-cicd-imageeventfilter为镜像事件过滤器,用于采集和过滤镜像事件,为网关提供触发流水线的依据;
Jenkins为开源的持续集成工具;
Kubernetes为开源的容器编排工具;
Harbor为开源的存储容器制品的仓库;
Sonarqube为开源的静态代码扫描工具;
SCM为代码版本控制器,可以包括:SVN仓库、Git仓库等。
图5所示流程具体包括:创建流水线的流程、触发流水线的流程、运行流水线流程。
所述创建流水线,包括:用户在前端(可以为提供人机交互界面的终端)选择多个流水线模板,并针对各流水线模板填写相应的任务参数(具体可以参考图3所示方法中的关于任务参数的描述,这里不再赘述);前端向bc-paas-cicd-apiserver发起创建流水线的请求,bc-paas-cicd-apiserver记录流水线配置信息,并向Jenkins发送请求以在Jenkins上创建流水线任务。
这里,所述流水线处理系统基于接收的用户选择的多个流水线模板和相应的任务参数,可以生成一条完整的流水线业务。
所述触发流水线,包括:手动触发流水线、代码触发流水线、镜像触发流水线;其中:
所述手动运行流水线的流程包括:用户通过前端向bc-paas-cicd-apiserver发起运行流水线的请求;所述流水线处理系统接收请求,Jenkins在Kubernetes上创建相应的任务Pod并运行相应的流水线业务;运行结束后将运行结果通知bc-paas-cicd-apiserver。
代码触发流水线的流程包括:开发人员将本地代码提交到代码仓库中,代码仓库接收到代码后,向bc-paas-cicd-apiserver(具体可以是向bc-paas-cicd-apiserver上设置的网络钩子(webhook)地址、即一种网关地址)发送触发请求,以触发对应的流水线任务,以创建相应的Pod并运行相应的流水线业务,运行结束后将运行结果通知网关。
所述镜像触发流水线的流程包括:外部镜像推送到镜像仓库;如:开发人员将线下制作的应用程序镜像推送到镜像仓库;镜像事件过滤器(bc-paas-cicd-imageeventfilter)检测到镜像信息推送给bc-paas-cicd-apiserver,触发对应的流水线任务,以创建相应的Pod并运行相应的流水线业务,运行结束后将运行结果通知网关。
这里,所述运行流水线的流程包括:Pod生成后依次执行配置的任务,例如:拉取代码、单元测试、代码构建、代码扫描、制作镜像、制品入库和应用部署等步骤,每一步都由Pod内的一个容器执行任务。如图5所示,包括有两条流水线,一条运行Golang语言应用的打包和部署任务,另一条运行Java语言的打包和部署任务,运行结束后将结果反馈给bc-paas-cicd-apiserver,由bc-paas-cicd-apiserver根据用户的配置决定是否触发下一条流水线。
图6为本发明实施例提供的再一种流水线处理方法的流程图;如图6所示,所述流水线处理方法,包括:
根据容器化应用打包部署的场景抽象出拉取代码、静态代码扫描、单元测试、代码构建、制作镜像、构件入库、应用部署和邮件通知等流水线模板,基于上述流水线模板生成相应的流水线业务。
上述方法采用一种或者多种触发流水线的方式,具体采用以下之一:手动触发、代码提交触发、定时触发和流水线触发。
针对上述手动触发、代码提交触发、定时触发和流水线触发的具体实现已在图3所示方法中说明,这里不再赘述。
图7为本发明实施例提供的一种流水线处理装置的结构示意图;如图7所示,所述装置包括:第一处理模块、第二处理模块和第三处理模块。其中:
所述第一处理模块,用于确定至少一个目标流水线模板,根据所述至少一个目标流水线模板生成流水线任务;
所述第二处理模块,用于接收触发请求,根据所述触发请求触发所述流水线任务,生成所述流水线任务对应的流水线业务和所述流水线业务对应的任务Pod;
所述第三处理模块,用于基于所述任务Pod运行所述流水线业务,得到执行完成的流水线业务。
具体地,所述第一处理模块,具体用于接收选择指令;所述选择指令用以从预设的流水线模板中选择至少一个目标流水线模板;
根据所述选择指令,从预设的流水线模板中选择至少一个目标流水线模板。
具体地,所述第一处理模块,具体用于接收针对所述至少一个目标流水线模板的任务参数,根据所述至少一个流水线模板和所述任务参数,生成流水线任务。
具体地,所述至少一个流水线模板中各流水线模板对应有容器化的任务脚本;所述第二处理模块,具体用于将所述至少一个目标流水线模板中各目标流水线模板解析为任务Pod中的一个容器镜像;
根据至少一个容器镜像,生成所述流水线业务对应的任务Pod;所述任务Pod包括至少一个目标流水线模板中各目标流水线模板对应的容器。
具体地,所述第三处理模块,具体用于针对所述至少一个目标流水线模板,基于所述任务Pod中相应目标流水线模板对应的容器执行相应的任务,直至所述至少一个目标流水线模板中各目标流水线模板对应的容器执行任务完毕。
需要说明的是:上述实施例提供的流水线处理装置在进行流水线处理时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的流水线处理装置与流水线处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图8为本发明实施例提供的另一种流水线处理装置的结构示意图。所述装置80包括:处理器801和用于存储能够在所述处理器上运行的计算机程序的存储器802;其中,所述处理器801用于运行所述计算机程序时,执行:确定至少一个目标流水线模板,根据所述至少一个目标流水线模板生成流水线任务;
接收触发请求,根据所述触发请求触发所述流水线任务,生成所述流水线任务对应的流水线业务和所述流水线业务对应的任务Pod;
基于所述任务Pod运行所述流水线业务,得到执行完成的流水线业务。
在一实施例中,所述处理器801还用于运行所述计算机程序时,执行:接收选择指令;所述选择指令用以从预设的流水线模板中选择至少一个目标流水线模板;
根据所述选择指令,从预设的流水线模板中选择至少一个目标流水线模板。
在一实施例中,所述处理器801还用于运行所述计算机程序时,执行:接收针对所述至少一个目标流水线模板的任务参数,根据所述至少一个流水线模板和所述任务参数,生成流水线任务。
在一实施例中,所述处理器801还用于运行所述计算机程序时,执行:
将所述至少一个目标流水线模板中各目标流水线模板解析为任务Pod中的一个容器镜像;
根据至少一个容器镜像,生成所述流水线业务对应的任务Pod;所述任务Pod包括至少一个目标流水线模板中各目标流水线模板对应的容器。
在一实施例中,所述处理器801还用于运行所述计算机程序时,执行:针对所述至少一个目标流水线模板,基于所述任务Pod中相应目标流水线模板对应的容器执行相应的任务,直至所述至少一个目标流水线模板中各目标流水线模板对应的容器执行任务完毕。
需要说明的是:上述实施例提供的流水线处理装置与流水线处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
实际应用时,所述装置80还可以包括:至少一个网络接口803。流水线处理装置80中的各个组件通过总线系统804耦合在一起。可理解,总线系统804用于实现这些组件之间的连接通信。总线系统804除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图8中将各种总线都标为总线系统804。其中,所述处理器804的个数可以为至少一个。网络接口803用于流水线处理装置80与其他设备之间有线或无线方式的通信。
本发明实施例中的存储器802用于存储各种类型的数据以支持流水线处理装置80的操作。
上述本发明实施例揭示的方法可以应用于处理器801中,或者由处理器801实现。处理器801可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器801中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器801可以是通用处理器、数字信号处理器(DSP,DiGital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器801可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器802,处理器801读取存储器802中的信息,结合其硬件完成前述方法的步骤。
在示例性实施例中,流水线处理装置80可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable LogicDevice)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)、通用处理器、控制器、微控制器(MCU,Micro Controller Unit)、微处理器(Microprocessor)、或其他电子元件实现,用于执行前述方法。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行:确定至少一个目标流水线模板,根据所述至少一个目标流水线模板生成流水线任务;
接收触发请求,根据所述触发请求触发所述流水线任务,生成所述流水线任务对应的流水线业务和所述流水线业务对应的任务Pod;
基于所述任务Pod运行所述流水线业务,得到执行完成的流水线业务。
在一实施例中,所述计算机程序被处理器运行时,执行:接收选择指令;所述选择指令用以从预设的流水线模板中选择至少一个目标流水线模板;
根据所述选择指令,从预设的流水线模板中选择至少一个目标流水线模板。
在一实施例中,所述计算机程序被处理器运行时,执行:接收针对所述至少一个目标流水线模板的任务参数,根据所述至少一个流水线模板和所述任务参数,生成流水线任务。
在一实施例中,所述计算机程序被处理器运行时,执行:将所述至少一个目标流水线模板中各目标流水线模板解析为任务Pod中的一个容器镜像;
根据至少一个容器镜像,生成所述流水线业务对应的任务Pod;所述任务Pod包括至少一个目标流水线模板中各目标流水线模板对应的容器。
在一实施例中,所述计算机程序被处理器运行时,执行:针对所述至少一个目标流水线模板,基于所述任务Pod中相应目标流水线模板对应的容器执行相应的任务,直至所述至少一个目标流水线模板中各目标流水线模板对应的容器执行任务完毕。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种流水线处理方法,其特征在于,所述方法包括:
确定至少一个目标流水线模板,根据所述至少一个目标流水线模板生成流水线任务;
接收触发请求,根据所述触发请求触发所述流水线任务,生成所述流水线任务对应的流水线业务和所述流水线业务对应的任务容器组Pod;
其中,所述至少一个目标流水线模板中各流水线模板对应有容器化的任务脚本;所述根据所述触发请求生成所述流水线业务对应的任务Pod,包括:将所述至少一个目标流水线模板中各目标流水线模板解析为任务Pod中的一个容器镜像;根据至少一个容器镜像,生成所述流水线业务对应的任务Pod;所述任务Pod包括至少一个目标流水线模板中各目标流水线模板对应的容器;
针对所述至少一个目标流水线模板,基于所述任务Pod中相应目标流水线模板对应的容器执行相应的任务,直至所述至少一个目标流水线模板中各目标流水线模板对应的容器执行任务完毕。
2.根据权利要求1所述的方法,其特征在于,所述确定至少一个目标流水线模板,包括:
接收选择指令;所述选择指令用以从预设的流水线模板中选择至少一个目标流水线模板;
根据所述选择指令,从预设的流水线模板中选择至少一个目标流水线模板。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述至少一个目标流水线模板生成流水线任务,包括:
接收针对所述至少一个目标流水线模板的任务参数,根据所述至少一个目标流水线模板和所述任务参数,生成流水线任务。
4.一种流水线处理装置,其特征在于,所述装置包括:第一处理模块、第二处理模块和第三处理模块;其中,
所述第一处理模块,用于确定至少一个目标流水线模板,根据所述至少一个目标流水线模板生成流水线任务;
所述第二处理模块,用于接收触发请求,根据所述触发请求触发所述流水线任务,生成所述流水线任务对应的流水线业务和所述流水线业务对应的任务Pod;
其中,所述至少一个目标流水线模板中各流水线模板对应有容器化的任务脚本;所述第二处理模块,具体用于将所述至少一个目标流水线模板中各目标流水线模板解析为任务Pod中的一个容器镜像;根据至少一个容器镜像,生成所述流水线业务对应的任务Pod;所述任务Pod包括至少一个目标流水线模板中各目标流水线模板对应的容器;
所述第三处理模块,用于针对所述至少一个目标流水线模板,基于所述任务Pod中相应目标流水线模板对应的容器执行相应的任务,直至所述至少一个目标流水线模板中各目标流水线模板对应的容器执行任务完毕。
5.根据权利要求4所述的装置,其特征在于,所述第一处理模块,具体用于接收选择指令;所述选择指令用以从预设的流水线模板中选择至少一个目标流水线模板;
根据所述选择指令,从预设的流水线模板中选择至少一个目标流水线模板。
6.根据权利要求4或5所述的装置,其特征在于,所述第一处理模块,具体用于接收针对所述至少一个目标流水线模板的任务参数,根据所述至少一个目标流水线模板和所述任务参数,生成流水线任务。
7.一种流水线处理装置,其特征在于,所述装置包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器;其中,
所述处理器用于运行所述计算机程序时,执行权利要求1至3任一项所述方法的步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至3任一项所述方法的步骤。
CN202010042455.5A 2020-01-15 2020-01-15 流水线处理方法、装置和存储介质 Active CN113126961B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010042455.5A CN113126961B (zh) 2020-01-15 2020-01-15 流水线处理方法、装置和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010042455.5A CN113126961B (zh) 2020-01-15 2020-01-15 流水线处理方法、装置和存储介质

Publications (2)

Publication Number Publication Date
CN113126961A CN113126961A (zh) 2021-07-16
CN113126961B true CN113126961B (zh) 2023-04-07

Family

ID=76771880

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010042455.5A Active CN113126961B (zh) 2020-01-15 2020-01-15 流水线处理方法、装置和存储介质

Country Status (1)

Country Link
CN (1) CN113126961B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108108239A (zh) * 2017-12-29 2018-06-01 咪咕文化科技有限公司 一种业务功能的提供方法、装置及计算机可读存储介质
US20180173502A1 (en) * 2016-12-21 2018-06-21 Aon Global Operations Ltd (Singapore Branch) Methods, Systems, and Portal Using Software Containers for Accelerating Aspects of Data Analytics Application Development and Deployment
CN110597552A (zh) * 2019-09-04 2019-12-20 浙江大搜车软件技术有限公司 项目持续集成流水线的配置方法、装置、设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180173502A1 (en) * 2016-12-21 2018-06-21 Aon Global Operations Ltd (Singapore Branch) Methods, Systems, and Portal Using Software Containers for Accelerating Aspects of Data Analytics Application Development and Deployment
CN108108239A (zh) * 2017-12-29 2018-06-01 咪咕文化科技有限公司 一种业务功能的提供方法、装置及计算机可读存储介质
CN110597552A (zh) * 2019-09-04 2019-12-20 浙江大搜车软件技术有限公司 项目持续集成流水线的配置方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN113126961A (zh) 2021-07-16

Similar Documents

Publication Publication Date Title
CN110389900B (zh) 一种分布式数据库集群测试方法、装置及存储介质
CN112214330A (zh) 集群中主节点的部署方法、装置及计算机可读存储介质
US20150100829A1 (en) Method and system for selecting and executing test scripts
US20150100832A1 (en) Method and system for selecting and executing test scripts
US20150100830A1 (en) Method and system for selecting and executing test scripts
CN107807815B (zh) 分布式处理任务的方法和装置
US20150100831A1 (en) Method and system for selecting and executing test scripts
CN111124286A (zh) 一种基于Libcloud的多云管理实现方法
CN111026634A (zh) 一种接口自动化测试系统、方法、装置及存储介质
CN110569113A (zh) 分布式任务的调度方法及系统、计算机可读存储介质
CN112559143A (zh) 任务调度方法、系统及计算设备
CN109739665A (zh) 接口管理方法、装置、服务器及存储介质
CN110569104A (zh) 深度学习系统中任务训练的管理方法和计算机存储介质
CN114610334A (zh) 产品可视化部署方法、装置、系统及存储介质
CN113849399A (zh) 多国产化平台下的多机协同软件的自动化测试系统和方法
CN113126961B (zh) 流水线处理方法、装置和存储介质
Thomas et al. Simulation factory: Taming application configuration and workflow on high-end resources
CN112379934A (zh) 一种云计算平台的部署方法及装置、存储介质
CN105530140A (zh) 一种解除用例和环境紧耦合的方法、装置和云调度系统
CN112363700A (zh) 智能合约的协同创建方法、装置、计算机设备和存储介质
Farhat et al. Safe Dynamic Reconfiguration of Concurrent Component-based Applications
CN109828893A (zh) 基于docker引擎的多任务android性能测试方法及用于执行该方法的系统
CN113626007B (zh) 连接器模型的应用方法、装置及服务器
CN115756419A (zh) 异构算法模型处理系统、方法、设备及介质
CN115712483A (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