CN113434554A - 持续集成流水线的构建方法及装置 - Google Patents

持续集成流水线的构建方法及装置 Download PDF

Info

Publication number
CN113434554A
CN113434554A CN202110742457.XA CN202110742457A CN113434554A CN 113434554 A CN113434554 A CN 113434554A CN 202110742457 A CN202110742457 A CN 202110742457A CN 113434554 A CN113434554 A CN 113434554A
Authority
CN
China
Prior art keywords
pipeline
configuration file
parameters
code
constructing
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
Application number
CN202110742457.XA
Other languages
English (en)
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.)
Qingdao Haier Technology Co Ltd
Haier Smart Home Co Ltd
Original Assignee
Qingdao Haier Technology Co Ltd
Haier Smart Home 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 Qingdao Haier Technology Co Ltd, Haier Smart Home Co Ltd filed Critical Qingdao Haier Technology Co Ltd
Priority to CN202110742457.XA priority Critical patent/CN113434554A/zh
Publication of CN113434554A publication Critical patent/CN113434554A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种持续集成流水线的构建方法及装置。其中,该方法包括:获取构建流水线所需的参数,其中,流水线用于通过代码描述软件的构建工程;依据参数构建流水线;将参数填充进预先设置好的配置文件模板,生成配置文件,其中,配置文件用于存储流水线包括的执行任务;依据配置文件执行流水线。本申请解决了现有基于Drone的持续集成技术过于依赖开发者角色,无法自动生成.drone.yml配置文件,存在学习和使用成本较高的技术问题。

Description

