基于可定制模板的Jenkins作业生成方法及系统

文档序号:1073177 发布日期:2020-10-16 浏览:23次 >En<

阅读说明:本技术 基于可定制模板的Jenkins作业生成方法及系统 (Jenkins job generation method and system based on customizable template ) 是由 周晓庆 沈震宇 白佳乐 许振峰 于 2020-06-30 设计创作,主要内容包括:本发明提供了一种基于可定制模板的Jenkins作业生成方法及系统,所述方法包括:根据用户输入的作业生成请求确定作业模板;根据所述作业生成请求的作业信息和作业模板确定对应的变量,对所述变量进行变量替换得到变量值;根据所述变量值和所述作业模板形成Jenkins作业,本发明可实现基于作业模板的作业自动生成,提高作业生成的准确度和效率,降低成本。(The invention provides a method and a system for generating Jenkins operation based on a customizable template, wherein the method comprises the following steps: determining a job template according to a job generation request input by a user; determining a corresponding variable according to the job information of the job generation request and a job template, and performing variable replacement on the variable to obtain a variable value; according to the method and the device, Jenkins operation is formed according to the variable value and the operation template, operation automatic generation based on the operation template can be realized, the accuracy and efficiency of operation generation are improved, and the cost is reduced.)

基于可定制模板的Jenkins作业生成方法及系统

技术领域

本发明涉及计算机技术领域,尤其涉及一种基于可定制模板的Jenkins作业生成方法及系统。

背景技术

JENKINS作为一款简单易用的开源持续集成框架,被广泛应用于构建、部署、测试等各种自动化任务,通过页面交互式操作创建相应作业,用户可以方便地按需定义作业执行步骤,完成符合应用需求的持续集成流水线。然而在规模较大的公司或者组织中,应用的数量相当庞大,并且随着微服务架构的持续演进,应用及服务数量还会持续增长,这对作业的维护造成了极大的挑战。成千上万的作业通过传统复制修改的方式维护不仅容易出错,而且重复操作也会浪费大量的人力。因此迫切需要一种便捷高效的方法来解决上述问题,降低应用开展持续集成的投入成本。

发明内容

本发明的一个目的在于提供一种基于可定制模板的Jenkins作业生成方法,实现基于作业模板的作业自动生成,提高作业生成的准确度和效率,降低成本。本发明的另一个目的在于提供一种基于可定制模板的Jenkins作业生成系统。本发明的再一个目的在于提供一种计算机设备。本发明的还一个目的在于提供一种可读介质。

为了达到以上目的,本发明一方面公开了一种基于可定制模板的Jenkins作业生成方法,包括:

根据用户输入的作业生成请求确定作业模板;

根据所述作业生成请求的作业信息和作业模板确定对应的变量,对所述变量进行变量替换得到变量值;

根据所述变量值和所述作业模板形成Jenkins作业。

优选的,进一步包括预先形成所述作业模板的步骤。

优选的,所述形成所述作业模板具体包括:

获取Jenkins的作业XML配置信息;

根据所述XML配置信息确定作业模板和对应的变量。

优选的,所述形成所述作业模板进一步包括:

根据形成的所有作业模板的作业类型确定所有作业模板中包括具有生成先后顺序的多个作业模板为流水线的作业模板集。

优选的,所述获取Jenkins的作业XML配置信息,根据所述XML配置信息确定作业模板和对应的变量具体包括:

通过Jenkins REST API获取Jenkins作业列表;

根据所述Jenkins作业列表选择待抽取模板的作业,确定作业类型和作业模板名称;

根据选定的待抽取模板作业,通过Jenkins REST API获取对应的作业XML配置信息;

将所述作业XML配置信息格式化后向用户展示,根据用户指令确定格式化后的XML配置信息中的变量。

优选的,所述根据所述作业生成请求的作业信息和作业模板确定对应的变量具体包括:

根据所述作业模板确定对应的变量;

根据所述作业生成请求的应用、版本和作业类型的作业信息进行所述变量替换得到变量值。

优选的,进一步还包括:

根据用户输入的模板修改信息修改对应的作业模板;

