首页> 中国专利> 持续集成和持续交付方法、装置、电子设备及存储介质

持续集成和持续交付方法、装置、电子设备及存储介质

摘要

本申请中一个或多个实施例提供一种持续集成和持续交付方法、装置、电子设备及存储介质,包括:获取开发代码;将开发代码推送至测试环境中以得到测试代码;合并开发代码和测试代码以确定待发布代码;发布根据待发布代码构建的发布包。本申请提供的方法,能够动态生产和销毁开发测试环境,避免了跨部门的协作,提升了持续集成和持续交付的效率。测试代码、待发布代码以及发布包无需人工创建,能够自动配置,提升了创建部署的效率,保证发布包在持续交付中的质量,避免了因人工创建任务或代码时容易造成错误的问题。

著录项

  • 公开/公告号CN112506525A

    专利类型发明专利

  • 公开/公告日2021-03-16

    原文格式PDF

  • 申请/专利权人 中国人寿保险股份有限公司;

    申请/专利号CN202011408167.3

  • 发明设计人 马德浩;郭锦如;卢焱;

    申请日2020-12-03

  • 分类号G06F8/60(20180101);G06F11/36(20060101);

  • 代理机构11403 北京风雅颂专利代理有限公司;

  • 代理人王刚

  • 地址 100033 北京市西城区金融大街16号

  • 入库时间 2023-06-19 10:16:30

说明书

技术领域

本申请中一个或多个实施例涉及计算机软件开发技术领域,尤其涉及一种持续集成和持续交付方法、装置、电子设备及存储介质。

背景技术

现有技术中,软件研发前需要向数据中心申请开发测试环境,在获取环境后,需要对环境进行初始化,在研发测试过程中,手工创建构建和部署的Jenkins的任务,软件研发结束后,手工将程序、脚本、文档等制作成版本发布包,交付至数据中心的部署团队。但是开发测试环境需要跨部门申请,效率低,且需要手工进行创建和初始化,软件开发容易出现错误。

发明内容

有鉴于此,本申请中一个或多个实施例的目的在于提出一种持续集成和持续交付方法、装置、电子设备及存储介质,以解决现有技术存在的上述至少一个问题。

基于上述目的,本申请中一个或多个实施例提供了一种持续集成和持续交付方法,包括:

获取开发代码;

将所述开发代码推送至测试环境中以得到测试代码;

合并所述开发代码和所述测试代码以确定待发布代码;

发布根据所述待发布代码构建的发布包。

可选的,所述测试环境,包括:构建应用和测试应用;所述构建应用,用于自动产生构建任务;所述测试应用,用于测试所述测试代码。

可选的,所述将所述开发代码推送至测试环境中以得到测试代码,之前还包括:

根据所述开发代码构建开发应用程序;

判断所述开发应用程序是否能够正常运行;

若否,则根据所述开发应用程序获取构建日志,根据所述构建日志更新所述开发代码。

可选的,所述将所述开发代码推送至测试环境中以得到测试代码,之后还包括:

根据所述构建任务和所述测试代码构建待测试应用;

利用所述测试应用测试所述待测试应用。

可选的,所述发布根据所述待发布代码构建的发布包,之前还包括:

判断所述待测试应用是否被部署在容器云;

若是,则根据所述待测试应用构建容器镜像,并将所述容器镜像推送至预先构建的镜像仓库。

可选的,所述发布根据所述待发布代码构建的发布包,之后还包括:

销毁所述测试环境和所述构建任务。

可选的,所述合并所述开发代码和所述测试代码以确定待发布代码,具体包括:

自动比较所述开发代码和所述测试代码是否存在差异;

若否,则合并所述开发代码和所述测试代码以确定所述待发布代码。

基于同一发明构思,本申请中一个或多个实施例还提出了一种持续集成和持续交付装置,包括:

获取模块,被配置为获取开发代码;

推送模块,被配置为将所述开发代码推送至测试环境中以得到测试代码;

合并模块,被配置为合并所述开发代码和所述测试代码以确定待发布代码;

发布模块,被配置为发布根据所述待发布代码构建的发布包。

基于同一发明构思,本申请中一个或多个实施例还提出了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任意一项所述的持续集成和持续交付方法。

基于同一发明构思,本申请中一个或多个实施例还提出了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行上述任意一项所述的持续集成和持续交付方法。

从上面所述可以看出,本申请中一个或多个实施例提供的一种持续集成和持续交付方法,包括:获取开发代码;将所述开发代码推送至测试环境中以得到测试代码;合并所述开发代码和所述测试代码以确定待发布代码;发布根据所述待发布代码构建的发布包。本申请提供的方法,能够动态生产和销毁开发测试环境,避免了跨部门的协作,提升了持续集成和持续交付的效率。测试代码、待发布代码以及发布包无需人工创建,能够自动配置,提升了创建部署的效率,保证发布包在持续交付中的质量,避免了因人工创建任务或代码时容易造成错误的问题。

附图说明

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

图1为本申请中一个或多个实施例中一种持续集成和持续交付方法的流程图;

图2为本申请中一个或多个实施例中一种持续集成和持续交付装置的结构示意图;

图3为本申请中一个或多个实施例中一种电子设备的结构示意图。

具体实施方式

为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。

需要说明的是,除非另外定义,本申请中一个或多个实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本申请中一个或多个实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

申请人通过研究发现现有技术中,随着公司业务的发展,软件研发的任务逐年增多,而在软件研发过程中需要开发和测试环境,在获取测试环境后,需要对测试环境进行初始化;而在软件研发测试过程中,手工创建构建和部署的Jenkins任务,需要持续集成和持续部署;在软件研发完成后,将程序、脚本、文档等制作成版本发布包,交付给数据中心的部署团队。由于开发测试环境需要跨部门申请,效率较低,而因为在获取环境后,需要手工初始化,容易出现错误,且耗时较多;创建构建部署任务时,有大量参数需要调整,难度较高,随着环境和Jenkins任务的数量增加,会变得更加难以维护。正因如此,本申请提供的持续集成和持续交付方法,在获取开发代码后,自动创建测试环境,并在测试环境中得到测试代码,通过合并开发代码和测试代码从而确定待发布代码,根据待发布代码构建包含数据库脚本、配置脚本、文档以及待发布代码的发布包,根据交付规范,放置到相应目录完成打包,并将其发布,以完成交付。

参考图1,因此本申请中一个或多个实施例提供的一种持续集成和持续交付方法,具体包括以下步骤:

S101:获取开发代码。

本实施例中,需要获取开发人员的编写的待研发的开发代码。例如,开发代码可以为开发人员编写的代码,在开发人员编写代码后直接获取其编写的代码作为开发代码。在一些可选的实施方式中,可以在软件开发人员完成代码的编写后,将代码统一发送至接收服务器,开发代码可以直接通过接收服务器获取。

可以理解的是,当开发代码需要在安全等级更高的研发代码数据库中存储时,可以先获取数据库管理员的信息,例如管理员ID,通过管理员信息访问研发代码数据库,然后从中获取开发代码。

在一些可选的实施方式中,用户在接到研发任务后,制定版本计划,确定版本号,用户选择应用程序,录入版本号后,根据用户的选择,自动在代码仓库上创建相应的代码分支,且代码分支按照统一的规范命名,然后对该代码分支上的代码文件中的版本号进行修改,自动修改为本次研发的版本号。

S102:将所述开发代码推送至测试环境中以得到测试代码。

本实施例中,将开发代码推送至预先构建好的测试环境中,从而得到测试代码。需要解释的是,随着应用程序的复杂和微服务化,单一应用程序往往难以完成一项业务,因此用户可以选择多个应用程序部署到同一个测试环境中,这些应用程序有的是根据本次任务需要进行研发,有的不需要研发却是完成业务功能不可缺少的支撑程序。

在一些可选的实施方式中,测试环境构建完成后,在测试环境中至少包括以下两种应用程序:构建应用和测试应用;其中构建应用的获取方式,是从数据库中获取构建应用的配置,自动产生构建和部署的Jenkins任务,Jenkins是一种开源的持续集成及持续部署的软件,构建应用用于自动产生构建任务;测试应用的获取方式,是直接获取历史的归档的应用镜像,并将其部署在开发测试环境中,测试应用是用于测试在测试环境中的测试代码的。