持续集成流水线的构建方法及装置
技术领域
本申请涉及软件技术领域,具体而言,涉及一种持续集成流水线的构建方法及装置。
背景技术
Drone作为自助式持续集成平台,广泛支持自动化软件构件和测试,通过配置文件.drone.yml、Drone插件和大量的定制环境变量满足开发团队一般的持续集成需求。
通常开发者在Drone服务端配置代码仓库设置,在代码仓库根目录中编写.drone.yml文件,即可通过设置好的触发模式,如push、commit、tag等触发流水线自动化执行,从而达到.drone.yml的流水线编排效果,如首先检出指定代码仓库内容,根据构建环节的配置打包构建代码,根据代码扫描环节的配置扫描代码内容生成质量报告,然后根据镜像生成环节的镜像仓库、Dockerfile等配置将构建结果生成指定版本镜像并推送到线上,最后进入测试环节、部署环节或通知流程。
这种持续集成方式极大的依赖于团队成员的开发者角色,需要相当一部分的学习成本,最基本的如.drone.yml的语法格式、语义内容、Drone插件的使用或定制等等。虽然极大解决了现有技术可定制性差、覆盖面固化、过度依赖服务器的问题,但要求使用者了解底层技术、具备一定的开发学习能力,局限住了使用者在团队中的角色。在开发团队实际使用过程中普遍过于依赖有开发能力的成员,不具备普适性。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种持续集成流水线的构建方法及装置,以至少解决现有基于Drone的持续集成技术过于依赖开发者角色,无法自动生成.drone.yml配置文件,存在学习和使用成本较高的技术问题。
根据本申请实施例的一个方面,提供了一种持续集成流水线的构建方法,包括:获取构建流水线所需的参数,其中,流水线用于通过代码描述软件的构建工程;依据参数构建流水线;将参数填充进预先设置好的配置文件模板,生成配置文件,其中,配置文件用于存储流水线包括的执行任务;依据配置文件执行流水线。
可选地,参数包括:代码仓库地址、待执行流水线分支、代码扫描超时时间、代码构建环境、代码构建命令、镜像构建配置文件、镜像仓库地址、部署环境服务实例、通知对象。
可选地,依据参数构建流水线,包括:对参数中的目标参数进行校验;激活代码仓库;将参数存储至数据库中,生成流水线。
可选地,对参数中的目标参数进行校验,包括:校验代码仓库地址是否有效,校验待执行流水线分支是否存在以及校验镜像构建配置文件是否存在。
可选地,将参数填充进预先设置好的配置文件模板,生成配置文件之前,上述方法还包括:设置标签,其中,标签用于标记流水线的名称以及流水线的版本与分支;通过Webhook的方式,在指定事件发生时,触发执行流水线;向配置插件请求配置文件,其中,配置插件用于部署配置文件。
可选地,配置文件还可以通过以下方式生成:从代码仓库的根目录中返回配置文件。
可选地,将参数填充进预先设置好的配置文件模板,生成配置文件之后,上述方法还包括:获取检索命令,检索命令用于查询流水线的信息;依据检索命令查询并输出静态数据与构建数据。
可选地,依据检索命令查询并输出静态数据与构建数据,包括如下至少之一:查询流水线的配置信息;查询流水线的构建数据,构建数据包括:构建记录、构建日志以及构建结果;查询代码仓库的分支以及代码仓库的版本信息;查询代码镜像文件的版本列表。
根据本申请实施例的另一方面,还提供了一种持续集成流水线的构建装置,包括:获取模块,用于获取构建流水线所需的参数;构建模块,用于依据参数构建流水线,其中,流水线用于通过代码描述软件的构建工程;生成模块,用于将参数填充进预先设置好的配置文件模板,生成配置文件,其中,配置文件用于存储流水线包括的执行任务;执行模块,用于依据配置文件执行流水线。
根据本申请实施例的再一方面,还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,在程序运行时控制非易失性存储介质所在设备执行以上的持续集成流水线的构建方法。
根据本申请实施例的再一方面,还提供了一种处理器,处理器用于运行存储在存储器中的程序,其中,程序运行时执行以上的持续集成流水线的构建方法。
在本申请实施例中,采用获取构建流水线所需的参数,其中,流水线用于通过代码描述软件的构建工程;依据参数构建流水线;将参数填充进预先设置好的配置文件模板,生成配置文件,其中,配置文件用于存储流水线包括的执行任务;依据配置文件执行流水线的方式,通过收集必要流水线配置内容自动生成.drone.yml配置文件,从而实现了大大降低了基于Drone的持续集成技术的使用学习成本的技术效果,进而解决了现有基于Drone的持续集成技术过于依赖开发者角色,无法自动生成.drone.yml配置文件,存在学习和使用成本较高技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种持续集成流水线的构建方法的流程图;
图2是根据本申请实施例的一种流水线的构建方法的流程图;
图3是根据本申请实施例的一种流水线管理时序图;
图4是根据本申请实施例的一种流水线执行原理图;
图5是根据本申请实施例的一种持续集成流水线的构建装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
持续集成(Continuous Integration,CI),是指不断整合项目更改并进行相应的测试,通常每天至少进行一次。
流水线(pipeline),通过代码来描述软件的构建工程,从获取源码、到自动化测试、到漏洞扫描、到部署全部用代码去描述。一旦用代码描述了,可以对pipeline进行版本控制。部署流水线是指从软件版本库到用户手中这一过程的自动化表现形式。
Drone,是一个用GO语言开发的基于容器运行的持续集成软件,Drone支持的版本控制系统包括GitHub,Gogs,GitLab等。
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。
容器,有效的将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求,这种技术就是容器技术。
Webhook,是一个API概念,是用户定义的HTTP回调,通常是由某些事件触发,例如将代码推送到存储库。
在背景技术中提到,现有基于Drone的持续集成技术过于依赖开发者角色,无法自动生成.drone.yml配置文件,存在学习和使用成本较高的技术问题。现有基于Drone的持续集成技术一般使用Drone提供的原始功能,因使用默认.drone.yml路径配置(代码仓库根目录),多环境或多模块等情况需不断更新.drone.yml,无法解除分支与配置的绑定,对于代码管理来说造成不便;因Drone以代码仓库repo为构建维度,原始功能只提供单次构建日志,无法以代码仓库分支维度快速查看流水线构建结果(镜像版本)。
此外,现有打包平台使用单台服务器打包方式,利用服务器本地的语言、构建工具环境执行代码编译构建与Docker镜像构建与推送,在打包、并发、移植等方面大大受限于部署方式。无法支持同种语言多版本用户可选构建方式;过于依赖服务器本地环境,如本地环境被人为或意外修改,可能会引起打包失败;并发任务数大大受限于服务器资源;服务提供方式是服务器环境加服务镜像,可移植性差;除代码编译与镜像构建外,无法定制拓展其他任务,如结果邮件通知等。
本申请提供的技术方案以提升打包支持语言及构建工具覆盖面、成功率、效率,服务可移植性、可定制化、易用性为目的,设计实现基于Drone的Gitlab持续集成方法(代码管理可以是Drone支持的其他版本管理平台,如Github、Gogs、Gitea、Bitbucket Cloud、BitBucket Server等。)。
根据本申请实施例,提供了一种持续集成流水线的构建方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本申请实施例的一种持续集成流水线的构建方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,获取构建流水线所需的参数,其中,流水线用于通过代码描述软件的构建工程;
步骤S104,依据参数构建流水线;
步骤S106,将参数填充进预先设置好的配置文件模板,生成配置文件,其中,配置文件用于存储流水线包括的执行任务;
在本步骤中,将构建流水线所需的参数填充进提前编写好的.drone.yml模板生成并输出完整的.drone.yml配置文件。
需要说明的是,.drone.yml配置文件用于执行流水线。
步骤S108,依据配置文件执行流水线。
通过上述步骤,通过收集必要流水线配置内容自动生成.drone.yml配置文件,从而实现了大大降低了基于Drone的持续集成技术的使用学习成本的技术效果。
根据本申请的一个可选的实施例,上述参数包括:代码仓库地址、待执行流水线分支、代码扫描超时时间、代码构建环境、代码构建命令、镜像构建配置文件、镜像仓库地址、部署环境服务实例、通知对象。
在本步骤中,通过页面配置的方式,输入定制流水线所需要的必要参数,如代码仓库地址、待执行流水线分支、代码扫描超时时间、代码构建环境、代码构建命令、镜像构建Dockerfile(即上文中的镜像构建配置文件)、镜像仓库地址、部署环境服务实例、通知对象等。
代码仓库地址与分支提供检出源代码的依据;扫描超时时间在有代码质量扫描任务时限制扫描时间长度;代码构建环境以镜像的方式提供,支持选择不同语言的不同版本或不同构建工具的构建环境,覆盖大多数的持续集成开发场景;构建命令支持自定义构建代码;镜像构建Dockerfile是构建镜像的配置文件;镜像仓库地址指定构建出的镜像的上传地址,以便部署服务继续使用;指定部署开发环服务实例,允许将流水线镜像构建环境成功上传的镜像部署到指定服务,完成快速发版;通知对象允许指定成员收到流水线的执行结果通知,以便及时处理。以上除代码仓库地址和分支外的所有参数均由本技术方案管理端以模板方式提供,通过简单的点选和修改完成流水线的配置内容的需求输入。
图2是根据本申请实施例的一种流水线的构建方法的流程图,如图2所示,该方法包括以下步骤:
步骤S202,对参数中的目标参数进行校验;
根据本申请的一个可选的实施例,执行步骤S202对参数中的目标参数进行校验,通过以下方式实现:校验代码仓库地址是否有效,校验待执行流水线分支是否存在以及校验镜像构建配置文件是否存在。
在本步骤中,管理端通过请求Gitlab接口校验代码仓库地址是否有效、分支是否存在、必要的配置文件如Dockerfile是否与用户输入路径匹配存在。通过校验将非法表单的提交流程尽早结束。
需要说明的是,Github是一个基于git实现的在线代码仓库。Gitlab是一个基于git实现的在线代码仓库软件,可以用gitlab自己搭建一个类似于github一样的系统。
步骤S204,激活代码仓库;
在本步骤中,管理端通过请求Drone接口,激活代码仓库流水线可触发性,并将需要的信息配置到Drone中,如镜像仓库用户名和密码等。代码仓库的激活流程实际是Drone配置Webhook到Gitlab代码仓库的过程,对使用者透明,让团队更聚焦于持续集成本身而不是繁杂的配置工作。
步骤S206,将参数存储至数据库中,生成流水线。
根据本申请的一个可选的实施例,在校验和激活成功结束后,管理端服务将流水线配置内容存储在Mysql中,以便查询、更新等使用。
需要说明的是,存储方式可以使用其他关系或非关系型数据库,如Mongo、Cmdb等。
在本申请的一些可选的实施例中,执行步骤S106将参数填充进预先设置好的配置文件模板,生成配置文件之前,还需要设置标签,其中,标签用于标记流水线的名称以及流水线的版本与分支;通过Webhook的方式,在指定事件发生时,触发执行流水线;向配置插件请求配置文件,其中,配置插件用于部署配置文件。
通过Drone服务端允许的方式触发流水线执行,本申请实施例选择git tag的方式,以便于代码与构建结果版本一一对应,版本管理清晰明确。通过规定tag的命名规范,可以标记流水线名称、版本与分支,因为tag版本与镜像版本一致,从镜像版本也可以倒推出代码版本,形成代码版本与镜像版本的完全对应。触发的实现可以通过使用者本地git命令推送或页面点选操作,请求管理端封装好的接口。
通过Webhook的方式,在指定事件发生时,触发Drone服务端执行流水线,对使用或开发者透明。
Drone支持在部署服务端时以插件的方式配置.drone.yml的获取方式。
由管理端将定制存储入库的参数转化生成符合语法语义规范的可执行.drone.yml文件返回给Drone服务端,这个过程就是管理端服务从数据库中请求指定流水线配置内容,填充进提前编写好的.drone.yml模板生成并输出完整的配置文件,从而形成用户定制流水线可实际执行的闭环。
Drone服务端取得.drone.yml文件后,按文件配置执行编排好的任务。此处形成的执行数据由本技术管理端重新组装展示。
在本申请的另一个可选的实施例中,配置文件还可以通过以下方式生成:从代码仓库的根目录中返回配置文件。
本申请实施例也扩展性的支持原始的.drone.yml路径(即请求返回nil),即允许使用者通过页面选择使用代码仓库中自开发编写的.drone.yml文件。
在本申请的另一些可选的实施例中,执行步骤S106将参数填充进预先设置好的配置文件模板,生成配置文件之后,获取检索命令,检索命令用于查询流水线的信息;依据检索命令查询并输出静态数据与构建数据。
根据本申请的一个可选的实施例,依据检索命令查询并输出静态数据与构建数据,包括如下至少之一:查询流水线的配置信息;查询流水线的构建数据,构建数据包括:构建记录、构建日志以及构建结果;查询代码仓库的分支以及代码仓库的版本信息;查询代码镜像文件的版本列表。
用户查看定制存储完成的流水线信息,可根据流水线名称或代码仓库进行简单检索,由管理端实现静态数据与构建数据的组装与输出。
a)基本静态数据:查询Mysql根据输入参数取得流水线完整配置信息。
b)构建数据:通过Drone接口查询构建记录、构建日志、构建结果等信息。
c)Gitlab版本信息:通过Gitlab接口查询代码仓库分支、版本信息。
d)镜像版本信息:通过查询镜像仓库取得镜像版本列表。
e)管理端组装数据:以基本配置数据为基础,通过流水线名称、代码仓库地址、分支等组装静态数据与执行生成数据,最终形成分支维度查看构建版本、构建结果、镜像版本的匹配列表,以便于应用于不同分支的流水线的执行数据的分类快捷查看,而不需要通过翻找构建日志获得关键数据。
本申请提供的上述方法,由于使用Drone这一技术手段,原生于容器,不依赖于服务器,可移植性极大的提升、并发任务数量可灵活配置。因为Drone的镜像化插件式流水线任务实现方式,流水线执行各环节使用容器的形式,不依赖于服务器环境,大大降低了服务器环境更改导致流水线执行失败的可能性。同时由于以容器的方式执行流水线任务,代码编译构建的环境就是镜像,极大的提升了可支持语言、构建方式的覆盖面。
此外,本申请提供的上述方法,收集必要流水线配置参数自动生成.drone.yml配置文件,大大降低了使用学习成本,对使用者来说更关注于持续集成本身;因为本技术使用配置文件插件预置到Drone服务端中,在流水线被触发时允许使用存储在数据库中而不是代码仓库中的.drone.yml配置文件,解绑代码与配置,避免了因配置内容频繁更改代码仓库内容,消除了因.drone.yml分支内容不同而引起的代码仓库管理问题,这种方式也为不同部署环境和不同代码模块的流水线区分和管理提供了便利;因存储流水线配置内容、收集构建信息和构建结果,极大匹配了分支管理流程,可以提供流水线的全生命周期信息查看,为运维与管理提供了便捷。
下面结合附图以一个具体的实施例对上述方法进行说明:
本申请提供的技术方案从使用层面分类为持续集成流水线管理和执行两类场景。流水线管理提供流水线配置内容创建、修改、查看、删除、构建记录、构建日志、构建结果信息归类查看等功能。流水线执行提供手动触发执行流水线功能,按照配置存储的编排任务执行出确定结果,如将指定代码仓库的某一版本代码构建生成Docker镜像并上传至镜像仓库,发版至指定服务的测试环境,并邮件某些成员通知流水线执行信息、结果和状态(成功/失败)。
图3是根据本申请实施例的一种流水线管理时序图,如图3所示,流水线管理包括以下步骤:
1.定制流水线:用户通过页面配置的方式,输入定制流水线所需要的必要参数,如代码仓库地址、待执行流水线分支、代码扫描超时时间、代码构建环境、代码构建命令、镜像构建Dockerfile、镜像仓库地址、部署环境服务实例、通知对象等等。
1.1校验:管理端通过请求Gitlab接口校验代码仓库地址是否有效、分支是否存在、必要的配置文件如Dockerfile是否与用户输入路径匹配存在,通过校验将非法表单的提交流程尽早结束。
1.2激活代码仓库:管理端通过请求Drone接口,激活代码仓库流水线可触发性,并将需要的信息配置到Drone中,如镜像仓库用户名和密码等。代码仓库的激活流程实际是Drone配置Webhook到Gitlab repo的过程,对使用者透明,让团队更聚焦于持续集成本身而不是繁杂的配置工作。
1.3存储:在校验和激活成功结束后,管理端服务将流水线配置内容存储在Mysql中,以便查询、更新等使用。
2.查询流水线:用户查看定制存储完成的流水线信息,可根据流水线名称或代码仓库进行简单检索,由本技术的管理端实现静态数据与构建数据的组装与输出。
2.1查询流水线配置信息,并返回存储结果。
2.2收集并返回构建信息。
2.3收集repo、branch、tag信息,并返回代码仓库信息。
2.4查询匹配镜像信息,并返回镜像信息。
2.5查询组装分支、构建情况、构建镜像结果。
图4是根据本申请实施例的一种流水线执行原理图,如图4所示,流水线执行包括以下步骤:
1.手动触发:通过Drone服务端允许的方式触发流水线执行,选择git tag的方式,以便于代码与构建结果版本一一对应,版本管理清晰明确。通过规定tag的命名规范,可以标记流水线名称、版本与分支,因为tag版本与镜像版本一致,从镜像版本也可以倒推出代码版本,形成代码版本与镜像版本的完全对应。触发的实现可以通过使用者本地git命令推送或页面点选操作,请求管理端封装好的接口。
2.触发执行:Drone通过Webhook的方式,在指定事件发生时,触发Drone服务端执行流水线,对使用或开发者透明。
3.向配置插件请求配置文件:Drone支持在部署服务端时以插件的方式配置.drone.yml获取方式,本申请提供的方案配置管理端地址。
4.由管理端将定制存储入库的配置内容转化生成符合语法语义规范的可执行.drone.yml文件返回给Drone服务端,这个过程就是管理端服务从数据库中请求指定流水线配置内容,填充进提前编写好的.drone.yml模板生成并输出完整的配置文件,从而形成图3中用户定制流水线可实际执行的闭环。本技术也扩展性的支持原始的.drone.yml路径(请求返回nil),即允许使用者通过页面选择使用代码仓库中自开发编写的.drone.yml。
4.1Drone管理端收到默认路径指示时向Gitlab请求.drone.yml文件;
4.2Gitlab成功返回代码仓库根目录中的.drone.yml配置文件。
5.流水线执行:Drone服务端取得.drone.yml文件后,按文件配置执行编排好的任务。
本申请提供的技术方案基于Drone实现用户定制流水线编排执行,支持同语言不同版本的构建环境选择,流水线每个任务环节通过容器的方式执行,不依赖于服务器环境;服务通过镜像部署,并发任务数通过环境变量配置于服务中,可根据实际情况通过改变环境变量重新部署的方式,灵活增加或减少并发任务容量,不依赖于部署环境,可移植性大大提高。另外,本申请提供的技术方案可通过提供基础模板的方式,支持快速部署、通知等定制任务的实现。
图5是根据本申请实施例的一种持续集成流水线的构建装置的结构框图,如图5所示,该装置包括:
获取模块50,用于获取构建流水线所需的参数;
构建模块52,用于依据参数构建流水线,其中,流水线用于通过代码描述软件的构建工程;
生成模块54,用于将参数填充进预先设置好的配置文件模板,生成配置文件,其中,配置文件用于存储流水线包括的执行任务;
执行模块56,用于依据配置文件执行流水线。
需要说明的是,图5所示实施例的优选实施方式可以参见图1所示实施例的相关描述,此处不再赘述。
本申请实施例还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,在程序运行时控制非易失性存储介质所在设备执行以上的持续集成流水线的构建方法。
上述非易失性存储介质用于存储执行以下功能的程序:获取构建流水线所需的参数,其中,流水线用于通过代码描述软件的构建工程;依据参数构建流水线;将参数填充进预先设置好的配置文件模板,生成配置文件,其中,配置文件用于存储流水线包括的执行任务;依据配置文件执行流水线。
本申请实施例还提供了一种处理器,处理器用于运行存储在存储器中的程序,其中,程序运行时执行以上的持续集成流水线的构建方法。
上述处理器用于运行执行以下功能的程序:获取构建流水线所需的参数,其中,流水线用于通过代码描述软件的构建工程;依据参数构建流水线;将参数填充进预先设置好的配置文件模板,生成配置文件,其中,配置文件用于存储流水线包括的执行任务;依据配置文件执行流水线。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (11)

