CN115469882A - 软件项目管理方法、装置、电子设备及存储介质 - Google Patents

软件项目管理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115469882A
CN115469882A CN202211130082.2A CN202211130082A CN115469882A CN 115469882 A CN115469882 A CN 115469882A CN 202211130082 A CN202211130082 A CN 202211130082A CN 115469882 A CN115469882 A CN 115469882A
Authority
CN
China
Prior art keywords
service
project
software project
target software
micro
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
CN202211130082.2A
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.)
Shanghai Baisheng Software Co ltd
Original Assignee
Shanghai Baisheng Software 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 Shanghai Baisheng Software Co ltd filed Critical Shanghai Baisheng Software Co ltd
Priority to CN202211130082.2A priority Critical patent/CN115469882A/zh
Publication of CN115469882A publication Critical patent/CN115469882A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种软件项目管理方法、装置、电子设备及存储介质。确定目标软件项目,其中,所述目标软件项目中包含至少一个微服务;确定与各所述微服务对应的服务镜像,并基于对各所述服务镜像对所述目标软件项目进行集成测试;如果所述服务镜像目标软件项目通过集成测试,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署。本发明实施例的技术方案,实现更加快速有效地部署软件项目,进一步提升软件项目的管理效率。

Description

软件项目管理方法、装置、电子设备及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种软件项目管理方法、装置、电子设备及存储介质。
背景技术
软件项目管理的对象是软件工程项目,简称为软件项目。在实际应用中,一个软件项目中包括大量微服务。现有技术中,对于包含多个微服务的软件项目的管理方式,通常需要人工手动部署微服务,以实现对软件项目的管理。然而,这种软件项目管理方式不仅存在耗时较长,而且还容易出现部署错误的问题,从而导致软件项目的管理效率较低。
发明内容
本发明提供了一种软件项目管理方法、装置、电子设备及存储介质,以实现更加快速有效地部署软件项目,进一步提升软件项目的管理效率。
根据本发明的一方面,提供了一种软件项目管理方法,该方法包括:
确定目标软件项目,其中,所述目标软件项目中包含至少一个微服务;
确定与各所述微服务对应的服务镜像,并基于各所述服务镜像对所述目标软件项目进行集成测试;
如果所述目标软件项目通过集成测试,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署。
可选地,所述基于各所述服务镜像对所述目标软件项目进行集成测试,包括:将所述目标软件项目所对应的各服务镜像部署于预先构建的集成测试环境中,于所述集成测试环境中对所述目标软件项目进行集成测试。
可选地,在所述目标软件项目进行集成测试后,所述方法还包括:
生成人工测试任务,以接收针对人工测试任务的人工测试指令;
所述如果所述目标软件项目通过集成测试,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署,包括:
如果所述目标软件项目通过集成测试,且人工测试指令为人工测试通过指令,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署。
可选地,在所述目标软件项目进行集成测试后,所述方法还包括:生成针对所述目标软件项目的项目版本明细;所述根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署,包括:基于所述项目版本明细,确定所述目标软件项目中各微服务之间的依赖关联,并根据所述依赖关系,对各所述微服务所对应的服务镜像进行部署。
可选地,所述对各所述微服务所对应的服务镜像进行部署,包括:
确定与各所述微服务对应的服务镜像的镜像版本号,并将各所述镜像版本号作为实际参数,传递于预先定义的项目部署脚本中的版本变量;
在参数传递完成后,通过执行所述项目部署脚本对各所述微服务所对应的服务镜像进行部署。
可选地,所述方法还包括:
针对每个微服务,获取所述微服务的待打包资源数据,并对所述待打包资源数据进行打包,生成与所述微服务对应的服务镜像;所述待打包资源数据包括但不限于与所述微服务对应的代码。
可选地,所述确定目标软件项目,包括:
接收用于对软件项目进行管理的项目管理需求,基于所述项目管理需求确定目标软件项目。
根据本发明的另一方面,提供了一种软件项目管理装置。该装置包括:
项目确定模块,用于确定目标软件项目,其中,所述目标软件项目中包含至少一个微服务;
项目测试模块,用于确定与各所述微服务对应的服务镜像,并基于各所述服务镜像对所述目标软件项目进行集成测试;
项目部署模块,用于如果所述目标软件项目通过集成测试,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署。
根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的软件项目管理方法。
根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的软件项目管理方法。
本发明实施例的技术方案,通过确定目标软件项目,其中,所述目标软件项目中包含至少一个微服务;确定与各所述微服务对应的服务镜像,并基于各所述服务镜像对所述目标软件项目进行集成测试;如果所述目标软件项目通过集成测试,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署。本发明实施例的技术方案,实现更加快速有效地部署软件项目,进一步提升软件项目的管理效率。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种软件项目管理方法的流程示意图;
图2为本发明实施例一提供的一种适用于软件项目管理方法的软件项目管理框架的结构示意图;
图3为本发明实施例二提供的一种软件项目管理方法的流程示意图;
图4为本发明实施例三提供的一种软件项目管理方法的流程示意图;
图5为本发明实施例三提供的一种适用于软件项目管理方法的项目版本状态变更的流程示意图;
图6为本发明实施例四提供的一种软件项目管理装置的结构示意图;
图7为本发明实施例四提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。
作为一种可选的但非限定性的实现方式,响应于接收到用户的主动请求,向用户发送提示信息的方式例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或者“不同意”向电子设备提供个人信息的选择控件。
可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其它满足相关法律法规的方式也可应用于本公开的实现方式中。
可以理解的是,本技术方案所涉及的数据(包括但不限于数据本身、数据的获取或使用)应当遵循相应法律法规及相关规定的要求。
实施例一
图1为本发明实施例一提供的一种软件项目管理方法的流程示意图,本实施例可适用于对软件项目进行管理的场景,该方法可以由软件项目管理装置来执行,该软件项目管理装置可以采用硬件和/或软件的形式实现,该软件项目管理装置可配置于诸如计算机或者服务器等的电子设备中。
可以理解的是,在不同的应用场景中,软件项目管理框架可能相同,也可以能不同。本发明实施例的软件项目管理方法可适用于各种软件项目管理框架中。为了便于理解,本发明以一种软件项目管理框架示例性进行介绍。在介绍本发明实施例的软件项目管理方法之前,我们先对示例的软件项目管理框架结构进行介绍,参见图2,本发明实施例中,软件项目管理框架结构运维开发平台和客户服务器。其中,运维开发平台可以包括项目中心、编译中心、测试中心、集群中心、环境中心以及集群管理器。客户服务器包括在客户主机上搭建的k8s集群(Kubernetes集群)以及公有云提供的容器服务。运维开发平台可以通过集群控制器与部署于容器内部的代理(Agent)进行通信,以完成部署和/或升级客户的项目环境。
如图1所示,本实施例的方法包括:
S110、确定目标软件项目,其中,所述目标软件项目中包含至少一个微服务。
其中,目标软件项目可以理解为需要部署的聚合工程项目。目标软件项目的数量可以是一个、两个或两个以上。单个的目标软件项目中可以包括一个或多个微服务。每个微服务都可以围绕着具体业务进行构建,并且能够独立地部署到环境中。在实际应用中,目标软件项目中通常包括多个微服务,且各微服务之间存在依赖关系。
在本发明实施例中,所述确定目标软件项目,包括:接收用于对软件项目进行管理的项目管理需求,基于所述项目管理需求确定目标软件项目。其中,项目管理需求可以理解为针对目标软件项目预先制定的管理需求,可以用于对目标软件项目进行项目管理。项目管理需求可以包括目标软件项目的项目名称,以及针对所述目标软件项目的研发、测试、版本发布以及部署中的至少一个策略。
具体的,接收用户上传的用于对软件项目进行管理的项目管理需求。在接收到项目管理需求后,可以确定项目管理需求中包含的项目名称。从而可以将所述项目名称所对应的软件项目作为目标软件项目。
S120、确定与各所述微服务对应的服务镜像,并基于各所述服务镜像对所述目标软件项目进行集成测试。
其中,服务镜像可以理解为微服务的镜像数据。本发明实施例中,服务镜像和微服务之间的对应关系为一对一。
具体的,在确定目标软件项目中的各微服务后,可以根据各微服务与服务镜像之间的对应关系,确定各微服务对应的服务镜像。在确定各服务镜像后,可以将所述目标软件项目所对应的各服务镜像进行集成打包处理。在打包完成后,可以得到打包完成的目标软件项目。从而可以对所述打包完成的目标软件项目进行集成测试。其中,各微服务与服务镜像之间的对应关系可以是基于各微服务的服务名称和服务镜像的镜像版本号之间对应关系建立得到的。
为了便于对目标软件项目的管理,可以根据目标软件项目的处理流程,标注目标软件项目的项目版本状态。项目版本状态包括测试版本、体验版本、正式版本、无效版本中的至少一个种。具体的,在对所述目标软件项目所对应的各服务镜像进行集成打包处理后,可以将打包完成的目标软件项目的项目版本状态标注为测试版本。在本发明实施例中,对目标软件项目进行测试可以理解为,对项目版本状态标注为测试版本的目标软件项目进行测试。在测试完成后,可以将目标软件项目的项目版本状态由测试版本修改为体验版本。如果所述体验版本的目标软件项目未存在异常,则可以将所述体验版本的目标软件项目的项目版本状态修改为正式版本;否则,将所述体验版本的目标软件项目的项目版本状态修改为无效版本。
在本发明实施例中,在确定各微服务对应的服务镜像之前,还包括:生成各微服务的服务镜像。包括:针对每个微服务,获取所述微服务的待打包资源数据,并对所述待打包资源数据进行打包,生成与所述微服务对应的服务镜像。其中,待打包资源数据可以理解为用于生成微服务的服务镜像的资源数据。待打包资源数据可以包括但不限于与所述微服务对应的程序代码。
具体的,预先设置对目标软件项目进行打包的编译事件。针对每个微服务,可以基于预设编译事件,获取所述微服务的待打包资源数据,对所述待打包资源数据进行容器打包。进而可以生成所述微服务的服务镜像。可选地,获取所述微服务的待打包资源数据,包括:确定用于存储所述微服务的待打包资源数据的存储单元的存储地址。进而可以于所述存储地址所对应的存储空间下载所述待打包资源数据。在此基础上,对所述待打包资源数据进行容器打包,包括:扫描所述微服务的程序代码,确定所述程序代码的代码风格是否符合预设代码风格要求。若是,则对所述程序代码进行单元测试。在单元测试通过后,对所述程序代码进行程序编译,并进行容器打包。从而可以得到所述微服务的服务镜像。
可选地,在生成与各微服务对应的服务镜像后,可以将各服务镜像推送至目标镜像仓库。可以理解的是,目标镜像仓库可以理解为用于存储服务镜像的仓库。
在本发明实施例中,所述基于各所述服务镜像对所述目标软件项目进行集成测试,包括:在确定目标软件项目中与每个微服务的服务镜像时,触发预先创建的集成发布事件。当集成发布事件被触发时,可以对各服务镜像进行打包。在打包完成时,触发预先创建的集成测试事件。当集成测试事件被触发时,可以对已打包完成的目标软件项目进行集成测试。其中,预先创建的集成发布事件可以理解为用于对目标软件项目中的各服务镜像进行打包发版操作。预先创建的集成测试事件可以用于对目标软件项目进行集成测试操作。可选地,预先创建的集成发布事件的参数可以包括目标软件项目的项目版本号。可以理解的是,项目版本号可以理解为目标软件项目的版本号。在本发明实施例中,当集成测试事件被触发时,基于各所述服务镜像对所述目标软件项目进行集成测试,包括:当集成发布事件被触发时,可以将所述目标软件项目所对应的各服务镜像部署于预先构建的集成测试环境中,于所述集成测试环境中对所述目标软件项目进行集成测试。
S130、如果所述目标软件项目通过集成测试,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署。
具体的,如果目标软件项目通过集成测试,则可以生成针对目标软件项目的项目部署指令。进而可以基于所述项目部署指令,确定各微服务之间的依赖关系。进而可以根据各微服务之间的依赖关系,确定与各微服务对应的服务镜像之间的依赖关系。从而可以根据各服务镜像之间的依赖关系,将各服务镜像部署于广域网服务器,即将各服务镜像部署于客户服务器。其中,所述项目部署指令包括集群信息、命名空间(namespace)、项目版本等信息。
可选地,将各服务镜像部署于广域网服务器,包括:可以采用远程部署的方式将各服务镜像部署于广域网服务器;或者,采用本地部署的方式将各服务镜像部署于广域网服务器。需要说明的是,远程部署为:通过访问客户服务器,以实现项目的自动化部署流程。本地部署为:当达到项目部署条件时,生成本地部署命令,由实施人员在客户服务器上执行该本地部署命令完成部署,该方法适用客户服务器无法被集群中心直接访问的情况。
需要说明的是,如图2所示,本发明实施例的项目部署过程包括:Agent集成了包管理器。本发明实施例以包管理为helm工具例进行介绍,当Agent接收到集群中心所生成的部署指令时,则可以确定所述部署指令中的chart仓库地址、版本详情中的镜像tag号变量以及其他部署变量(例如数据库地址等)。在确定后,可以通过调用Helm Api,对Agent所在集群的项目环境进行部署。在部署完成后,可以将所部署的项目环境自动注册到环境中心,以使环境中心具备项目部署的环境。
可以理解的是,如果目标软件项目中的至少一个服务镜像未通过集成测试,则可以生成测试报告,并创建针对目标软件项目的缺陷任务,以接收开发人员提交的与各未通过测试的服务镜像相对应的修复代码。如果接收到针对与各未通过测试的服务镜像相对应的修复代码后,可以提交的源码监控消息推送事件,调用pipeline构建服务镜像。在构建完成之后,可以自动更新集成测试环境中相应的服务,以完成信息缺陷修复的认证。如果构建失败,则可以再次调用pipeline重新构建服务镜像。
当所有缺陷修复完成后,可以进入回归测试流程,包括:构建目标软件项目中全部微服务所对应的服务镜像,并全部服务镜像进行集成测试。构建目标软件项目中全部微服务所对应的服务镜像,包括:基于目标软件项目所涉及的源码,在目标软件项目的版本标识的分支上中创建该版本标识的Tag标识,并行调用pipeline构建服务镜像。构建的标识可以由服务名+版本标识+构建号组成,以便能更好的进行回滚。
在本发明实施例中,所述对各所述微服务所对应的服务镜像进行部署,包括:确定与各所述微服务对应的服务镜像的镜像版本号,并将各所述镜像版本号作为实际参数,传递于预先定义的项目部署脚本中的版本变量;在参数传递完成后,通过执行所述项目部署脚本对各所述微服务所对应的服务镜像进行部署。其中,项目部署(helm chart)脚本可以理解为用于部署目标软件项目的脚本。项目部署脚本包括版本变量。版本变量可以理解为与服务镜像的镜像版本号对应的变量。
为了便于采用一个项目部署脚本部署项目的不同版本,本发明实施中,项目部署脚本中的镜像地址的标识(tag)号以变量的形式暴露到脚本外。可以于项目中心配置界面中的项目部署脚本配置区域输入chart仓库地址,以及配置tag号变量与项目微服务的关联关系。在接收到项目部署指令时,可以将chart的镜像tag号变量的值替换为对应服务版本的镜像tag号。
本发明实施例的技术方案,通过确定目标软件项目,其中,所述目标软件项目中包含至少一个微服务;确定与各所述微服务对应的服务镜像,并基于各所述服务镜像对所述目标软件项目进行集成测试;如果所述目标软件项目通过集成测试,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署。本发明实施例的技术方案,实现更加快速有效地部署软件项目,进一步提升软件项目的管理效率。
实施例二
图3为本发明实施例二提供的一种软件项目管理方法的流程示意图,在前述实施例的基础上,可选地,在所述目标软件项目进行集成测试后,所述方法还包括:生成针对所述目标软件项目的项目版本明细;所述根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署,包括:基于所述项目版本明细,确定所述目标软件项目中各微服务之间的依赖关联,并根据所述依赖关系,对各所述微服务所对应的服务镜像进行部署。其中,与上述实施例相同或相应的技术术语在此不再赘述。
如图3所示,本实施例的方法具体包括:
S210、确定目标软件项目,其中,所述目标软件项目中包含至少一个微服务。
S220、确定与各所述微服务对应的服务镜像,并基于各所述服务镜像对所述目标软件项目进行集成测试。
具体的,预先构建集成测试环境。如果所述目标软件项目的项目版本状态为测试版本,则可以将目标软件项目的服务镜像部署于预先构建的集成测试环境中。进而于所述集成测试环境中对所述目标软件项目进行集成测试。
需要说明的是,测试版本的服务镜像的无法部署到除了集成测试环境以外的其他环境中。
S230、在所述目标软件项目进行集成测试后,生成针对所述目标软件项目的项目版本明细。
其中,项目版本明细可以理解为用于存储所述目标软件项目的项目版本号、项目版本状态、以及所述目标软件项目中全部微服务对应的服务镜像的镜像版本号的文件。项目版本明细中包括所述目标软件项目中全部微服务对应的服务镜像的镜像版本号。为了直观的体现目标软件项目的层次结构,所述项目版本明细的文件格式为JSON格式。本发明实施例中,项目版本明细和项目版版本之间的对应关系为一一对应。可选地,其中,项目版本明细还包括:目标软件项目的版本号和版本状态、以及目标软件项目包含所有微服务的镜像下载地址及tag号,项目版本对应chart部署脚本下载地址等。
S240、如果所述目标软件项目通过集成测试,则基于所述项目版本明细,确定所述目标软件项目中各微服务之间的依赖关联。
具体的,如果所述目标软件项目通过集成测试,则可以对项目版本明细进行解析。进而可以项目版本明细中各微服务之间的依赖关联。
S250、根据所述依赖关系,对各所述微服务所对应的服务镜像进行部署。
本发明实施例的技术方案,在所述目标软件项目进行集成测试后,生成针对所述目标软件项目的项目版本明细。进而基于所述项目版本明细,确定所述目标软件项目中各微服务之间的依赖关联,并根据所述依赖关系,对各所述微服务所对应的服务镜像进行部署。进一步优化了目标软件项目的部署流程。
实施例三
图4为本发明实施例三提供的一种软件项目管理方法的流程示意图,在前述实施例的基础上,可选地,本发明实施的软件项目管理方法,在所述目标软件项目进行集成测试后,还包括:在所述目标软件项目进行集成测试后,所述方法还包括:生成人工测试任务,以接收针对人工测试任务的人工测试指令;所述如果所述目标软件项目通过集成测试,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署,包括:如果所述目标软件项目通过集成测试,且人工测试指令为人工测试通过指令,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署。其中,与上述实施例相同或相应的技术术语在此不再赘述。
如图4所示,本实施例的方法具体包括:
S310、确定目标软件项目,其中,所述目标软件项目中包含至少一个微服务。
S320、确定与各所述微服务对应的服务镜像,并基于各所述服务镜像对所述目标软件项目进行集成测试。
S330、在所述目标软件项目进行集成测试后,生成人工测试任务,以接收针对人工测试任务的人工测试指令。
其中,人工测试任务可以理解为需要进行人工测试而创建的任务。人工测试指令可以是在接收到作用于预设控件(如,测试通过或测试未通过)的点击操作后生成的指令。
具体的,在所述对目标软件项目进行集成测试后,可以生成人工测试任务。在生成人工测试任务后,显示在项目管理界面上,以接收测试人员作用于所述项目管理界面上与人工测试任务对应的控件的点击操作所生成的指令,即以接收针对人工测试任务的人工测试指令。
S340、如果所述目标软件项目通过集成测试,且人工测试指令为人工测试通过指令,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署。
具体的,如果所述目标软件项目通过集成测试,且人工测试指令为人工测试通过指令,则可以确定各微服务之间的依赖关系。进而可以根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署,即将目标软件项目部署于客户服务器。需要说明的是,本发明实施例,采用人工和自动化的方式对软件项目进行测试,不仅可迅速发现测试错误,还可以减少繁琐的测试工作。进一步保证了对软件项目的测试质量。
在本发明实施例中,在将目标软件项目部署于客户服务器时,可以修改目标软件项目的项目版本状态,也就是,修改目标软件项目的版本属性标记(参见图5)。
在上述实施例的基础上,还包括:在对各所述微服务所对应的服务镜像进行部署后,也就是说,在对目标软件项目部署后,如果Agent接收到集群中心下发的针对目标软件项目的升级指令或回滚指令时,则可以基于所述升级指令或所述回滚指令,对所述目标软件项目进行升级或回滚,以实现将软件项目由低版本升级至高版本,或者将软件项目由高版本回滚至低版本。
还需要说明的是,还可以通过集群中心将卸载项目指令发送给Agent。如果Agent接收到卸载项目指令,则可以确定卸载项目指令所对应的项目环境是否为Helm安装的环境。若是,则自动调用Helm卸载api卸载项目。若否,则可以通过控制容器集群将项目环境对应的namespace下所有资源删除。在删除所述命名空间下的所有资源后,可以删除所述命名空间。进一步可以将环境中心中对应的环境信息删除,以实现软件项目卸载管理。
进一步,为了提升软件项目管理的安全性,本发明实施例可采用加密广播模式,即使用开源消息队列协议(zeromq)进行消息广播。可以理解的是,使用开源消息队列协议所广播的消息可以包括部署指令、升级指令或回滚指令等。本发明实施例采用加密广播模式进行广播的好处在于,可便于Agent位于受限网络中的访问需求,以及更便于集群管理器对大量的Agent的并发管理。
为了便于目标软件项目的升级和回滚,可以基于目标软件项目的管理流程,生成目标软件项目的管理日志,以便于后续进一步对目标软件项目的管理。
本发明实施例的技术方案,通过在所述对各所述服务镜像进行集成测试后,生成人工测试任务,以接收针对人工测试任务的人工测试指令。如果所述服务镜像通过集成测试,且人工测试指令为人工测试通过指令,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署。进一步优化了对目标软件项目的管理流程。
实施例四
图6为本发明实施例四提供的一种软件项目管理装置的结构示意图。如图6所示,该装置包括:项目确定模块410、项目测试模块420和项目部署模块430。
其中,项目确定模块410,用于确定目标软件项目,其中,所述目标软件项目中包含至少一个微服务;项目测试模块420,用于确定与各所述微服务对应的服务镜像,并基于各所述服务镜像对所述目标软件项目进行集成测试;项目部署模块430,用于如果所述目标软件项目通过集成测试,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署。
本发明实施例的技术方案,通过确定目标软件项目,其中,所述目标软件项目中包含至少一个微服务;确定与各所述微服务对应的服务镜像,并基于各所述服务镜像对所述目标软件项目进行集成测试;如果所述目标软件项目通过集成测试,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署。本发明实施例的技术方案,实现更加快速有效地部署软件项目,进一步提升软件项目的管理效率。
可选的,项目测试模块420包括:项目测试单元;其中,所述项目测试单元,用于将所述目标软件项目所对应的各服务镜像部署于预先构建的集成测试环境中,于所述集成测试环境中对所述目标软件项目进行集成测试。
可选地,该装置还包括:人工测试任务生成模块,用于在所述目标软件项目进行集成测试后,生成人工测试任务,以接收针对人工测试任务的人工测试指令;相应的,项目部署模块430,用于如果所述目标软件项目通过集成测试,且人工测试指令为人工测试通过指令,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署。
可选地,该装置还包括:项目版本明细生成模块,用于在所述目标软件项目进行集成测试后,生成针对所述目标软件项目的项目版本明细;项目部署模块430,用于基于所述项目版本明细,确定所述目标软件项目中各微服务之间的依赖关联,并根据所述依赖关系,对各所述微服务所对应的服务镜像进行部署。
可选地,项目部署模块430,用于确定与各所述微服务对应的服务镜像的镜像版本号,并将各所述镜像版本号作为实际参数,传递于预先定义的项目部署脚本中的版本变量;在参数传递完成后,通过执行所述项目部署脚本对各所述微服务所对应的服务镜像进行部署。
可选地,该装置还包括:服务镜像生成模块;其中,所述服务镜像生成模块用于针对每个微服务,获取所述微服务的待打包资源数据,并对所述待打包资源数据进行打包,生成与所述微服务对应的服务镜像;所述待打包资源数据包括但不限于与所述微服务对应的代码。
可选地,项目确定模块410,用于接收用于对软件项目进行管理的项目管理需求,基于所述项目管理需求确定目标软件项目。
本发明实施例所提供的软件项目管理装置可执行本发明任意实施例所提供的软件项目管理方法,具备执行方法相应的功能模块和有益效果。
值得注意的是,上述软件项目管理装置所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明实施例的保护范围。
实施例五
图7示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图7所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如软件项目管理方法。
在一些实施例中,软件项目管理方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的软件项目管理方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行软件项目管理方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (10)

1.一种软件项目管理方法,其特征在于,包括:
确定目标软件项目,其中,所述目标软件项目中包含至少一个微服务;
确定与各所述微服务对应的服务镜像,并基于各所述服务镜像对所述目标软件项目进行集成测试;
如果所述目标软件项目通过集成测试,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署。
2.根据权利要求1所述的方法,其特征在于,所述基于各所述服务镜像对所述目标软件项目进行集成测试,包括:
将所述目标软件项目所对应的各服务镜像部署于预先构建的集成测试环境中,于所述集成测试环境中对所述目标软件项目进行集成测试。
3.根据权利要求1所述的方法,其特征在于,在所述目标软件项目进行集成测试后,所述方法还包括:
生成人工测试任务,以接收针对人工测试任务的人工测试指令;
所述如果所述目标软件项目通过集成测试,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署,包括:
如果所述目标软件项目通过集成测试,且人工测试指令为人工测试通过指令,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署。
4.根据权利要求1所述的方法,其特征在于,在所述目标软件项目进行集成测试后,所述方法还包括:
生成针对所述目标软件项目的项目版本明细;
所述根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署,包括:
基于所述项目版本明细,确定所述目标软件项目中各微服务之间的依赖关联,并根据所述依赖关系,对各所述微服务所对应的服务镜像进行部署。
5.根据权利要求1所述的方法,其特征在于,所述对各所述微服务所对应的服务镜像进行部署,包括:
确定与各所述微服务对应的服务镜像的镜像版本号,并将各所述镜像版本号作为实际参数,传递于预先定义的项目部署脚本中的版本变量;
在参数传递完成后,通过执行所述项目部署脚本对各所述微服务所对应的服务镜像进行部署。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
针对每个微服务,获取所述微服务的待打包资源数据,并对所述待打包资源数据进行打包,生成与所述微服务对应的服务镜像;所述待打包资源数据包括但不限于与所述微服务对应的代码。
7.根据权利要求1所述的方法,其特征在于,所述确定目标软件项目,包括:
接收用于对软件项目进行管理的项目管理需求,基于所述项目管理需求确定目标软件项目。
8.一种软件项目管理装置,其特征在于,包括:
项目确定模块,用于确定目标软件项目,其中,所述目标软件项目中包含至少一个微服务;
项目测试模块,用于确定与各所述微服务对应的服务镜像,并基于各所述服务镜像对所述目标软件项目进行集成测试;
项目部署模块,用于如果所述目标软件项目通过集成测试,则根据各微服务之间的依赖关系,对各所述微服务所对应的服务镜像进行部署。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的软件项目管理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-7中任一项所述的软件项目管理方法。
CN202211130082.2A 2022-09-16 2022-09-16 软件项目管理方法、装置、电子设备及存储介质 Pending CN115469882A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211130082.2A CN115469882A (zh) 2022-09-16 2022-09-16 软件项目管理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211130082.2A CN115469882A (zh) 2022-09-16 2022-09-16 软件项目管理方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN115469882A true CN115469882A (zh) 2022-12-13

