CN113504939B - 项目版本发布的管理方法、装置、电子设备及计算机可读介质 - Google Patents
项目版本发布的管理方法、装置、电子设备及计算机可读介质 Download PDFInfo
- Publication number
- CN113504939B CN113504939B CN202110775912.6A CN202110775912A CN113504939B CN 113504939 B CN113504939 B CN 113504939B CN 202110775912 A CN202110775912 A CN 202110775912A CN 113504939 B CN113504939 B CN 113504939B
- Authority
- CN
- China
- Prior art keywords
- software package
- version
- project
- code
- server
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了项目版本发布的管理方法、装置、电子设备及计算机可读介质,涉及自动程序设计技术领域。该方法的一具体实施方式包括:使用持续集成工具获取待发布的项目版本的项目代码,对所述项目代码进行编译打包,生成对应的软件包;其中,所述持续集成工具设置在基于私有云搭建的开发环境上;将所述软件包部署到基于公有云搭建的测试环境中,在所述测试环境下对所述软件包进行测试,测试通过后,发布所述项目版。该实施方式通过设置在私有云开发环境下的持续集成工具,实现了对项目代码的版本构建,进而将版本构建得到的软件包部署到基于公有云搭建的测试环境,完成项目测试,满足了私有云开发环境和公有云测试环境保持隔离的限制。
Description
技术领域
本发明涉及自动程序设计技术领域,尤其涉及一种项目版本发布的管理方法、装置、电子设备及计算机可读介质。
背景技术
为了保证安全性和私密性,很多企业会使用私有云进行工作。但是在一些项目中,需要在企业的私有云内网搭建专门的开发环境,在公有云上部署测试环境,同时为了保证安全性,公有云和私有云需要尽可能隔离。基于上述需求,在项目版本发布过程中需要解决如下问题:项目代码在私有云开发环境如何托管,开发完成后如何构建版本,以及如何将构建完成的版本发布到公有云测试环境等。
发明内容
有鉴于此,本发明实施例提供项目版本发布的管理方法、装置、电子设备及计算机可读介质,该方法通过设置在私有云开发环境下的持续集成工具,实现了对项目代码的版本构建,进而将版本构建得到的软件包部署到基于公有云搭建的测试环境,完成项目测试以及发布,满足了私有云开发环境和公有云测试环境保持隔离的限制。
为实现上述目的,根据本发明实施例的一个方面,提供了一种项目版本发布的管理方法。
本发明实施例的一种项目版本发布的管理方法,包括:使用持续集成工具获取待发布的项目版本的项目代码,对所述项目代码进行编译打包,生成对应的软件包;其中,所述持续集成工具设置在基于私有云搭建的开发环境上;将所述软件包部署到基于公有云搭建的测试环境中,在所述测试环境下对所述软件包进行测试,测试通过后,发布所述项目版本。
可选地,所述对所述项目代码进行编译打包,生成对应的软件包,包括:根据在所述持续集成工具中预编写的编译命令和编译依赖关系,对所述项目代码进行编译,得到编译结果;按照在所述持续集成工具中预配置的文件格式,对所述编译结果进行格式化处理,得到对应的软件包。
可选地,所述使用持续集成工具获取待发布的项目版本的项目代码,包括:根据在持续集成工具中预配置的代码参数,从代码库获取相应的项目代码。
可选地,所述将所述软件包部署到基于公有云搭建的测试环境中,包括:将所述软件包存储到测试服务器,执行部署脚本;其中,所述测试服务器设置在基于公有云搭建的测试环境上。
可选地,所述将所述软件包部署到基于公有云搭建的测试环境中的步骤之前,所述方法还包括:使用所述持续集成工具,将所述软件包上传到第一文件服务器;其中,所述第一文件服务器设置在基于私有云搭建的开发环境上;将所述第一文件服务器的软件包同步到第二文件服务器;其中,所述第二文件服务器设置在基于公有云搭建的测试环境上;所述将所述软件包存储到测试服务器,包括:使用文件拷贝命令,从所述第二文件服务器中拷贝所述软件包到测试服务器。
可选地,所述将所述第一文件服务器的软件包同步到第二文件服务器,包括:根据预编写的数据同步命令的命令参数,执行所述数据同步命令,以通过所述命令参数中的同步端口,将所述第一文件服务器的软件包增量同步到第二文件服务器;其中,所述命令参数包括所述第一文件服务器的路径信息,第二文件服务器的路径信息和所述同步端口。
可选地,所述方法还包括:创建日志文件;判断软件包同步是否成功,将判断结果写入所述日志文件。
可选地,所述执行所述数据同步命令,包括:根据预设置的定时任务,定时执行所述数据同步命令。
可选地,所述执行部署脚本,包括:根据预设置的版本部署的时间窗口,定时执行部署脚本。
可选地,所述定时执行部署脚本的步骤之前,所述方法还包括:判断所述持续集成工具是否完成版本构建,如果所述持续集成工具未完成版本构建,则等待版本构建完成后,将所述软件包存储到所述测试服务器,触发所述部署脚本的执行;所述将所述软件包存储到测试服务器,执行部署脚本,包括:如果所述持续集成工具完成版本构建,则将所述软件包存储到测试服务器,根据预设置的版本部署的时间窗口,定时执行部署脚本。
可选地,所述使用持续集成工具获取待发布的项目版本的项目代码,包括:按照设定的版本构建时间,使用持续集成工具获取待发布的项目版本的项目代码;其中,所述版本构建时间与所述时间窗口之间具有设定第一时间间隔,且所述版本构建时间早于所述时间窗口。
可选地,所述方法还包括:按照设定的代码提交时间,将编写好的所述项目代码提交至代码库;其中,所述代码提交时间与所述版本构建时间之间具有设定第二时间间隔,且所述代码提交时间早于所述版本构建时间。
为实现上述目的,根据本发明实施例的另一方面,提供了一种项目版本发布的管理装置。
本发明实施例的一种项目版本发布的管理装置,包括:版本构建模块,用于使用持续集成工具获取待发布的项目版本的项目代码,对所述项目代码进行编译打包,生成对应的软件包;其中,所述持续集成工具设置在基于私有云搭建的开发环境上;测试发布模块,用于将所述软件包部署到基于公有云搭建的测试环境中,在所述测试环境下对所述软件包进行测试,测试通过后,发布所述项目版本。
可选地,所述版本构建模块,还用于根据在所述持续集成工具中预编写的编译命令和编译依赖关系,对所述项目代码进行编译,得到编译结果;以及按照在所述持续集成工具中预配置的文件格式,对所述编译结果进行格式化处理,得到对应的软件包。
可选地,所述版本构建模块,还用于根据在持续集成工具中预配置的代码参数,从代码库获取相应的项目代码。
可选地,所述测试发布模块,还用于将所述软件包存储到测试服务器,执行部署脚本;其中,所述测试服务器设置在基于公有云搭建的测试环境上。
可选地,所述装置还包括:文件同步模块,用于使用所述持续集成工具,将所述软件包上传到第一文件服务器;其中,所述第一文件服务器设置在基于私有云搭建的开发环境上;以及将所述第一文件服务器的软件包同步到第二文件服务器;其中,所述第二文件服务器设置在基于公有云搭建的测试环境上;所述测试发布模块,还用于使用文件拷贝命令,从所述第二文件服务器中拷贝所述软件包到测试服务器。
可选地,所述文件同步模块,还用于根据预编写的数据同步命令的命令参数,执行所述数据同步命令,以通过所述命令参数中的同步端口,将所述第一文件服务器的软件包增量同步到第二文件服务器;其中,所述命令参数包括所述第一文件服务器的路径信息,第二文件服务器的路径信息和所述同步端口。
可选地,所述装置还包括:日志写入模块,用于创建日志文件;判断软件包同步是否成功,将判断结果写入所述日志文件。
可选地,所述文件同步模块,还用于根据预设置的定时任务,定时执行所述数据同步命令。
可选地,所述测试发布模块,还用于根据预设置的版本部署的时间窗口,定时执行部署脚本。
可选地,所述装置还包括:自动部署模块,用于判断所述持续集成工具是否完成版本构建,如果所述持续集成工具未完成版本构建,则等待版本构建完成后,将所述软件包存储到所述测试服务器,触发所述部署脚本的执行;所述测试发布模块,还用于如果所述持续集成工具完成版本构建,则将所述软件包存储到测试服务器,根据预设置的版本部署的时间窗口,定时执行部署脚本。
可选地,所述版本构建模块,还用于按照设定的版本构建时间,使用持续集成工具获取待发布的项目版本的项目代码;其中,所述版本构建时间与所述时间窗口之间具有设定第一时间间隔,且所述版本构建时间早于所述时间窗口。
可选地,所述装置还包括:代码提交模块,用于按照设定的代码提交时间,将编写好的所述项目代码提交至代码库;其中,所述代码提交时间与所述版本构建时间之间具有设定第二时间间隔,且所述代码提交时间早于所述版本构建时间。
为实现上述目的,根据本发明实施例的再一方面,提供了一种电子设备。
本发明实施例的一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种项目版本发布的管理方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质。
本发明实施例的一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种项目版本发布的管理方法。
上述发明中的一个实施例具有如下优点或有益效果:通过设置在私有云开发环境下的持续集成工具,实现了对项目代码的版本构建,进而将版本构建得到的软件包部署到基于公有云搭建的测试环境,完成项目测试以及发布,满足了私有云开发环境和公有云测试环境保持隔离的限制。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的项目版本发布的管理方法的主要步骤的示意图;
图2是根据本发明实施例的项目版本发布的管理方法的实现原理示意图;
图3是根据本发明实施例的项目版本发布的管理方法的主要流程的示意图;
图4是本发明实施例的项目版本发布的管理方法中所使用的Jenkins工具的Source Code Management界面示意图;
图5示是本发明实施例的项目版本发布的管理方法中所使用的Jenkins工具的Build界面示意图;
图6是根据本发明实施例的项目版本发布的管理装置的主要模块的示意图;
图7是本发明实施例可以应用于其中的示例性系统架构图;
图8是适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
下面对本发明实施例涉及的术语进行解释。
私有云:Private Clouds,是为客户单独使用而构建的,提供对数据、安全性和服务质量的最有效控制。客户公司拥有基础设施,并可以控制在此基础设施上部署应用程序的方式。私有云可部署在企业数据中心的防火墙内,也可以将它们部署在一个安全的主机托管场所,私有云的核心属性是专有资源。
公有云:Public Clouds,通常指第三方提供商为用户提供的能够使用的云,一般可通过Internet使用。公有云的核心属性是共享资源服务。企业通过自己的基础设施直接向外部用户提供服务,外部用户通过互联网访问服务。
Git:是一个开源的分布式版本控制系统,它可以追踪任何变化的文件,支持完整的工作流程,来保证数据的完整性和处理事务的高效性。
Gitlab:是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
Jenkins:是一个开源的、提供友好操作界面的持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。
rsync:全称为remote sync,是Linux系统下的数据镜像备份工具。使用remotesync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
SSH:为安全外壳协议,全称为Secure Shell,是专为远程登录会话和其他网络服务提供安全性的协议。
FTP:为文件传输协议,全称为File Transfer Protocol,是用于在本地机器和远程机器之间进行文件传输的一套标准协议。
Telnet:为远程终端协议,是Internet远程登录服务的标准协议和主要方式,为用户提供了在本地计算机上完成远程主机工作的能力。
图1是根据本发明实施例的项目版本发布的管理方法的主要步骤的示意图。如图1所示,本发明实施例的项目版本发布的管理方法,主要包括如下步骤:
步骤S101:使用持续集成工具获取待发布的项目版本的项目代码,对所述项目代码进行编译打包,生成对应的软件包。持续集成工具设置在基于私有云搭建的开发环境上,用于进行版本构建。用户可以在持续集成工具的用户界面中配置代码参数,编写编译命令和编译依赖关系,并配置文件格式。其中,代码参数用于指示要获取哪些代码,文件格式用于指定最终生成的软件包的格式。
该步骤中,持续集成工具根据配置的代码参数,从代码库获取待发布的项目版本对应的项目代码,之后根据编写的编译命令和编译依赖关系,对项目代码进行编译,得到编译结果,之后按照配置的文件格式,对编译结果进行格式化处理,即可得到对应的软件包。
步骤S102:将所述软件包部署到基于公有云搭建的测试环境中,在所述测试环境下对所述软件包进行测试,测试通过后,发布所述项目版本。版本构建完成后,需要将得到的软件包部署到基于公有云搭建的测试环境中,以使得该软件包能够在测试环境中正常运行,进而可以对项目的软件包进行测试,得到测试结果。在确定测试通过后,上传该软件包到代码平台,实现项目版本的发布。
部署工作包括将软件包放到测试环境,以及配置测试环境以使软件包能够正常运行。实施例中,可以在基于公有云搭建的测试环境上布设测试服务器,并将软件包存储到该测试服务器,执行部署脚本,完成软件包在公有云测试环境的部署。其中,部署脚本用于配置测试环境。
图2是根据本发明实施例的项目版本发布的管理方法的实现原理示意图。如图2所示,本发明实施例的项目版本发布的管理方法实现了私有云和公有云这两种云网络之间的服务部署。该方法由代码库、Jenkins构建平台、第一文件服务器、第二文件服务器和测试服务器实现。其中,代码库、Jenkins工具和第一文件服务器架设在基于私有云搭建的开发环境上,这些服务器之间可以使用SSH服务进行文件传输。第二文件服务器和测试服务器架设在基于公有云搭建的测试环境上,这些服务器之间也可以使用SSH服务进行文件传输。
代码库用于管理开发人员编写的项目代码。该项目代码可以是对外输出项目(是指根据客户需求进行定制化开发、测试直至投产,并可提供一定期限的售后服务的项目)的项目代码。实施例中,项目代码可以是该项目包含的各个组件的代码。其中,组件是一个提供特定功能、可以独立编译、构建打包、部署投产的物理单元系统,比如对私存款组件、对公存款组件等。
Jenkins构建平台用于进行版本构建,具体地,从代码库获取项目代码,对项目代码编译打包后,上传至第一文件服务器。由于私有云开发环境和公有云测试环境需要相隔离,即关闭SSH、FTP和Telnet服务,为了将软件包发布到测试环境,可以使用数据同步命令,将第一文件服务器的软件包同步至第二文件服务器,之后定时部署到测试服务器,至此实现了不同网络环境下对项目的配置管理、版本构建及发布部署。
图3是根据本发明实施例的项目版本发布的管理方法的主要流程的示意图。如图3所示,本发明实施例的项目版本发布的管理方法,主要包括如下步骤:
步骤S301:将编写好的项目代码提交至代码库。开发人员基于项目需求编写项目代码,将当前版本的项目代码提交至代码库。代码库设置在基于私有云搭建的开发环境上。在一可选的实施例中,代码库还可以从开发人员的终端设备中拉取代码,代码库可以是Gitlab代码库、Git代码库。
步骤S302:使用持续集成工具从代码库获取项目代码,对项目代码进行编译打包,生成对应的软件包。该步骤用于进行版本构建。持续集成工具设置在基于私有云搭建的开发环境上,可以为Jenkins、TeamCity等,实施例中,可选用Jenkins。Jenkins工具提供了版本构建的指引步骤:Generel、Source Code Management、Build Triggers、BuildEnvironment、Build、Post-build Actions。
其中,General用于设置基本内容;Source Code Management用于设置工程代码获取方式和管理;Build Triggers用于选择工程构建触发的条件;Build Environment用于选择工程build及构建的环境配置;Build用于正式进行构建;Post-build Actions用于设置Build动作执行完后的后续工作。实际配置中,可以根据需要选择某些步骤进行配置。
图4和图5示出了分别示出了本发明实施例的Jenkins工具的Source CodeManagement界面和Build界面。其中,获取目标代码是在Source Code Management界面实现的,编译打包是在Build界面实现的。其中,编译依赖Maven库完成。其中,Maven是一个项目管理工具,可以通过一小段描述信息来管理项目的构建。
如图4所示,在Source Code Management界面的Repository URL项配置组件的Git仓库地址,在Credentials项填写Git仓库的用户名和密码,在Branch Specifier项配置获取代码的分支。如图5所示,在Build界面的Command项写明编译命令、编译依赖关系、最终软件包的格式。
步骤S303:使用持续集成工具,将软件包上传到第一文件服务器。其中,第一文件服务器设置在基于私有云搭建的开发环境上。上传也是在Build界面实现的。如图5所示,在Build界面的Command项写明上传命令(该上传命令包括第一文件服务器的地址),以将软件包上传至第一文件服务器。
实施例中,上传命令可以是scp(是secure copy的缩写)命令,该命令用于Linux之间复制文件和目录,是Linux下基于SSH登陆进行安全的远程文件拷贝命令。
步骤S304:将第一文件服务器的软件包同步到第二文件服务器。其中,第二文件服务器设置在基于公有云搭建的测试环境上。该步骤的实现过程可以为:根据预编写的数据同步命令的命令参数,执行数据同步命令,以通过命令参数中的同步端口,将第一文件服务器的软件包增量同步到第二文件服务器。其中,命令参数包括第一文件服务器的路径信息,第二文件服务器的路径信息和同步端口。上述实现过程可以写在文件同步脚本中。
由于代码改动和测试比较频繁,每天要传输的文件、版本数量多,且同步时效存在时间要求,比如半小时内(即存储在第一文件服务器的软件包,需要在半小时内同步到第二文件服务器)。基于上述需求,可以使用Linux系统的rsync数据镜像备份工具来同步文件。rsync是增量传输,每次只传送本地和远程两个服务器之间的不同部分,保证传输速度。
另外,由于私有云和公有云相互隔离,因此需要启动第一文件服务器和第二文件服务器的rsync服务,并指定同步端口,比如873端口来完成两台服务器间的增量同步。在一优选的实施例中,为了满足时效性,可以将同步设置为定时任务,每隔设定时间,比如10分钟,执行一次同步。
在一优选的实施例中,为了方便查阅同步过程,可以将同步过程写入日志文件。此时,文本同步脚本的执行流程可以如下:创建日志文件,该日志文件带有时间格式;之后执行数据同步命令(即rsync命令),该命令中指定本地同步目录(即第一文件服务器的路径信息)、远程服务器同步目录(即第二文件服务器的路径信息)和同步端口(即873端口),将同步过程写入日志文件;之后判断软件包同步是否成功,将判断结果写入日志文件。
实施例中,如果软件包同步成功,则可以在日志文件写入succeeded;若同步失败,则可以在日志文件写入failed。为实现文件同步脚本的自动执行,可以设置定时任务,每隔设定时间,自动执行文件同步脚本。
步骤S305:从第二文件服务器中获取软件包,将软件包部署到测试服务器。其中,测试服务器设置在基于公有云搭建的测试环境上。该步骤可以使用文件拷贝命令,从第二文件服务器中拷贝软件包到测试服务器。实施例中,文件拷贝命令为scp命令。部署过程可以包括:执行部署脚本,检查数据库、服务是否正常启动等动作。如果数据库、服务未正常启动,需通知开发人员查看、解决。
步骤S306:在测试环境下对项目进行测试,测试通过后,发布该项目的软件包。将软件包部署到测试服务器后,可以对软件包进行测试,测试通过后,进行版本发布。
由于软件包部署操作具有一定的时间窗口,为了实现自动化部署,在一可选的实施例中,可以根据时间窗口,定时执行版本部署脚本(包括步骤S305的实现流程)。比如,软件包部署操作的时间窗口为:8:00、13:00、19:00,则可以在上述3个时间,执行版本部署脚本。
在另一优选的实施例中,为了保证软件包部署操作执行时,版本构建已经结束,可以在执行版本部署脚本之前,判断持续集成工具是否完成版本构建,如果持续集成工具未完成版本构建,则等待版本构建完成后,再将软件包存储到测试服务器,触发部署脚本的执行(可以手动触发)。为了实现非交互式获取软件包,需设置测试服务器免密登录第二文件服务器。
在一可选的实施例中,为了实现版本构建和部署发布的自动化,还可以基于软件包部署的时间窗口,倒推设置版本构建时间(版本构建时间与时间窗口之间具有设定的第一时间间隔,且版本构建时间早于时间窗口),并以此要求开发人员最晚的代码提交时间(代码提交时间与版本构建时间之间具有设定的第二时间间隔,且代码提交时间早于版本构建时间),最终可实现开发、版本构建和部署的全自动化。下面举例说明。
假设软件包部署操作的时间窗口为:8:00、13:00、19:00,一般版本构建时间不超过半小时,则可以设置版本构建时间为:7:00、12:00、18:00,开发人员需在版本构建之前提交代码,则可以设置三个版本构建窗口对应最晚的代码提交时间为:6:50、11:50和17:50,并按照该代码提交时间,将编写好的所述项目代码提交至代码库。如果未在代码提交时间提交,则延至下一次批次。
构建人员按照上述版本构建时间,使用持续集成工具进行版本构建,构建结束后将软件包上传至第一文件服务器;之后使用rsync工具将软件包从第一文件服务器同步至第二文件服务器;部署人员按照时间窗口设置定时部署任务,以使得可以在8:00、13:00、19:00,通过执行部署脚本从第二文件服务器获取软件包,部署到测试服务器,由测试人员对软件包进行测试。
可以理解的是,如果当前次版本构建失败,在步骤S305获取的实际上是上一个窗口的软件包,并不影响测试环境。
上述实施例中,使用开源的Gitlab、Git作为代码版本管理工具,一方面节省开支,另一方面能够利用Git的分布式特性,灵活地支持并行开发。Jenkins作为开源的持续集成工具,能够灵活地完成版本构建和打包,并支持将软件包上传至指定服务器。rsync数据镜像备份工具可以仅通过873端口实现两台服务器之间的文件增量同步,满足了私有云开发环境和公有云测试环境保持隔离的限制,在保密和安全的前提下,提高了服务效率和便利性。
图6是根据本发明实施例的项目版本发布的管理装置的主要模块的示意图。如图6所示,本发明实施例的项目版本发布的管理装置600,主要包括:
版本构建模块601,用于使用持续集成工具获取待发布的项目版本的项目代码,对所述项目代码进行编译打包,生成对应的软件包。持续集成工具设置在基于私有云搭建的开发环境上,用于进行版本构建。用户可以在持续集成工具的用户界面中配置代码参数,编写编译命令和编译依赖关系,并配置文件格式。其中,代码参数用于指示要获取哪些代码,文件格式用于指定最终生成的软件包的格式。
该模块中,持续集成工具根据配置的代码参数,从代码库获取待发布的项目版本对应的项目代码,之后根据编写的编译命令和编译依赖关系,对项目代码进行编译,得到编译结果,之后按照配置的文件格式,对编译结果进行格式化处理,即可得到对应的软件包。
测试发布模块602,用于将所述软件包部署到基于公有云搭建的测试环境中,在所述测试环境下对所述软件包进行测试,测试通过后,发布所述项目版本。版本构建完成后,需要将得到的软件包部署到基于公有云搭建的测试环境中,以使得该软件包能够在测试环境中正常运行,进而可以对项目的软件包进行测试,得到测试结果。在确定测试通过后,上传该软件包到代码平台,实现项目版本的发布。
部署工作包括将软件包放到测试环境,以及配置测试环境以使软件包能够正常运行。实施例中,可以在基于公有云搭建的测试环境上布设测试服务器,并将软件包存储到该测试服务器,执行部署脚本,完成软件包在公有云测试环境的部署。其中,部署脚本用于配置测试环境。
另外,本发明实施例的项目版本发布的管理600还可以包括:文件同步模块、日志写入模块、自动部署模块和代码提交模块(图6中未示出)。其中,文件同步模块,用于使用所述持续集成工具,将所述软件包上传到第一文件服务器;其中,所述第一文件服务器设置在基于私有云搭建的开发环境上;以及将所述第一文件服务器的软件包同步到第二文件服务器;其中,所述第二文件服务器设置在基于公有云搭建的测试环境上。
日志写入模块,用于创建日志文件;判断软件包同步是否成功,将判断结果写入所述日志文件。自动部署模块,用于判断所述持续集成工具是否完成版本构建,如果所述持续集成工具未完成版本构建,则等待版本构建完成后,将所述软件包存储到所述测试服务器,触发所述部署脚本的执行。
代码提交模块,用于按照设定的代码提交时间,将编写好的所述项目代码提交至代码库;其中,所述代码提交时间与所述版本构建时间之间具有设定第二时间间隔,且所述代码提交时间早于所述版本构建时间。
从以上描述可以看出,通过设置在私有云开发环境下的持续集成工具,实现了对项目代码的版本构建,进而将版本构建得到的软件包部署到基于公有云搭建的测试环境,完成项目测试以及发布,满足了私有云开发环境和公有云测试环境保持隔离的限制。
图7示出了可以应用本发明实施例的项目版本发布的管理方法或项目版本发布的管理装置的示例性系统架构700。
如图7所示,系统架构700可以包括终端设备701、702、703,网络704和服务器705。网络704用以在终端设备701、702、703和服务器705之间提供通信链路的介质。网络704可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备701、702、703通过网络704与服务器705交互,以接收或发送消息等。终端设备701、702、703上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备701、702、703可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器705可以是提供各种服务的服务器,例如对管理员利用终端设备701、702、703所提交的项目代码提供支持的后台管理服务器。后台管理服务器可以对项目代码进行版本构建、部署、测试、发布等处理,并将处理结果(例如测试结果、发布结果)反馈给终端设备。
需要说明的是,本发明实施例所提供的项目版本发布的管理方法一般由服务器705执行,相应地,项目版本发布的管理装置一般设置于服务器705中。
应该理解,图7中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
根据本发明的实施例,本发明还提供了一种电子设备和一种计算机可读介质。
本发明的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种项目版本发布的管理方法。
本发明的计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种项目版本发布的管理方法。
下面参考图8,其示出了适于用来实现本发明实施例的电子设备的计算机系统800的结构示意图。图8示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括版本构建模块和测试发布模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,版本构建模块还可以被描述为“使用持续集成工具获取待发布的项目版本的项目代码,对所述项目代码进行编译打包,生成对应的软件包的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:使用持续集成工具获取待发布的项目版本的项目代码,对所述项目代码进行编译打包,生成对应的软件包;其中,所述持续集成工具设置在基于私有云搭建的开发环境上;将所述软件包部署到基于公有云搭建的测试环境中,在所述测试环境下对所述软件包进行测试,测试通过后,发布所述项目版本。
根据本发明实施例的技术方案,通过设置在私有云开发环境下的持续集成工具,实现了对项目代码的版本构建,进而将版本构建得到的软件包部署到基于公有云搭建的测试环境,完成项目测试以及发布,满足了私有云开发环境和公有云测试环境保持隔离的限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (13)
1.一种项目版本发布的管理方法,其特征在于,包括:
使用持续集成工具获取待发布的项目版本的项目代码,对所述项目代码进行编译打包,生成对应的软件包;其中,所述持续集成工具设置在基于私有云搭建的开发环境上;
使用所述持续集成工具,将所述软件包上传到第一文件服务器;其中,所述第一文件服务器设置在基于私有云搭建的开发环境上;将所述第一文件服务器的软件包同步到第二文件服务器;其中,所述第二文件服务器设置在基于公有云搭建的测试环境上;
将所述软件包部署到基于公有云搭建的测试环境中,包括:将所述软件包存储到测试服务器,执行部署脚本;其中,所述测试服务器设置在基于公有云搭建的测试环境上;在所述测试环境下对所述软件包进行测试,测试通过后,发布所述项目版本;
其中,将所述软件包存储到测试服务器,包括:使用文件拷贝命令,从所述第二文件服务器中拷贝所述软件包到测试服务器。
2.根据权利要求1所述的方法,其特征在于,所述对所述项目代码进行编译打包,生成对应的软件包,包括:
根据在所述持续集成工具中预编写的编译命令和编译依赖关系,对所述项目代码进行编译,得到编译结果;
按照在所述持续集成工具中预配置的文件格式,对所述编译结果进行格式化处理,得到对应的软件包。
3.根据权利要求1所述的方法,其特征在于,所述使用持续集成工具获取待发布的项目版本的项目代码,包括:
根据在持续集成工具中预配置的代码参数,从代码库获取相应的项目代码。
4.根据权利要求1所述的方法,其特征在于,所述将所述第一文件服务器的软件包同步到第二文件服务器,包括:
根据预编写的数据同步命令的命令参数,执行所述数据同步命令,以通过所述命令参数中的同步端口,将所述第一文件服务器的软件包增量同步到第二文件服务器;
其中,所述命令参数包括所述第一文件服务器的路径信息,第二文件服务器的路径信息和所述同步端口。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
创建日志文件;
判断软件包同步是否成功,将判断结果写入所述日志文件。
6.根据权利要求4所述的方法,其特征在于,所述执行所述数据同步命令,包括:
根据预设置的定时任务,定时执行所述数据同步命令。
7.根据权利要求1所述的方法,其特征在于,所述执行部署脚本,包括:
根据预设置的版本部署的时间窗口,定时执行部署脚本。
8.根据权利要求7所述的方法,其特征在于,所述定时执行部署脚本的步骤之前,所述方法还包括:
判断所述持续集成工具是否完成版本构建,如果所述持续集成工具未完成版本构建,则等待版本构建完成后,将所述软件包存储到所述测试服务器,触发所述部署脚本的执行;
所述将所述软件包存储到测试服务器,执行部署脚本,包括:
如果所述持续集成工具完成版本构建,则将所述软件包存储到测试服务器,根据预设置的版本部署的时间窗口,定时执行部署脚本。
9.根据权利要求7所述的方法,其特征在于,所述使用持续集成工具获取待发布的项目版本的项目代码,包括:
按照设定的版本构建时间,使用持续集成工具获取待发布的项目版本的项目代码;其中,所述版本构建时间与所述时间窗口之间具有设定第一时间间隔,且所述版本构建时间早于所述时间窗口。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
按照设定的代码提交时间,将编写好的所述项目代码提交至代码库;其中,所述代码提交时间与所述版本构建时间之间具有设定第二时间间隔,且所述代码提交时间早于所述版本构建时间。
11.一种项目版本发布的管理装置,其特征在于,包括:
版本构建模块,用于使用持续集成工具获取待发布的项目版本的项目代码,对所述项目代码进行编译打包,生成对应的软件包;其中,所述持续集成工具设置在基于私有云搭建的开发环境上;
文件同步模块,用于使用所述持续集成工具,将所述软件包上传到第一文件服务器;其中,所述第一文件服务器设置在基于私有云搭建的开发环境上;以及将所述第一文件服务器的软件包同步到第二文件服务器;其中,所述第二文件服务器设置在基于公有云搭建的测试环境上;
测试发布模块,用于将所述软件包部署到基于公有云搭建的测试环境中,包括:将所述软件包存储到测试服务器,执行部署脚本;其中,所述测试服务器设置在基于公有云搭建的测试环境上;在所述测试环境下对所述软件包进行测试,测试通过后,发布所述项目版本;其中,将所述软件包存储到测试服务器,包括:使用文件拷贝命令,从所述第二文件服务器中拷贝所述软件包到测试服务器。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-10中任一所述的方法。
13.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-10中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110775912.6A CN113504939B (zh) | 2021-07-08 | 2021-07-08 | 项目版本发布的管理方法、装置、电子设备及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110775912.6A CN113504939B (zh) | 2021-07-08 | 2021-07-08 | 项目版本发布的管理方法、装置、电子设备及计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113504939A CN113504939A (zh) | 2021-10-15 |
CN113504939B true CN113504939B (zh) | 2022-09-09 |
Family
ID=78012415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110775912.6A Active CN113504939B (zh) | 2021-07-08 | 2021-07-08 | 项目版本发布的管理方法、装置、电子设备及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113504939B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113849190B (zh) * | 2021-11-30 | 2022-03-08 | 广州鲁邦通智能科技有限公司 | 一种基于云管理平台的持续集成和部署方法及装置 |
CN114328263A (zh) * | 2021-12-31 | 2022-04-12 | 北京字节跳动网络技术有限公司 | 程序测试项目的部署方法、访问方法及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9182990B1 (en) * | 2014-07-01 | 2015-11-10 | Google Inc. | Method and apparatus for detecting execution of unsupported instructions while testing multiversioned code |
CN106293704A (zh) * | 2016-07-26 | 2017-01-04 | 北京北森云计算股份有限公司 | 多语言云编译的动态微服务编辑方法、装置和服务器 |
CN109639778A (zh) * | 2018-11-29 | 2019-04-16 | 威富通科技有限公司 | 一种资料传导方法、私有云及服务器 |
CN112732561A (zh) * | 2020-12-31 | 2021-04-30 | 武汉悦学帮网络技术有限公司 | 一种项目部署方法、装置、计算机设备和存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109725911A (zh) * | 2017-10-31 | 2019-05-07 | 北京国双科技有限公司 | 一种多环境项目部署方法、装置、存储介质及处理器 |
US10503496B2 (en) * | 2018-02-02 | 2019-12-10 | Bank Of America Corporation | Smart tool for enterprise-wide version control of codes during software integration and deployment |
US11262983B2 (en) * | 2019-05-29 | 2022-03-01 | Red Hat, Inc. | Services integration in an integrated development environment |
CN112162753A (zh) * | 2020-09-28 | 2021-01-01 | 腾讯科技(深圳)有限公司 | 软件部署方法、装置、计算机设备和存储介质 |
CN112162761A (zh) * | 2020-10-14 | 2021-01-01 | 广州欢网科技有限责任公司 | 自动化部署项目至公有云容器化平台的方法、系统及设备 |
CN112199164A (zh) * | 2020-10-19 | 2021-01-08 | 国网新疆电力有限公司信息通信公司 | 一种保证容器镜像一致性的方法 |
-
2021
- 2021-07-08 CN CN202110775912.6A patent/CN113504939B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9182990B1 (en) * | 2014-07-01 | 2015-11-10 | Google Inc. | Method and apparatus for detecting execution of unsupported instructions while testing multiversioned code |
CN106293704A (zh) * | 2016-07-26 | 2017-01-04 | 北京北森云计算股份有限公司 | 多语言云编译的动态微服务编辑方法、装置和服务器 |
CN109639778A (zh) * | 2018-11-29 | 2019-04-16 | 威富通科技有限公司 | 一种资料传导方法、私有云及服务器 |
CN112732561A (zh) * | 2020-12-31 | 2021-04-30 | 武汉悦学帮网络技术有限公司 | 一种项目部署方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113504939A (zh) | 2021-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108647083B (zh) | 任务执行方法、装置、系统、电子设备及计算机可读介质 | |
CN108196915B (zh) | 基于应用容器引擎的代码处理方法、设备及存储介质 | |
CN113504939B (zh) | 项目版本发布的管理方法、装置、电子设备及计算机可读介质 | |
CN109358858A (zh) | 自动化部署方法、装置、介质及电子设备 | |
WO2021076310A1 (en) | Systems and methods for cross-platform scheduling and workload automation | |
US9529639B2 (en) | System and method for staging in a cloud environment | |
US10331418B2 (en) | State machine representation of a development environment deployment process | |
WO2024077885A1 (zh) | 容器集群的管理方法、装置、设备及非易失性可读存储介质 | |
US20130318520A1 (en) | Early configuration in deploying an enterprise application | |
WO2019029451A1 (zh) | 发布移动应用的方法和电子设备 | |
CN113434158A (zh) | 一种大数据组件的自定义管理方法、装置、设备及介质 | |
CN113626036A (zh) | 一种基于Jenkins的代码集成管理方法和系统 | |
CN112579353A (zh) | 自动运维方法、装置及大数据平台 | |
CN117112122A (zh) | 一种集群部署方法和装置 | |
US20170161026A1 (en) | Deployment of development environments | |
CN113127009A (zh) | 大数据管理平台的自动化部署方法和装置 | |
CN113296828A (zh) | 一种发布应用的方法、服务器和系统 | |
CN110019059B (zh) | 一种定时同步的方法和装置 | |
CN111897565A (zh) | 基于物联网的数据处理方法、装置和设备 | |
CN112445860A (zh) | 一种处理分布式事务的方法和装置 | |
CN116974716A (zh) | 调度任务的发布方法、装置、电子设备及存储介质 | |
CN115964302A (zh) | 一种数据测试的方法和装置 | |
CN112241332B (zh) | 一种接口补偿的方法和装置 | |
CN112564979A (zh) | 构建任务的执行方法、装置、计算机设备和存储介质 | |
CN112099841A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |