CN115328491A - 持续集成方法、装置及存储介质 - Google Patents

持续集成方法、装置及存储介质 Download PDF

Info

Publication number
CN115328491A
CN115328491A CN202211003892.1A CN202211003892A CN115328491A CN 115328491 A CN115328491 A CN 115328491A CN 202211003892 A CN202211003892 A CN 202211003892A CN 115328491 A CN115328491 A CN 115328491A
Authority
CN
China
Prior art keywords
processing
continuous integration
integration
software project
test
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
CN202211003892.1A
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.)
China United Network Communications Group Co Ltd
Unicom Digital Technology Co Ltd
China Unicom Zhejiang Industrial Internet Co Ltd
Original Assignee
China United Network Communications Group Co Ltd
Unicom Digital Technology Co Ltd
China Unicom Zhejiang Industrial Internet 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 United Network Communications Group Co Ltd, Unicom Digital Technology Co Ltd, China Unicom Zhejiang Industrial Internet Co Ltd filed Critical China United Network Communications Group Co Ltd
Priority to CN202211003892.1A priority Critical patent/CN115328491A/zh
Publication of CN115328491A publication Critical patent/CN115328491A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请提供一种持续集成方法、装置及存储介质,可以用于软件开发技术领域,其中,方法包括:获取软件项目的集成信息和基本信息;从预先存储的多个步骤模板中确定与集成信息中步骤标识对应的步骤模板;按软件项目集成信息的处理步骤顺序,将所确定的步骤模板组装成第一持续集成流水线;从第一持续集成流水线的各步骤模板中确定与基本信息中语言标识对应的处理脚本和待配置参数;采用所确定的待配置参数对所确定的处理脚本进行配置,得到第二持续集成流水线,以用于软件项目的持续集成。本申请的方法解决了采用现有技术为软件项目创建的持续集成流水线容易出错的问题,实现了对软件项目持续集成流水线的快速精准创建和对软件项目的高效持续集成。

Description