可以理解的是,在研发测试环境部署完成后,用户能够查看测试环境信息,其中包括各个应用程序的IP地址,以及测试环境构建成功或失败的情况。在测试环境创建完成后,如果发现创建时选择的参数不正确,可以对测试环境进行修改,包括但不限于新增、修改以及删除测试环境中的应用程序,调整应用程序的版本,而修改测试环境的同时会修改构建应用之前生成的构建任务。而如果测试环境构建失败,则能够根据测试环境信息找到构建失败的原因,并根据测试环境信息对测试环境进行重建。

需要说明的是,在将开发代码推送至测试环境中以得到测试代码之前,需要根据开发代码构建开发应用程序,并将其更新在测试环境中,然后对开发应用程序进行判断,判断其是否能够正常运行;如果开发应用程序能够正常运行,则开发应用构建成功,可继续执行后续步骤;如果开发应用程序不能够正常运行,则根据开发应用程序获取构建日志,根据构建日志更新开发代码,用户可以跳转到Jenkins的界面查看构建日志,分析开发应用程序构建失败的原因,并更新用于构建开发应用程序的开发代码。

在一些可选的实施方式中,用户在完成开发应用程序的开发后,将开发代码从开发分支推送至测试环境中的测试分支,在开发分支的开发代码推送至测试分支后,根据生产的部署情况,在将开发代码推送至测试环境中已得到测试代码之后,根据构建任务和测试代码构建待测试应用,利用测试应用对其进行测试。具体地,根据生产的部署情况,有的待测试应用部署在容器云上,有的则部署在虚拟机上,根据用户录入的虚拟机地址和数据库中的应用程序的配置信息,自动创建推送环境的Jenkins任务,并执行该任务,将测试分支中的测试代码构建为待测试应用,并将其部署到测试环境中,之后,测试人员能够在测试环境中利用测试应用对本次开发的成果物,即待测试应用,进行测试。

S103:合并所述开发代码和所述测试代码以确定待发布代码。

本实施例中,将开发代码和测试代码进行代码合并操作,从而确定待发布代码。具体地,在待测试应用通过测试后,可以提交发布指令,在提交发布指令的过程中需要合并开发代码和测试代码,自动比较开发分支的开发代码和测试分支的测试代码的差异,保证开发分支中的开发代码已经全部经过测试。判断开发代码和测试代码之间是否存在差异,若存在差异则重新对开发代码进行更新;若不存在差异,则合并开发代码和测试代码,并将开发分支和测试分支合并至主干分支,使得主干分支中的待发布代码与生产环境运行的应用程序保持一致。

需要说明的是,是否需要合并开发代码和测试代码以确定待发布代码,可以响应于用户的确认操作来判断,例如开发代码多于测试代码,则响应于用户确认多余代码需要发布的指令,合并开发代码和测试代码从而确定待发布代码。若多余代码为错误提交的情况,则响应于用户确认多与代码不需要发布的指令,不对开发代码和测试代码进行合并操作。

S104:发布根据所述待发布代码构建的发布包。

本实施例中,根据待发布代码构建发布包,并将发布包进行发布,以完成持续交付的任务。具体地,代码仓库中将会创建待发布代码的发布基线,同时构建应用创建构建任务,构建用于发布的发布应用,与此同时,下载数据库脚本和配置脚本,根据交付规范,将其放置到相应目录,并完成打包以得到发布包。

在一些可选的实施方式中,在发布根据待发布代码构建的发布包之前,需要判断待测试应用是否被部署在容器云中,如果不是,则直接通过步骤S104对其进行打包以得到发布包;如果是,则需要在创建发布包的同时,利用构建应用创建构建容器镜像的任务,将容器镜像推送至预先构建的镜像仓库中,而镜像仓库中的容器镜像能够用于下一次的持续集成和持续交付任务中,例如从镜像仓库中选择测试环境中的测试应用。

在一些可选的实施方式中,研发任务完成后,即发布根据待发布代码构建的发布包后,会将本次创建的开发测试环境彻底销毁,在测试环境中创建的构建任务也将被删除,对构建测试环境以及构建任务的资源进行回收,供后续的研发任务使用。也可以根据项目规模对销毁操作进行定时,在研发任务完成后的达到预设时间后,将测试环境和构建任务进行定时销毁。