1.一种持续集成流水线的构建方法,其特征在于,包括:
获取构建流水线所需的参数,其中,所述流水线用于通过代码描述软件的构建工程;
依据所述参数构建所述流水线;
将所述参数填充进预先设置好的配置文件模板,生成配置文件,其中,所述配置文件用于存储所述流水线包括的执行任务;
依据所述配置文件执行所述流水线。
2.根据权利要求1所述的方法,其特征在于,所述参数包括:代码仓库地址、待执行流水线分支、代码扫描超时时间、代码构建环境、代码构建命令、镜像构建配置文件、镜像仓库地址、部署环境服务实例、通知对象。
3.根据权利要求2所述的方法,其特征在于,依据所述参数构建所述流水线,包括:
对所述参数中的目标参数进行校验;
激活代码仓库;
将所述参数存储至数据库中,生成所述流水线。
4.根据权利要求3所述的方法,其特征在于,对所述参数中的目标参数进行校验,包括:
校验所述代码仓库地址是否有效,校验所述待执行流水线分支是否存在以及校验所述镜像构建配置文件是否存在。
5.根据权利要求1所述的方法,其特征在于,将所述参数填充进预先设置好的配置文件模板,生成配置文件之前,所述方法还包括:
设置标签,其中,所述标签用于标记所述流水线的名称以及所述流水线的版本与分支;
通过Webhook的方式,在指定事件发生时,触发执行所述流水线;
向配置插件请求所述配置文件,其中,所述配置插件用于部署所述配置文件。
6.根据权利要求3所述的方法,其特征在于,所述配置文件还可以通过以下方式生成:
从所述代码仓库的根目录中返回所述配置文件。
7.根据权利要求1所述的方法,其特征在于,将所述参数填充进预先设置好的配置文件模板,生成配置文件之后,所述方法还包括:
获取检索命令,所述检索命令用于查询所述流水线的信息;
依据所述检索命令查询并输出静态数据与构建数据。
8.根据权利要求7所述的方法,其特征在于,依据所述检索命令查询并输出静态数据与构建数据,包括如下至少之一:
查询所述流水线的配置信息;
查询所述流水线的构建数据,所述构建数据包括:构建记录、构建日志以及构建结果;
查询代码仓库的分支以及所述代码仓库的版本信息;
查询代码镜像文件的版本列表。
9.一种持续集成流水线的构建装置,其特征在于,包括:
获取模块,用于获取构建流水线所需的参数;
构建模块,用于依据所述参数构建所述流水线,其中,所述流水线用于通过代码描述软件的构建工程;
生成模块,用于将所述参数填充进预先设置好的配置文件模板,生成配置文件,其中,所述配置文件用于存储所述流水线包括的执行任务;
执行模块,用于依据所述配置文件执行所述流水线。
10.一种非易失性存储介质,其特征在于,所述非易失性存储介质包括存储的程序,其中,在所述程序运行时控制所述非易失性存储介质所在设备执行权利要求1至8中任意一项所述的持续集成流水线的构建方法。
11.一种处理器,其特征在于,所述处理器用于运行存储在存储器中的程序,其中,所述程序运行时执行权利要求1至8中任意一项所述的持续集成流水线的构建方法。
CN202110742457.XA 2021-06-30 2021-06-30 持续集成流水线的构建方法及装置 Pending CN113434554A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110742457.XA CN113434554A (zh) 2021-06-30 2021-06-30 持续集成流水线的构建方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110742457.XA CN113434554A (zh) 2021-06-30 2021-06-30 持续集成流水线的构建方法及装置