持续集成方法、装置及存储介质
技术领域
本申请涉及软件开发技术领域,尤其涉及一种持续集成方法、装置及存储介质。
背景技术
持续集成(Continuous Integration,简称:CI)是指在软件项目的开发阶段,对软件项目的源代码进行持续性自动化编译、测试,以达到控制代码质量的手段。在软件项目的开发过程中,开发人员可以将软件项目分为多个可独立运行且可集成的子项目,结合持续集成,完成对各子项目进行迭代式的开发和上线发布。
具体来说,在持续集成服务器上可以部署持续集成流水线。该持续集成流水线包括了对整个软件项目进行迭代编译测试的全部指令。当开发人员完成软件项目的第一个子项目的源代码开发后,可以通过持续集成服务器,对第一个子项目的源代码进行自动化编译、测试。若第一个子项目持续集成的结果为测试合格,则开发人员可以将第一个子项目上线发布。接着,开发人员可以对开发完成的第二个子项目进行持续集成,即,通过持续集成服务器,对第二个子项目的源代码与第一个子项目的源代码一并进行自动化编译、测试。若第二个子项目持续集成的结果为与第一个子项目形成的集成项目测试合格,则将由第一个子项目与第二个子项目形成的集成项目进行上线发布。以此类推,后续各子项目的持续集成均为与在前编译测试完成的全部子项目进行持续集成,最终完成了整个软件项目的上线发布。
由于各软件项目的功能不同,针对每个子项目进行持续集成的操作不同,因此,现有技术需为每个软件项目对应创建一条专用的持续集成流水线。若软件项目的数量较多,或,某一软件项目的子项目构造复杂,持续集成流水线的创建工作变得复杂、繁重,容易造成创建的持续集成流水线出错,进而对软件开发造成不利影响。
发明内容
本申请提供一种持续集成方法、装置及存储介质,以解决在软件项目的数量较多,或,某一软件项目的子项目构造复杂的情况下,采用现有技术为软件项目创建专用的持续集成流水线,创建工作复杂、繁重,容易造成创建的持续集成流水线出错的问题。
第一方面,本申请提供一种持续集成方法,包括:
获取软件项目的集成信息和基本信息;所述集成信息包括对软件项目进行迭代编译测试的各处理步骤的步骤标识;所述基本信息包括所述软件项目的开发语言的语言标识;
从预先存储的多个步骤模板中确定与所述步骤标识对应的步骤模板;
按所述软件项目的处理步骤顺序,将所确定的步骤模板组装成第一持续集成流水线;所述步骤模板包含多个语言标识各自对应的处理脚本、待配置参数;所述处理脚本是由一个或多个编译测试的处理指令组成的;
从所述第一持续集成流水线的各步骤模板中确定与所述语言标识对应的处理脚本和待配置参数;
采用所确定的待配置参数对所确定的处理脚本进行配置,得到第二持续集成流水线,以用于所述软件项目的持续集成。
可选的,所述基本信息还包括所述软件项目的源代码的代码标识和部署所述第二持续集成流水线的服务器的服务器标识;
所述采用所确定的待配置参数对所确定的处理脚本进行配置,得到第二持续集成流水线,包括:
确定与所述代码标识对应的待配置参数;
采用所述语言标识和所述代码标识确定的待配置参数,对所确定的处理脚本进行配置,得到待部署的第一持续集成流水线;
将所述待部署的第一持续集成流水线部署到所述服务器标识对应的服务器,得到第二持续集成流水线。
可选的,在所述采用所确定的待配置参数对所确定的处理脚本进行配置,得到第二持续集成流水线之后,所述方法还包括:
采用所述第二持续集成流水线,对所述软件项目进行持续集成。
可选的,所述处理步骤为代码检查、代码编译、镜像构建、测试部署、功能测试、上线部署中的任一项;
所述采用所述第二持续集成流水线,对所述软件项目进行持续集成,包括:
若所述第二持续集成流水线包括代码检查、代码编译、镜像构建、测试部署、功能测试、上线部署,则,
采用所述第二持续集成流水线的代码检查、代码编译、镜像构建、测试部署、功能测试,对所述软件项目进行迭代编译测试;
若所述软件项目的迭代编译测试结果为测试合格,则采用所述第二持续集成流水线的上线部署,对所述软件项目进行迭代上线发布。
可选的,所述基本信息还包括表征测试部署方式的测试部署标识和表征上线部署方式的上线部署标识;
所述测试部署的步骤模板包含多种测试部署方式各自对应的处理脚本;所述上线部署的步骤模板包含多种上线部署方式各自对应的处理脚本;
在所述采用所述第二持续集成流水线,对所述软件项目进行持续集成之前,所述方法还包括:
从所述第二持续集成流水线的测试部署的处理脚本中,确定与所述测试部署标识对应的处理脚本,并冻结与所述测试部署标识不对应的处理脚本;
从所述第二持续集成流水线的上线部署的处理脚本中,确定与所述上线部署标识对应的处理脚本,并冻结与所述上线部署标识不对应的处理脚本。
可选的,所述步骤模板还包含所述步骤模板的各处理脚本各自对应的容器标识;
所述采用所述第二持续集成流水线,对所述软件项目进行持续集成,包括:
从预先存储的多个容器中确定与所述第二持续集成流水线的指定容器标识对应的容器;
在所述容器的容器环境中运行所述指定容器标识对应的处理脚本。
可选的,所述步骤模板还包含与所述步骤模板的处理脚本关联的缓存标识;
所述在所述容器的容器环境中运行所述指定容器标识对应的处理脚本,包括:
在所述容器的容器环境中运行所述指定容器标识对应的处理脚本,得到处理结果;
将所述处理结果缓存于与所述处理结果关联的缓存标识对应的缓存空间。
第二方面,本申请提供一种持续集成设备,所述设备包括:
收发模块和处理模块;
所述收发模块,用于获取软件项目的集成信息和基本信息;所述集成信息包括对软件项目进行迭代编译测试的各处理步骤的步骤标识;所述基本信息包括所述软件项目的开发语言的语言标识;
所述处理模块,用于从预先存储的多个步骤模板中确定与所述步骤标识对应的步骤模板;按所述软件项目的处理步骤顺序,将所确定的步骤模板组装成第一持续集成流水线;所述步骤模板包含多个语言标识各自对应的处理脚本、待配置参数;所述处理脚本是由一个或多个编译测试的处理指令组成的;
所述处理模块,还用于从所述第一持续集成流水线的各步骤模板中确定与所述语言标识对应的处理脚本和待配置参数;采用所确定的待配置参数对所确定的处理脚本进行配置,得到第二持续集成流水线,以用于所述软件项目的持续集成。
第三方面,本申请提供一种持续集成装置,所述装置包括:
处理器和存储器;
所述存储器存储所述处理器可执行的可执行指令;
其中,所述处理器执行所述存储器存储的可执行指令,使得所述处理器执行如上所述的方法。
第四方面,本申请提供一种存储介质,所述存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上所述的方法。
本申请提供的持续集成方法、装置及存储介质,通过从预先存储的多个步骤模板中,选择与软件项目的集成步骤对应的步骤模板,并按软件项目的集成步骤顺序组装得到适用于多种开发语言的第一持续集成流水线;根据软件项目开发语言的语言标识,确定出第一持续集成流水线中的软件项目所需的处理脚本并对确定的处理脚本进行配置,得到第二持续集成流水线,以用于软件项目的持续集成。本申请解决了在软件项目的数量较多,或,某一软件项目的子项目构造复杂的情况下,采用现有技术为软件项目创建专用的持续集成流水线,创建工作复杂、繁重,容易造成创建的持续集成流水线出错的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为现有的软件项目迭代开发和上线发布的场景图;
图2为本申请实施例提供的软件项目迭代开发和上线发布的场景图;
图3为本申请实施例提供的持续集成方法流程图;
图4为本申请实施例提供的持续集成设备结构图;
图5为本申请实施例提供的持续集成装置结构图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1所示,在软件项目的开发过程中,开发人员可以将软件项目分为多个可独立运行且可集成的子项目,结合持续集成,实现对各子项目进行迭代式的开发和上线发布。图1为现有的软件项目迭代开发和上线发布的场景图。如图1所示,开发人员将软件项目分为多个可独立运行且可集成的子项目。各子项目开发人员在各自的开发设备11上对其负责的子项目进行源代码开发。开发人员通过开发设备11将开发完成的待集成子项目源代码发送到持续集成服务器12。持续集成服务器12上预先部署有软件项目专用的持续集成流水线,并存储有软件项目中已完成持续集成的子项目源代码。持续集成服务器12采用持续集成流水线,将待集成子项目源代码与该软件项目已完成持续集成的子项目源代码进行自动化编译测试,得到由待集成子项目源代码与已完成持续集成的子项目源代码,集成后的集成项目的持续集成结果。若集成项目的持续集成结果为测试合格,则将集成项目部署到该软件项目的生产服务器13上,以实现集成项目的上线发布。用户通过用户端14即可对生产服务器13上线发布的集成项目对应软件进行使用。开发人员每完成一个子项目的源代码开发,均会通过持续集成服务器12进行迭代式的编译测试和上线发布,直至完成软件项目的所有子项目的开发和上线发布。
在对软件项目的子项目进行持续集成之前,需基于软件项目的功能和集成步骤,编制软件项目的持续集成流水线,并部署在持续集成服务器12上。由于各软件项目的功能不同,针对每个子项目进行持续集成的操作不同,因此,现有技术需为每个软件项目对应创建一条专用的持续集成流水线。若软件项目的数量较多,或,某一软件项目的子项目构造复杂,持续集成流水线的创建工作变得复杂、繁重,容易造成创建的持续集成流水线出错,进而对软件开发造成不利影响。例如,因为持续集成流水线出错导致上线的软件项目功能出错或导致开发工作受阻等,严重影响用户对软件项目对应软件的使用体验感。
对此,本申请提供一种持续集成方法,通过获取软件项目的集成信息和基本信息,集成信息包括对软件项目进行迭代编译测试的各处理步骤的步骤标识,基本信息包括软件项目的开发语言的语言标识;从预先存储的多个步骤模板中确定与步骤标识对应的步骤模板;按软件项目的处理步骤顺序,将所确定的步骤模板组装成第一持续集成流水线;其中,步骤模板包含多个语言标识各自对应的处理脚本、待配置参数;处理脚本是由一个或多个编译测试的处理指令组成的;从第一持续集成流水线的各步骤模板中确定与语言标识对应的处理脚本和待配置参数;采用确定的待配置参数对所确定的处理脚本进行配置,得到第二持续集成流水线,以用于软件项目的持续集成。本申请提供的持续集成方法,软件项目的持续集成流水线创建工作简单、精准,只需按软件项目的集成步骤选择对应的步骤模板进行组装即可得到第一持续集成流水线,然后根据软件项目的开发语言,确定出第一持续集成流水线中的处理脚本并对其进行配置,即可得到用于持续集成的第二持续集成流水线。本申请提供的持续集成方法解决了在软件项目数量较多,或,某一软件项目的子项目构造复杂的情况下,采用现有技术为软件项目所创建的持续集成流水线容易出错的问题,本申请的方法实现了高效、精准地创建软件项目的持续集成流水线。
下面结合部分实施例对本申请提供的持续集成方法进行说明。
图2为本申请实施例提供的软件项目迭代开发和上线发布的场景图。如图2所示,持续集成设备21从任一开发设备11获取软件项目的集成信息和基本信息。集成信息包括对软件项目进行迭代编译测试的各处理步骤的步骤标识;基本信息包括软件项目的开发语言的语言标识。持续集成设备21从预先存储的多个步骤模板中确定与软件项目的步骤标识对应的步骤模板。持续集成设备21按软件项目的处理步骤顺序,将所确定的步骤模板组装成第一持续集成流水线。步骤模板包含多个语言标识各自对应的处理脚本、待配置参数。处理脚本是由一个或多个编译测试的处理指令组成的。持续集成设备21从第一持续集成流水线的各步骤模板中确定与语言标识对应的处理脚本和待配置参数。持续集成设备21采用所确定的待配置参数对所确定的处理脚本进行配置,得到第二持续集成流水线,以用于软件项目的持续集成。示例性地,持续集成设备21接收开发设备11所发送的软件项目的待集成子项目源代码。持续集成设备21采用第二持续集成流水线,将所收到的待集成子项目源代码与持续集成设备21上存储的该软件项目已完成持续集成的子项目源代码进行自动化编译测试,得到由待集成子项目源代码与已完成持续集成的子项目源代码集成后的集成项目的迭代编译测试结果。若集成项目的迭代编译测试结果为测试合格,持续集成设备21则将集成项目部署到该软件项目的生产服务器13上,以实现集成项目的上线发布。用户通过用户端14即可对生产服务器13上线发布的集成项目对应软件进行使用。开发人员每完成一个子项目的源代码开发,均可以通过持续集成设备21进行迭代式的编译测试和上线发布,直至完成软件项目的所有子项目的开发和上线发布。
本申请实施例提供的持续集成方法,通过从预先存储的多个步骤模板中,确定与软件项目的集成步骤对应的步骤模板,并将确定的步骤模板按软件项目的集成步骤顺序组装得到适用于多种开发语言的第一持续集成流水线;根据软件项目开发语言的语言标识,确定出第一持续集成流水线中的软件项目所需的处理脚本并对确定的处理脚本进行配置,得到第二持续集成流水线,以用于软件项目的持续集成。本申请提供的持续集成方法,软件项目的持续集成流水线创建工作简单而精准,解决了在软件项目的数量较多,或,某一软件项目的子项目构造复杂的情况下,采用现有技术为软件项目创建专用的持续集成流水线,创建工作复杂、繁重,容易造成创建的持续集成流水线出错的问题;在软件项目的数量较多,或,某一软件项目的子项目构造复杂场景下,本申请提供的方法,实现了对软件项目的持续集成流水线的快速精准创建以及对软件项目的高效持续集成。
下面结合图2和图3对本申请提供的持续集成方法进行详细说明。图3为本申请实施例提供的持续集成方法流程图。图3所示实施例的执行主体为图2所示实施例中的持续集成设备21。如图3所示,该方法包括:
S301、获取软件项目的集成信息和基本信息;集成信息包括对软件项目进行迭代编译测试的各处理步骤的步骤标识;基本信息包括软件项目的开发语言的语言标识。
具体而言,持续集成设备21获取软件项目的集成信息和基本信息。集成信息包括对软件项目进行迭代编译测试的各处理步骤的步骤标识。基本信息包括软件项目的开发语言的语言标识。
示例性地,持续集成设备21可以从开发设备11获取软件项目的集成信息和基本信息。持续集成设备21也可以获取开发人员在持续集成设备21上录入的软件项目的集成信息和基本信息。
S302、从预先存储的多个步骤模板中确定与步骤标识对应的步骤模板。
具体而言,持续集成设备21从预先存储的多个步骤模板中确定与步骤标识对应的步骤模板。步骤模板是开发人员通过开发设备11、持续集成设备21、其他可编辑的设备中的任一种设备,预先编制完成后存储在持续集成设备21或其他设备上的,以便于持续集成设备21创建持续集成流水线时调用。
示例性地,步骤模板可以是基于仓库管理系统持续集成(Gitlab ContinuousIntegration,简称:Gitlab CI)的语法编制的持续集成(CI)模板文件。编制完成的步骤模板可以存储于持续集成设备21或其他设备上的持续集成模板(CI-Template)仓库中。
S303、按软件项目的处理步骤顺序,将所确定的步骤模板组装成第一持续集成流水线;步骤模板包含多个语言标识各自对应的处理脚本、待配置参数;处理脚本是由一个或多个编译测试的处理指令组成的。
具体而言,持续集成设备21按软件项目的处理步骤顺序,将所确定的步骤模板组装成第一持续集成流水线。步骤模板包含多个语言标识各自对应的处理脚本、待配置参数。处理脚本是由一个或多个编译测试的处理指令组成的。
示例性地,持续集成设备21按步骤S302确定出软件项目的各处理步骤各自对应的CI模板文件后,在持续集成设备21的仓库管理系统(Gitlab)根目录下,按软件项目的处理步骤顺序对CI模板文件进行组装,生成gitlab-ci.yml文件形式的第一持续集成流水线。
可选地,每一软件项目的第一持续集成流水线均存储于持续集成设备21。若其他软件项目的集成信息与持续集成设备21已存储的某一第一持续集成流水线对应,持续集成设备21可以基于软件项目的集成信息,直接调用与集成信息对应的第一持续集成流水线进行后续步骤S304-S305。
由于步骤模板包含多个语言标识各自对应的处理脚本,因此一条第一持续集成流水线可适用于不同种类开发语言的软件项目,提高了对步骤模板和/或第一持续集成流水线进行维护的便捷性和精准性。例如,在持续集成流水线的处理步骤确定的情况下,相对于一种开发语言对应一条第一持续集成流水线的方式,本申请提供的方法实现了多种开发语言对应一条第一持续集成流水线,提高了对第一持续集成流水线进行维护的便捷性;本申请提供的方法,避免了一种开发语言对应一条第一持续集成流水线的情况下,因第一持续集成流水线数量较多,出现部分开发语言对应的第一持续集成流水线在维护过程中被遗忘,而导致维护不到位、不精准问题的出现。本申请中的开发语言包括但不限于面向对象的编程语言JAVA、超文本预处理器(Hypertext Preprocessor,简称:PHP)、面向对象脚本语言RUBY、面向对象的解释型计算机编程语言PYTHON、超文本标记语言(HTML)等开发语言。
S304、从第一持续集成流水线的各步骤模板中确定与语言标识对应的处理脚本和待配置参数。
具体而言,持续集成设备21从第一持续集成流水线的各步骤模板中确定与语言标识对应的处理脚本和待配置参数。
S305、采用所确定的待配置参数对所确定的处理脚本进行配置,得到第二持续集成流水线,以用于软件项目的持续集成。
具体而言,持续集成设备21采用所确定的待配置参数对所确定的处理脚本进行配置,得到第二持续集成流水线,以用于软件项目的持续集成。
可选地,软件项目的基本信息还包括软件项目的源代码的代码标识和部署第二持续集成流水线的服务器的服务器标识。持续集成设备21采用所确定的待配置参数对所确定的处理脚本进行配置,得到第二持续集成流水线可以包括步骤S3051-S3053:
S3051、持续集成设备21确定与代码标识对应的待配置参数。代码标识包括存储软件项目源代码的设备标识、软件项目名称、子项目源代码名称和版本标识。设备标识例如设备的网址或互联网协议(Internet Protocol,简称:IP)地址。
S3052、持续集成设备21采用语言标识和代码标识确定的待配置参数,对所确定的处理脚本进行配置,得到待部署的第一持续集成流水线。
S3053、持续集成设备21将待部署的第一持续集成流水线部署到服务器标识对应的服务器,得到第二持续集成流水线。服务器标识可以是服务器的IP地址。例如,若需将待部署的第一持续集成流水线部署到持续集成设备21,服务器标识则为持续集成设备21的IP地址。可选地,服务器标识对应的服务器也可以是区别于持续集成设备21的服务器或设备。
进一步地,在持续集成设备21采用所确定的待配置参数对所确定的处理脚本进行配置,得到第二持续集成流水线之后,本申请的方法还包括:
持续集成设备21采用第二持续集成流水线,对软件项目进行持续集成。
示例性地,处理步骤为代码检查、代码编译、镜像构建、测试部署、功能测试、上线部署中的任一项。持续集成设备21采用第二持续集成流水线,按如下方式对软件项目进行持续集成:若第二持续集成流水线包括代码检查、代码编译、镜像构建、测试部署、功能测试、上线部署,则,持续集成设备21采用第二持续集成流水线的代码检查、代码编译、镜像构建、测试部署、功能测试,对软件项目进行迭代编译测试;若软件项目的迭代编译测试结果为测试合格,则持续集成设备21采用第二持续集成流水线的上线部署,对软件项目进行迭代上线发布。其中,代码检查、代码编译、镜像构建、测试部署、功能测试、上线部署这些处理步骤是开发人员预先根据软件项目的持续集成需求分解出的持续集成的处理步骤。在本申请提供的持续集成方法中,持续集成还包含了上线发布的处理步骤,如上线部署。
可选地,基本信息还包括表征测试部署方式的测试部署标识和表征上线部署方式的上线部署标识。测试部署的步骤模板包含多种测试部署方式各自对应的处理脚本;上线部署的步骤模板包含多种上线部署方式各自对应的处理脚本。持续集成设备21在采用第二持续集成流水线,对软件项目进行持续集成之前,持续集成设备21从第二持续集成流水线的测试部署的处理脚本中,确定与测试部署标识对应的处理脚本,并冻结与测试部署标识不对应的处理脚本,以防与测试部署标识不对应的处理脚本在软件项目的持续集成过程中被误运行;持续集成设备21从第二持续集成流水线的上线部署的处理脚本中,确定与上线部署标识对应的处理脚本,并冻结与上线部署标识不对应的处理脚本,以防与上线部署标识不对应的处理脚本在软件项目的持续集成过程中被误运行。测试部署方式和上线部署方式均包括但不限于docker容器化部署、kubernetes集群部署等部署方式。
可选地,测试部署的步骤模板包含的处理脚本与上线部署的步骤模板包含的处理脚本均包含待配置部署参数。持续集成设备21可以分别确定与测试部署标识和上线部署标识对应的待配置部署参数。持续集成设备21采用测试部署标识所确定的待配置部署参数,对测试部署标识对应的处理脚本进行配置。持续集成设备21采用上线部署标识所确定的待配置部署参数,对上线部署标识对应的处理脚本进行配置。
可选地,持续集成设备21采用待配置部署参数,对处理脚本进行配置的操作,也可以与步骤S305或S3052一并进行。
测试部署的步骤模板包含多种测试部署方式各自对应的处理脚本,上线部署的步骤模板包含多种上线部署方式各自对应的处理脚本,可确保第一持续集成流水线和第二持续集成流水线满足不同部署方式的软件项目的测试部署和上线部署的需求。在持续集成处理步骤相同的情况下,不同部署方式的软件项目对应同一条第一持续集成流水线和同一条第二持续集成流水线,提高了对第一持续集成流水线和第二持续集成流水线进行部署方式维护的便捷性。
可选地,步骤模板还包含步骤模板的各处理脚本各自对应的容器标识。持续集成设备21可以采用第二持续集成流水线,按如下方式对软件项目进行持续集成:持续集成设备21从预先存储的多个容器中确定与第二持续集成流水线的指定容器标识对应的容器;持续集成设备21在指定容器标识对应容器的容器环境中运行指定容器标识对应的处理脚本,以实现对软件项目的持续集成。本申请中的容器包括但不限于Docker容器。各处理脚本对应的容器是预先构建后存储于容器仓库中。容器仓库可以存储在持续集成设备21或其他设备上。各容器的容器环境可以是开发人员通过开发设备11、持续集成设备21、其他设备中任一种设备,撰写Docker文件(Dockerfile)的形式构建的。构建的各Docker容器被发送到容器仓库(如Docker容器仓库),以便持续集成设备21在持续集成过程中按容器标识从Docker容器仓库中调取对应容器进行持续集成操作。容器标识包含:容器仓库的地址信息,如容器仓库的网址或IP地址、容器的名称或编码。
为处理脚本的运行提供容器环境的各容器之间是相互隔离和独立的,因此,本申请提供的方法将各处理步骤的处理脚本在各自的容器中运行,可以实现多条第二持续集成流水线的并发执行,进而实现不同软件项目的持续集成在同一持续集成设备上并发执行。
进一步地,步骤模板还包含与步骤模板的处理脚本关联的缓存标识。缓存标识包含缓存空间的地址信息。持续集成设备21在容器的容器环境中运行指定容器标识对应的处理脚本,得到处理结果。持续集成设备21将处理结果缓存于与该处理结果关联的缓存标识对应的缓存空间。以便持续集成设备21从缓存空间中调取处理结果,对其进行与之关联的处理步骤的操作。
下面结合一示例对软件项目的持续集成进行说明。假设软件项目的第二持续集成流水线包括的处理步骤及处理步骤顺序为:代码检查→代码编译→镜像构建→测试部署→功能测试→上线部署。软件项目的开发语言为JAVA。软件项目的子项目A和B已经完成持续集成,子项目A和B的源代码存储于持续集成设备21上。持续集成设备21对软件项目中待集成的子项目C进行持续集成的过程如下(1)-(6)所示:
(1)持续集成设备21基于代码检查中已配置的处理脚本(如代码检查脚本)对应的容器标识,从容器仓库中调取对应的容器,并在所调取的容器中运行该已配置的代码检查脚本,实现对持续集成设备21上软件项目的子项目A、B、C的源代码进行代码静态检查,如基于Sonar的代码静态检查,并生成检查结果。检查结果为通过和不通过。其中,若持续集成设备21存储了同一子项目多个版本的源代码,持续集成设备21对持续集成设备21上软件项目的子项目A、B、C的源代码进行代码静态检查,具体为:持续集成设备21对持续集成设备21上软件项目的子项目A、B、C的最新版的源代码进行代码静态检查。
(2)若代码检查结果为通过,则持续集成设备21基于代码编译中已配置的处理脚本(如编译脚本)对应的容器标识,从容器仓库中调取对应的容器。持续集成设备21在所调取的容器中运行该已配置的编译脚本,实现对子项目A、B、C的源代码进行集成,并将集成后的源代码(如JAVA(A+B+C))的开发语言转化为对应的机器语言。机器语言如二进制语言(Binary)。例如,持续集成设备21将JAVA(A+B+C)转化为Binary(A+B+C)
(3)持续集成设备21基于镜像构建中已配置的处理脚本(如镜像构建脚本)对应的容器标识,从容器仓库中调取对应的容器。持续集成设备21在所调取的容器中运行该已配置的镜像构建脚本,实现了对代码编译步骤得到的编译结果Binary(A+B+C)进行镜像,基于镜像得到的编译结果Binary(A+B+C)构建出运行该编译结果Binary(A+B+C)所需的生产容器环境,并将镜像得到的编译结果和所构建的生产容器环境进行打包,得到镜像构建结果。
(4)持续集成设备21基于测试部署中已配置的处理脚本(如测试部署脚本)对应的容器标识,从容器仓库中调取对应的容器。持续集成设备21在所调取的容器中运行该已配置的测试部署脚本,实现将镜像构建结果部署到各功能测试的设备或服务器上。其中,持续集成设备21将镜像构建结果部署到各功能测试的设备或服务器上之前,需进行权限认证。持续集成设备21在权限认证通过后才可将镜像构建结果部署到各功能测试的设备或服务器上。例如持续集成设备21可以采用从软件项目的基本信息中获取的密钥,或,用户名和密码进行权限认证。后续持续集成设备21进行上线部署之前也需进行类似的权限认证。
(5)持续集成设备21基于功能测试中已配置的处理脚本(如功能测试脚本)对应的容器标识,从容器仓库中调取对应的容器,并在所调取的容器中运行该已配置的功能测试脚本。持续集成设备21通过运行功能测试脚本,实现向各功能测试设备或服务器发送测试指令,并接收各功能测试设备或服务器响应测试指令返回的各功能测试结果,还实现对各功能测试结果按预设规则进行处理,将处理得到的软件项目的迭代编译测试结果发送给开发设备11。
(6)若软件项目的迭代编译测试结果为测试合格,则持续集成设备21基于上线部署中已配置的处理脚本(如上线部署脚本)对应的容器标识,从容器仓库中调取对应的容器。持续集成设备21在所调取的容器中运行该已配置的上线部署脚本,实现将镜像构建结果部署到生产服务器13,以对集成了子项目A、B、C的软件项目进行上线发布。
(7)若软件项目的迭代编译测试结果为测试不合格,则开发人员通过开发设备11对子项目C的源代码进行修改。将修改完成后的子项目C源代码发送到持续集成设备21,持续集成设备21重复步骤(1)-(6),对修改后的子项目C源代码进行持续集成。
本申请实施例提供的持续集成方法,通过从预先存储的多个步骤模板中,选择与软件项目的集成步骤对应的步骤模板,并按软件项目的集成步骤顺序组装,得到多种开发语言对应的一条第一持续集成流水线;根据软件项目开发语言的语言标识,确定出第一持续集成流水线中的软件项目所需的处理脚本并对确定的处理脚本进行配置,得到第二持续集成流水线,以用于软件项目的持续集成,本申请提供的方法,解决了在软件项目的数量较多,或,某一软件项目的子项目构造复杂的情况下,采用现有技术为软件项目创建专用的持续集成流水线,创建工作复杂、繁重,容易造成创建的持续集成流水线出错的问题,同时提高了对步骤模板和/或第一持续集成流水线进行维护的便捷性。此外,本申请实施例提供的持续集成方法,创建的第一持续集成流水线和第二持续集成流水线包含了多种部署方式,可满足不同部署方式的软件项目的部署需求;本申请实施例提供的方法还实现了不同软件项目的持续集成在同一持续集成设备上并发执行。
本申请实施例还提供一种持续集成设备。图4为本申请实施例提供的持续集成设备结构图。下面结合图4对本申请实施例提供的持续集成设备进行说明。如图4所示,该设备包括:收发模块41和处理模块42。
收发模块41,用于获取软件项目的集成信息和基本信息。集成信息包括对软件项目进行迭代编译测试的各处理步骤的步骤标识。基本信息包括软件项目的开发语言的语言标识。
处理模块42,用于从预先存储的多个步骤模板中确定与步骤标识对应的步骤模板;按软件项目的处理步骤顺序,将所确定的步骤模板组装成第一持续集成流水线。步骤模板包含多个语言标识各自对应的处理脚本、待配置参数。处理脚本是由一个或多个编译测试的处理指令组成的。
处理模块42,还用于从第一持续集成流水线的各步骤模板中确定与语言标识对应的处理脚本和待配置参数。采用所确定的待配置参数对所确定的处理脚本进行配置,得到第二持续集成流水线,以用于软件项目的持续集成。
本申请实施例提供的持续集成设备,其具体实现方式和技术效果与图3所示实施例的具体实现方式和技术效果类似,本实施例此处不再赘述。
本申请实施例还提供一种持续集成装置。图5为本申请实施例提供的持续集成装置结构图。如图5所示,该持续集成装置包括处理器51和存储器52,存储器52存储有处理器51可执行指令,使得该处理器51可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。应理解,上述处理器51可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。存储器52可能包含高速随机存取存储器(英文:Random Access Memory,简称:RAM),也可能还包括非易失性存储器(英文:Non-volatile memory,简称:NVM),例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
本申请实施例还提供一种存储介质,该存储介质中存储有计算机执行指令,这些计算机执行指令被处理器执行时,实现上述的持续集成方法。存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(英文:StaticRandom-Access Memory,简称:SRAM),电可擦除可编程只读存储器(英文:Electrically-Erasable Programmable Read-Only Memory,简称:EEPROM),可擦除可编程只读存储器(英文:Erasable Programmable Read-Only Memory,简称:EPROM),可编程只读存储器(英文:Programmable Read-Only Memory,简称:PROM),只读存储器(英文:Read-Only Memory,简称:ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(英文:Application Specific Integrated Circuits,简称:ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
本申请实施例还提供一种程序产品,如计算机程序,该计算机程序被处理器执行时实现本申请所涵盖的持续集成方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施方式仅用以说明本发明的技术方案,而非对其进行限制;尽管参照前述实施方式对本发明已经进行了详细的说明,但本领域的普通技术人员应当理解:其依然可以对前述实施方式所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施方式技术方案的范围。

Claims (10)

1.一种持续集成方法,其特征在于,包括:
获取软件项目的集成信息和基本信息;所述集成信息包括对软件项目进行迭代编译测试的各处理步骤的步骤标识;所述基本信息包括所述软件项目的开发语言的语言标识;
从预先存储的多个步骤模板中确定与所述步骤标识对应的步骤模板;
按所述软件项目的处理步骤顺序,将所确定的步骤模板组装成第一持续集成流水线;所述步骤模板包含多个语言标识各自对应的处理脚本、待配置参数;所述处理脚本是由一个或多个编译测试的处理指令组成的;
从所述第一持续集成流水线的各步骤模板中确定与所述语言标识对应的处理脚本和待配置参数;
采用所确定的待配置参数对所确定的处理脚本进行配置,得到第二持续集成流水线,以用于所述软件项目的持续集成。
2.根据权利要求1所述的方法,其特征在于,所述基本信息还包括所述软件项目的源代码的代码标识和部署所述第二持续集成流水线的服务器的服务器标识;
所述采用所确定的待配置参数对所确定的处理脚本进行配置,得到第二持续集成流水线,包括:
确定与所述代码标识对应的待配置参数;
采用所述语言标识和所述代码标识确定的待配置参数,对所确定的处理脚本进行配置,得到待部署的第一持续集成流水线;
将所述待部署的第一持续集成流水线部署到所述服务器标识对应的服务器,得到第二持续集成流水线。
3.根据权利要求1所述的方法,其特征在于,在所述采用所确定的待配置参数对所确定的处理脚本进行配置,得到第二持续集成流水线之后,所述方法还包括:
采用所述第二持续集成流水线,对所述软件项目进行持续集成。
4.根据权利要求3所述的方法,其特征在于,所述处理步骤为代码检查、代码编译、镜像构建、测试部署、功能测试、上线部署中的任一项;
所述采用所述第二持续集成流水线,对所述软件项目进行持续集成,包括:
若所述第二持续集成流水线包括代码检查、代码编译、镜像构建、测试部署、功能测试、上线部署,则,
采用所述第二持续集成流水线的代码检查、代码编译、镜像构建、测试部署、功能测试,对所述软件项目进行迭代编译测试;
若所述软件项目的迭代编译测试结果为测试合格,则采用所述第二持续集成流水线的上线部署,对所述软件项目进行迭代上线发布。
5.根据权利要求4所述的方法,其特征在于,所述基本信息还包括表征测试部署方式的测试部署标识和表征上线部署方式的上线部署标识;
所述测试部署的步骤模板包含多种测试部署方式各自对应的处理脚本;所述上线部署的步骤模板包含多种上线部署方式各自对应的处理脚本;
在所述采用所述第二持续集成流水线,对所述软件项目进行持续集成之前,所述方法还包括:
从所述第二持续集成流水线的测试部署的处理脚本中,确定与所述测试部署标识对应的处理脚本,并冻结与所述测试部署标识不对应的处理脚本;
从所述第二持续集成流水线的上线部署的处理脚本中,确定与所述上线部署标识对应的处理脚本,并冻结与所述上线部署标识不对应的处理脚本。
6.根据权利要求3-5任一项所述的方法,其特征在于,所述步骤模板还包含所述步骤模板的各处理脚本各自对应的容器标识;
所述采用所述第二持续集成流水线,对所述软件项目进行持续集成,包括:
从预先存储的多个容器中确定与所述第二持续集成流水线的指定容器标识对应的容器;
在所述容器的容器环境中运行所述指定容器标识对应的处理脚本。
7.根据权利要求6所述的方法,其特征在于,所述步骤模板还包含与所述步骤模板的处理脚本关联的缓存标识;
所述在所述容器的容器环境中运行所述指定容器标识对应的处理脚本,包括:
在所述容器的容器环境中运行所述指定容器标识对应的处理脚本,得到处理结果;
将所述处理结果缓存于与所述处理结果关联的缓存标识对应的缓存空间。
8.一种持续集成设备,其特征在于,所述设备包括:
收发模块和处理模块;
所述收发模块,用于获取软件项目的集成信息和基本信息;所述集成信息包括对软件项目进行迭代编译测试的各处理步骤的步骤标识;所述基本信息包括所述软件项目的开发语言的语言标识;
所述处理模块,用于从预先存储的多个步骤模板中确定与所述步骤标识对应的步骤模板;按所述软件项目的处理步骤顺序,将所确定的步骤模板组装成第一持续集成流水线;所述步骤模板包含多个语言标识各自对应的处理脚本、待配置参数;所述处理脚本是由一个或多个编译测试的处理指令组成的;
所述处理模块,还用于从所述第一持续集成流水线的各步骤模板中确定与所述语言标识对应的处理脚本和待配置参数;采用所确定的待配置参数对所确定的处理脚本进行配置,得到第二持续集成流水线,以用于所述软件项目的持续集成。
9.一种持续集成装置,其特征在于,所述装置包括:
处理器和存储器;
所述存储器存储所述处理器可执行的可执行指令;
其中,所述处理器执行所述存储器存储的可执行指令,使得所述处理器执行如权利要求1-7任一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-7任一项所述的方法。
CN202211003892.1A 2022-08-19 2022-08-19 持续集成方法、装置及存储介质 Pending CN115328491A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211003892.1A CN115328491A (zh) 2022-08-19 2022-08-19 持续集成方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211003892.1A CN115328491A (zh) 2022-08-19 2022-08-19 持续集成方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN115328491A true CN115328491A (zh) 2022-11-11

Family

ID=83925159

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211003892.1A Pending CN115328491A (zh) 2022-08-19 2022-08-19 持续集成方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN115328491A (zh)

Similar Documents

Publication Publication Date Title
US10114637B1 (en) Automatically updating a shared project build platform
US9760343B2 (en) Application builder based on metadata
US10579966B1 (en) Adapting a shared project build platform to a developer plugin
US9582268B2 (en) Automatic communications graphing for a source application
US20200183683A1 (en) Application architecture generation
CN111324522A (zh) 一种自动化测试系统及方法
CN113703730A (zh) 持续集成方法、装置、计算机设备及存储介质
EP3447635A1 (en) Application architecture generation
US11144314B2 (en) Systems and methods for software documentation and code generation management
CN110647332A (zh) 基于容器云的软件部署方法和装置
CN112506525A (zh) 持续集成和持续交付方法、装置、电子设备及存储介质
CN113885849B (zh) 基于工业互联网平台的应用开发方法、装置及终端设备
US11698829B2 (en) Identifying root causes of software defects
CA2772228A1 (en) Single development test environment
US10459698B2 (en) Framework for generating adapters in an integrated development environment
US20240143468A1 (en) System and methods for testing microservices
CN106909434B (zh) 可执行程序中未定义函数的检测方法及装置
CN117667109A (zh) 一种环境部署方法、装置、电子设备及存储介质
CN109508193B (zh) 一种应用部署运行方法、装置、终端设备和介质
CN115328491A (zh) 持续集成方法、装置及存储介质
CN113672269B (zh) 数据处理方法、系统、电子设备及程序产品
CN115794214A (zh) 应用模块元数据管理方法、设备、存储介质及装置
CN113886008A (zh) 一种虚拟机管理方法、系统、设备以及介质
CN113626307A (zh) 一种基于k8s容器平台的数据校验方法和装置
CN115858012B (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