根据修改后的作业模板对根据该作业模板已生成的Jenkins作业进行相应修改。

本发明还公开了一种基于可定制模板的Jenkins作业生成系统,包括:

模板确定单元,用于根据用户输入的作业生成请求确定作业模板;

变量替换单元,用于根据所述作业生成请求的作业信息和作业模板确定对应的变量,对所述变量进行变量替换得到变量值;

作业生成单元,用于根据所述变量值和所述作业模板形成Jenkins作业。

本发明还公开了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,

所述处理器执行所述程序时实现如上所述方法。

本发明还公开了一种计算机可读介质,其上存储有计算机程序,

该程序被处理器执行时实现如上所述方法。

本发明将整体结构相似、仅参数设置不同的作业抽取得到共用模板,根据用户输入的作业生成请求确定作业模板和需要用户通过输入参数值设置的变量值,根据作业模板和变量值形成Jenkins作业。本发明实现不同类型作业模板的抽取和管理,并可根据用户输入的部分信息基于作业模板自动生成各类Jenkins作业,无需登录Jenkins逐个创建或复制,大幅降低应用持续集成的投入成本。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出本发明基于可定制模板的Jenkins作业生成方法一个具体实施例的流程图;

图2示出本发明基于可定制模板的Jenkins作业生成方法一个具体实施例S000的流程图;

图3示出本发明基于可定制模板的Jenkins作业生成方法一个具体实施例包括S030的S000的流程图;

图4示出本发明基于可定制模板的Jenkins作业生成方法一个具体实施例S010和S020的流程图;

图5示出本发明基于可定制模板的Jenkins作业生成方法一个具体实施例S200的流程图;

图6示出本发明基于可定制模板的Jenkins作业生成方法一个具体实施例S400的流程图;

图7示出本发明基于可定制模板的Jenkins作业生成系统一个具体实施例的结构图;

图8示出适于用来实现本发明实施例的计算机设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明的一个或多个实施例中,Jenkins是指一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

在本发明的一个或多个实施例中,XML是指可扩展的标识语言(eXtensibleMarkupLanguage),为标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。XML配置信息是以XML格式记载的配置信息。

在本发明的一个或多个实施例中,API是指应用程序接口(Application ProgramInterface),应用程序接口是一组定义、程序及协议的集合,通过API接口实现计算机软件之间的相互通信。API的一个主要功能是提供通用功能集。程序员通过调用API函数对应用程序进行开发,可以减轻编程任务。API同时也是一种中间件,为各种不同平台提供数据共享。

在本发明的一个或多个实施例中,XPath是一种XML路径语言。它使用的一个非XML语法提供一种灵活地定位XML文档的不同部分的方法。它同时也可以用于检测文档中某个节点是否与某个模式(pattern)匹配。

在现有的Jenkins作业生成过程中,需要登录Jenkins逐个进行创建或复制形成Jenkins作业。但是,在规模较大的公司或者组织中,由于应用数量庞大且多版本并行开发,Jenkins作业创建和维护的成本相当高且手工配置容易出错。由此,发明人通过分析Jenkins作业得出,不同应用针对同一目的所维护的作业或者同一应用针对不同并行开发版本所维护的作业,其整体结构基本相似,主要是参数设置以及少数步骤存在差异,为此可以为同质作业抽取共用的模板,减少维护的作业类型。从而,可以基于不同作业类型的公共作业模板,例如构建、部署和自动化测试等作业模板,实现Jenkins作业创建更新的全自动化,显著降低持续集成及流水线的维护成本。

根据本发明的一个方面,本实施例公开了一种基于可定制模板的Jenkins作业生成方法。如图1所示,本实施例中,所述方法包括:

S100:根据用户输入的作业生成请求确定作业模板。

S200:根据所述作业生成请求的作业信息和作业模板确定对应的变量,对所述变量进行变量替换得到变量值。

S300:根据所述变量值和所述作业模板形成Jenkins作业。

本发明将整体结构相似、仅参数设置不同的作业抽取得到共用模板,根据用户输入的作业生成请求确定作业模板和需要用户通过输入参数值设置的变量值,根据作业模板和变量值形成Jenkins作业。本发明实现不同类型作业模板的抽取和管理,并可根据用户输入的部分信息基于作业模板自动生成各类Jenkins作业,无需登录Jenkins逐个创建或复制,大幅降低应用持续集成的投入成本。