Publications (1)

Publication Number Publication Date
CN113434554A true CN113434554A (zh) 2021-09-24

Family

ID=77758395

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110742457.XA Pending CN113434554A (zh) 2021-06-30 2021-06-30 持续集成流水线的构建方法及装置

Country Status (1)

Country Link
CN (1) CN113434554A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114168213A (zh) * 2021-10-26 2022-03-11 青岛海尔科技有限公司 基于Jenkins的软件发布方法、装置和电子设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108958721A (zh) * 2018-07-09 2018-12-07 中国科学院软件研究所 一种智能化持续集成与持续部署流水线方法及系统
CN109766258A (zh) * 2018-11-30 2019-05-17 北京奇艺世纪科技有限公司 一种性能测试方法、装置及计算机可读存储介质
CN111190584A (zh) * 2019-12-10 2020-05-22 平安健康保险股份有限公司 Ehis-db系统版本发布方法、装置、计算机设备和存储介质
CN111552629A (zh) * 2020-03-20 2020-08-18 北京海致星图科技有限公司 一种基于Docker的持续集成测试环境搭建方法及系统
CN111722842A (zh) * 2020-05-29 2020-09-29 北京宝兰德软件股份有限公司 流水线编排方法、装置、电子设备和存储介质
CN111930421A (zh) * 2020-07-31 2020-11-13 中电鸿信信息科技有限公司 一种基于DevOps的自由编排监控系统及其使用方法
CN112596854A (zh) * 2020-12-15 2021-04-02 中国建设银行股份有限公司 一种持续集成流水线运行的方法和装置
CN112711411A (zh) * 2020-12-22 2021-04-27 宝付网络科技(上海)有限公司 一种基于Kubernetes及docker的CI/CD流水线系统
CN112965786A (zh) * 2021-03-10 2021-06-15 神州数码融信云技术服务有限公司 一种基于容器化的持续集成和持续交付方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108958721A (zh) * 2018-07-09 2018-12-07 中国科学院软件研究所 一种智能化持续集成与持续部署流水线方法及系统
CN109766258A (zh) * 2018-11-30 2019-05-17 北京奇艺世纪科技有限公司 一种性能测试方法、装置及计算机可读存储介质
CN111190584A (zh) * 2019-12-10 2020-05-22 平安健康保险股份有限公司 Ehis-db系统版本发布方法、装置、计算机设备和存储介质
CN111552629A (zh) * 2020-03-20 2020-08-18 北京海致星图科技有限公司 一种基于Docker的持续集成测试环境搭建方法及系统
CN111722842A (zh) * 2020-05-29 2020-09-29 北京宝兰德软件股份有限公司 流水线编排方法、装置、电子设备和存储介质
CN111930421A (zh) * 2020-07-31 2020-11-13 中电鸿信信息科技有限公司 一种基于DevOps的自由编排监控系统及其使用方法
CN112596854A (zh) * 2020-12-15 2021-04-02 中国建设银行股份有限公司 一种持续集成流水线运行的方法和装置
CN112711411A (zh) * 2020-12-22 2021-04-27 宝付网络科技(上海)有限公司 一种基于Kubernetes及docker的CI/CD流水线系统
CN112965786A (zh) * 2021-03-10 2021-06-15 神州数码融信云技术服务有限公司 一种基于容器化的持续集成和持续交付方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114168213A (zh) * 2021-10-26 2022-03-11 青岛海尔科技有限公司 基于Jenkins的软件发布方法、装置和电子设备