Family

ID=84333348

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211130082.2A Pending CN115469882A (zh) 2022-09-16 2022-09-16 软件项目管理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115469882A (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109358858A (zh) * 2018-09-19 2019-02-19 网易(杭州)网络有限公司 自动化部署方法、装置、介质及电子设备
CN109597605A (zh) * 2018-10-22 2019-04-09 平安科技(深圳)有限公司 应用微服务部署方法、装置、存储介质及终端设备
CN109710524A (zh) * 2018-12-19 2019-05-03 上海华兴数字科技有限公司 一种自动测试方法、系统和计算机存储介质
CN109933329A (zh) * 2019-03-01 2019-06-25 深圳微品致远信息科技有限公司 一种软件产品通过云端进行智能部署运维的方法
CN110347395A (zh) * 2018-04-03 2019-10-18 中移信息技术有限公司 基于云计算平台的软件发布方法及装置
CN112148269A (zh) * 2020-10-22 2020-12-29 深圳市思迅软件股份有限公司 研发持续集成方法、装置、计算机设备及存储介质
CN112711397A (zh) * 2020-12-29 2021-04-27 航天信息股份有限公司 一种基于微服务和顶层设计的建立系统的方法及系统
CN112732561A (zh) * 2020-12-31 2021-04-30 武汉悦学帮网络技术有限公司 一种项目部署方法、装置、计算机设备和存储介质
CN113609019A (zh) * 2021-08-09 2021-11-05 山东乾云启创信息科技股份有限公司 一种容器云应用跨集群部署的流水线方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110347395A (zh) * 2018-04-03 2019-10-18 中移信息技术有限公司 基于云计算平台的软件发布方法及装置
CN109358858A (zh) * 2018-09-19 2019-02-19 网易(杭州)网络有限公司 自动化部署方法、装置、介质及电子设备
CN109597605A (zh) * 2018-10-22 2019-04-09 平安科技(深圳)有限公司 应用微服务部署方法、装置、存储介质及终端设备
CN109710524A (zh) * 2018-12-19 2019-05-03 上海华兴数字科技有限公司 一种自动测试方法、系统和计算机存储介质
CN109933329A (zh) * 2019-03-01 2019-06-25 深圳微品致远信息科技有限公司 一种软件产品通过云端进行智能部署运维的方法
CN112148269A (zh) * 2020-10-22 2020-12-29 深圳市思迅软件股份有限公司 研发持续集成方法、装置、计算机设备及存储介质
CN112711397A (zh) * 2020-12-29 2021-04-27 航天信息股份有限公司 一种基于微服务和顶层设计的建立系统的方法及系统
CN112732561A (zh) * 2020-12-31 2021-04-30 武汉悦学帮网络技术有限公司 一种项目部署方法、装置、计算机设备和存储介质
CN113609019A (zh) * 2021-08-09 2021-11-05 山东乾云启创信息科技股份有限公司 一种容器云应用跨集群部署的流水线方法及装置

Similar Documents

Publication Publication Date Title
CN108108297B (zh) 自动化测试的方法和装置
US8984489B2 (en) Quality on submit process
US11093232B2 (en) Microservice update system
US11061669B2 (en) Software development tool integration and monitoring
US9256400B2 (en) Decision service manager
CN112199355B (zh) 数据迁移方法、装置、电子设备及存储介质
CN113778486A (zh) 一种代码流水线的容器化处理方法、装置、介质及设备
CN111831567B (zh) 应用的测试环境配置方法、装置、系统和介质
CN114527996A (zh) 一种多服务的部署方法、装置、电子设备及存储介质
CN114168179A (zh) 微服务管理方法、装置、计算机设备和存储介质
CN109828830B (zh) 用于管理容器的方法和装置
CN110727575A (zh) 一种信息处理方法、系统、装置、以及存储介质
CN110489090B (zh) 一种基于应用模型的应用软件开发方法及系统
US11893383B2 (en) Configuration properties management for software
CN113296796A (zh) 项目发布方法、装置、系统、存储介质、电子设备
US9059992B2 (en) Distributed mobile enterprise application platform
CN115469882A (zh) 软件项目管理方法、装置、电子设备及存储介质
CN114218313A (zh) 数据管理方法、装置、电子设备、存储介质及产品
US10644939B2 (en) Decision service manager
CN113704016B (zh) 云功能组件诊断方法、装置、设备、存储介质
CN113360368B (zh) 一种软件性能测试的方法和装置
US20220237021A1 (en) Systems and methods of telemetry diagnostics
CN117251250A (zh) 基于云原生平台的容器管理方法及相关设备
CN114860247A (zh) 数据处理方法、装置、设备及存储介质
CN113886271A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20221213