在优选的实施方式中,所述方法进一步包括预先形成所述作业模板的步骤S000。为了解决海量JENKINS作业维护成本高,手工配置容易出错等问题,通过公共作业模板的抽取以及灵活的模板实例化规则,实现作业创建和维护的全自动化。本发明基于同质作业抽取公共模板,实现Jenkins作业资产的继承和复用,减少作业类型,提升标准化程度,解决手工配置容易出错或出现作业配置不一致等问题。

在优选的实施方式中,如图2所示,所述S000具体可包括:

S010:获取Jenkins的作业XML配置信息。

S020:根据所述XML配置信息确定作业模板和对应的变量。

可以理解的是,作业模板可以从Jenkins中抽取作业XML配置信息,并根据用户定义等方式确定作业模板中需要替换的变量,形成作业模板及关联的变量,支持作业的自动化创建。通过对大量不同类型的作业XML配置信息进行模板抽取,可完成不同类型Jenkins作业的通用作业模板的抽取和存储。

在优选的实施方式中,如图3所示,所述S000形成所述作业模板进一步可包括:

S030:根据形成的所有作业模板的作业类型确定所有作业模板中包括具有生成先后顺序的多个作业模板为流水线的作业模板集。

可以理解的是,当存在应用维护的不同作业类型作业模板具有上下游关系,即不同作业模板可按照上下游关系依次生成,不同作业模板间具有生成先后顺序。可根据所有作业类型的作业模板的生成先后顺序形成具有流水线性质的作业模板集,创建后作业模板集即可被一次性引用,一次性根据作业模板集中的所有作业模板依次创建得到一组关联作业,形成特色的作业持续流水线集成。相比在Jenkins页面上逐个作业创建编辑保存,作业维护效率有了大幅提升,可以快速响应应用的持续集成需求。而且抽取模板需要对Jenkins使用较为熟悉,本发明可大幅降低Jenkins作业的维护门槛。

在优选的实施方式中,如图4所示,所述S000中获取Jenkins的作业XML配置信息,根据所述XML配置信息确定作业模板和对应的变量具体包括:

S011:通过Jenkins REST API获取Jenkins作业列表。

S012:根据所述Jenkins作业列表选择待抽取模板的作业,确定作业类型和作业模板名称。

S013:根据选定的待抽取模板作业,通过Jenkins REST API获取对应的作业XML配置信息。

S014:将所述作业XML配置信息格式化后向用户展示,根据用户指令确定格式化后的XML配置信息中的变量。

可以理解的是,在该优选的实施方式中,用户可选定某个Jenkins后,调用JenkinsREST API查询作业列表,用户可根据返回的Jenkins作业列表选择需要抽取为模板的作业(已有作业选择或事先维护一个模板作业),并指定作业类型(不同类型的作业执行的动作差异较大,需要抽取的变量也有很多不同)和模板名称。进一步的,根据用户选定的作业调用预先定义的Jenkins REST API接口获取此作业的完整XML配置,并进行格式化展示,用户可在此基础上按需调整,例如指定某个元素或字符串需要替换或裁剪,可设置为变量并用XPath路径标识。可选的,变量可从已有的字典中选择,如果没有匹配的,可以新增变量并维护相关属性后记录,并可按照应用和版本维护特征值。

用户在确认作业模板维护完毕后,可以执行发布模板操作,发布后的作业模板可以XML形式存储在数据库中,只有发布后的作业模板才可以被用户调用来生成作业。

在优选的实施方式中,如图5所示,所述S200中根据所述作业生成请求的作业信息和作业模板确定对应的变量具体可包括:

S210:根据所述作业模板确定对应的变量。

S220:根据所述作业生成请求的应用、版本和作业类型的作业信息进行所述变量替换得到变量值。

为了根据作业模板和变量自动生成作业模板,可将用户指令的变量存储在参数维护装置中。具体的,参数维护装置可存储变量的替换规则、变量与应用版本之间的关系以及可选的参数值等,可用于支持作业根据预定义变量替换规则和变量值全自动创建,无需人工输入。