从上面所述可以看出,本申请中一个或多个实施例提供的一种持续集成和持续交付方法,包括:获取开发代码;将所述开发代码推送至测试环境中以得到测试代码;合并所述开发代码和所述测试代码以确定待发布代码;发布根据所述待发布代码构建的发布包。本申请提供的方法,能够动态生产和销毁开发测试环境,避免了跨部门的协作,提升了持续集成和持续交付的效率。测试代码、待发布代码以及发布包无需人工创建,能够自动配置,提升了创建部署的效率,保证发布包在持续交付中的质量,避免了因人工创建任务或代码时容易造成错误的问题。而且,环境的大部分信息自动配置完成,只有少部分需要用户选择和录入,极大的提升了创建部署的效率,原本需要数周的测试环境申请和部署,只需要几分钟就可以完成。而且在软件代码研发过程中,需要的持续集成的Jenkins任务根据模版统一生成,保证了持续集成的质量,提升了效率,避免每次用户手工更改各种参数导致的更改不完全、更改错误等问题。得到的发布包根据交付规范用程序自动化生成,保证了发布包的质量,同时提升了效率。

上述对本申请中特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

基于同一发明构思,本申请中一个或多个实施例还提出了一种持续集成和持续交付装置,参考图2,所述持续集成和持续交付装置包括:

获取模块,被配置为获取开发代码;

推送模块,被配置为将所述开发代码推送至测试环境中以得到测试代码;

合并模块,被配置为合并所述开发代码和所述测试代码以确定待发布代码;

发布模块,被配置为发布根据所述待发布代码构建的发布包。

在一些可选的实施方式中,所述测试环境,包括:构建应用和测试应用;所述构建应用,用于自动产生构建任务;所述测试应用,用于测试所述测试代码。

在一些可选的实施方式中,所述将所述开发代码推送至测试环境中以得到测试代码,之前还包括:

根据所述开发代码构建开发应用程序;

判断所述开发应用程序是否能够正常运行;

若否,则根据所述开发应用程序获取构建日志,根据所述构建日志更新所述开发代码。

在一些可选的实施方式中,所述将所述开发代码推送至测试环境中以得到测试代码,之后还包括:

根据所述构建任务和所述测试代码构建待测试应用;

利用所述测试应用测试所述待测试应用。

在一些可选的实施方式中,所述发布根据所述待发布代码构建的发布包,之前还包括:

判断所述待测试应用是否被部署在容器云;

若是,则根据所述待测试应用构建容器镜像,并将所述容器镜像推送至预先构建的镜像仓库。

在一些可选的实施方式中,所述发布根据所述待发布代码构建的发布包,之后还包括:

销毁所述测试环境和所述构建任务。

在一些可选的实施方式中,所述合并所述开发代码和所述测试代码以确定待发布代码,具体包括:

自动比较所述开发代码和所述测试代码是否存在差异;

若否,则合并所述开发代码和所述测试代码以确定所述待发布代码。

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

上述实施例的装置用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。

基于同一发明构思,与上述任意实施例方法相对应的,本说明书一个或多个实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的持续集成和持续交付方法。

图3示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器310、存储器320、输入/输出接口330、通信接口340和总线350。其中处理器310、存储器320、输入/输出接口330和通信接口340通过总线350实现彼此之间在设备内部的通信连接。

处理器310可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。

存储器320可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器320可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器320中,并由处理器310来调用执行。

输入/输出接口330用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触控屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。

通信接口340用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。

总线350包括一通路,在设备的各个组件(例如处理器310、存储器320、输入/输出接口330和通信接口340)之间传输信息。

需要说明的是,尽管上述设备仅示出了处理器310、存储器320、输入/输出接口330、通信接口340以及总线350,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。

基于同一发明构思,与上述任意实施例方法相对应的,本说明书一个或多个实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的持续集成和持续交付方法。

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

上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的持续集成和持续交付方法,并且具有相应的方法实施例的有益效果,在此不再赘述。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请中一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。

本申请中一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请中一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号