Similar Documents

Publication Publication Date Title
US11775486B2 (en) System, method and computer program product for database change management
US9940108B2 (en) Automated merging in a software development environment
US9721216B2 (en) Solution that automatically recommends design assets when making architectural design decisions for information services
CN105324769B (zh) 用于产生用于自动数据库迁移的脚本集的解决方案
US8010578B2 (en) Method of refactoring a running database system
CN112083948B (zh) 一种基于数据配置化的自动化构建部署方法及工具
CN111258614B (zh) 项目第三方库升级异常检测方法及系统、设备及存储介质
CN109683905A (zh) 一种系统自动发布方法
CN111651352B (zh) 一种仓库代码的合并方法及装置
CN114297056A (zh) 一种自动化测试方法及系统
CN114253562A (zh) 一种服务器软件包的管理及部署方法及其系统
CN110941629B (zh) 元数据处理方法、装置、设备及计算机可读存储介质
CN113434554A (zh) 持续集成流水线的构建方法及装置
CN108491218B (zh) 一种数据库变更文件生成的方法和装置
US20160085544A1 (en) Data management system
CN110659063A (zh) 软件项目重构方法、装置、计算机装置及存储介质
KR100656419B1 (ko) 정보시스템 개발장치 및 방법
CN111984882A (zh) 数据处理方法、系统及设备
CN117312270A (zh) 一种数据库自动化构建和部署的变更管理方法
JP6336919B2 (ja) ソースコードレビュー方法及びそのシステム
CN113110872B (zh) 一种Android自动化配置构建平台及操作方法
US20150347402A1 (en) System and method for enabling a client system to generate file system operations on a file system data set using a virtual namespace
CN117348916B (zh) 脚本生成方法、装置、设备及存储介质
CN110442331B (zh) 一种自动化搭建代码框架的方法及系统
CN115794312A (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