具体的,在该优选的实施方式中,支持对接多个Jenkins,支持按应用以及作业类型配置不同Jenkins的关联关系。

其中,一个作业模板可关联多个需要被替换的变量。变量可包括公共变量和特定作业类型变量。在一个具体例子中,一个作业模板关联的变量可按表1进行存储。

表1

作业模板名称 作业模板类型 变量名
Build_Template 构建 git_repo_url
Build_Template 构建 git_branch
Build_Template 构建 ……

进一步的,根据作业创建作业模板,其中抽取的变量有些是全局的,有些归属特定作业类型,作业类型可包括构建、部署、静态代码扫描和自动化测试等类型中的至少之一,在实际应用中,还可以根据需要设置其他作业类型,本发明对此并不作限定。可基于XPath定位替换的变量,并可设置默认属性和参数值,也可根据作业生成请求中用户定义的参数值得到变量值。在一个具体例子中,基于作业类型的变量可按表2进行存储。

表2

变量可以根据应用维护特定的行为以及变量值。在一个具体例子中,可按表3存储变量与应用的对应关系。

表3

Figure BDA0002561863330000091

变量可以根据版本维护特定的行为以及变量值。在一个具体例子中,可按表4存储变量与版本的对应关系。

表4

在生成Jenkins作业时,用户选择应用、版本和作业类型的作业信息以及作业模板后,一键提交作业生成请求。根据作业生成请求获取相应的一个或一组模板XML文本,同时根据模板名称查询关联的变量清单。根据关联的变量清单,逐个变量基于XPath定位后,根据参数维护装置中按应用和按版本维护的变量属性和变量值执行相应的替换或裁剪动作,完成模板的实例化操作。模板经过替换裁剪实例化后得到的一个或一组新的XML文本,根据应用和作业类型确定作业需要创建的Jenkins,然后调用Jenkins REST API发起一个或一组关联作业创建请求,并将创建结果反馈用户。

优选的,本发明可提供页面或接口的形式,支持用户选择预定义的作业模板或应用流水线模板,发起批量作业自动创建的请求,并在系统处理完成后反馈用户结果。提供API接口供其它系统集成,可进一步简化持续交付流程,例如开发人员从行内“持续交付系统”中提交应用补丁申请,“系统”判断当前作业不存在,调用作业生成接口完成一列作业的创建,然后再触发作业运行,执行版本构建、代码扫描、版本部署、自动化测试等流程,全程无需维护人员介入。

在优选的实施方式中,如图6所示,所述方法还包括S400:

S410:根据用户输入的模板修改信息修改对应的作业模板。

S420:根据修改后的作业模板对根据该作业模板已生成的Jenkins作业进行相应修改。

可以理解的是,后续作业模板如需更新,可以选择已发布的作业模板进行编辑,完成后如果重新发布,系统会查询此作业模板是否已生成Jenkins作业,如果有则会提示词模板关联作业清单,用户可选择同步刷新存量作业,模板抽取装置会调用作业生产模块完成存量更新的操作,免去了手工逐个编辑更新的过程。

基于相同原理,本实施例还公开了一种基于可定制模板的Jenkins作业生成系统。如图7所示,本实施例中,所述系统包括模板确定单元11、变量替换单元12和作业生成单元13。

其中,所述模板确定单元11用于根据用户输入的作业生成请求确定作业模板。

所述变量替换单元12用于根据所述作业生成请求的作业信息和作业模板确定对应的变量,对所述变量进行变量替换得到变量值。

所述作业生成单元13用于根据所述变量值和所述作业模板形成Jenkins作业。

由于该系统解决问题的原理与以上方法类似,因此本系统的实施可以参见方法的实施,在此不再赘述。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机设备,具体的,计算机设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

在一个典型的实例中计算机设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述方法。

下面参考图8,其示出了适于用来实现本申请实施例的计算机设备600的结构示意图。

如图8所示,计算机设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。

以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶反馈器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。

特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包括用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

18页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:字符串处理方法及装置、计算机存储介质、电子设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!