CN110532189B - 一种持续集成系统、方法及装置 - Google Patents
一种持续集成系统、方法及装置 Download PDFInfo
- Publication number
- CN110532189B CN110532189B CN201910823427.4A CN201910823427A CN110532189B CN 110532189 B CN110532189 B CN 110532189B CN 201910823427 A CN201910823427 A CN 201910823427A CN 110532189 B CN110532189 B CN 110532189B
- Authority
- CN
- China
- Prior art keywords
- server
- application package
- package
- source code
- 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.)
- Active
Links
Images
Classifications
-
- 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/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- 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/3664—Environments for testing or debugging software
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种持续集成系统,包括:源代码管理服务器、持续集成服务器、目标服务器;源代码管理服务器存储行业应用系统的源代码;持续集成服务器监测源代码管理服务器存储的源代码是否发生变更;如果监测到源代码管理服务器的指定分支源代码发生了变更,则依次触发构建任务、部署任务和测试任务;其中,所述构建任务生成能够运行在目标服务器上的应用包;目标服务器从持续集成服务器获取应用包,获得持续集成服务器发送的部署命令,将应用包部署在目标服务器,获得持续集成服务器发送的测试命令,对目标服务器上运行的应用包进行测试。解决了行业应用系统的构建、部署、测试等步骤中需要频繁的手工操作导致维护难度大的问题。
Description
本申请要求于2019年07月18日提交中国专利局、申请号为201910650420.7、发明名称为“一种持续集成系统、方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及计算机技术领域,具体涉及一种持续集成系统。本申请还涉及一种持续集成方法及装置。
背景技术
某些行业应用系统(例如,保险行业)具有高度的行业知识要求,同时又必须推陈出新以适应竞争多变的市场需求,从而积累了行业专有且复杂多样的功能,使得行业应用系统越来越复杂,逐渐发展出了规模性的特点。为了使得提供行业专有且复杂多样的功能的行业应用系统容易维护,企业往往会根据清晰的系统架构层次将行业应用系统拆分成多个子系统,对于这些子系统进行针对性的测试以保证代码的质量。一个行业应用系统项目开发过程中往往涉及到一个或多个子系统,将所有代码开发完成之后再集成到一起进行测试的模式严重制约版本发布。在项目中定期、快速的构建涉及到的子系统,并进行测试,对于提高行业应用系统的开发效率非常重要。
保险行业应用系统的规模性特点使得其开发过程需要持续集成。所谓持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,测试)来验证,从而尽早地发现集成错误。
现有的持续集成系统中,源代码管理服务器、持续集成服务器、部署行业应用系统应用包的目标服务器(例如:项目组准生产测试环境的Web服务器、测试组组提测版本测试环境的Web服务器、项目组冻结测试环境的Web服务器、项目组准功能测试环境的Web服务器)各自管理,在行业应用系统的构建、部署、测试等步骤中需要频繁的手工操作,维护难度大。
发明内容
本申请提供一种持续集成系统,以解决行业应用系统的构建、部署、测试等步骤中需要频繁的手工操作导致维护难度大的问题。
本申请提供一种持续集成系统,包括:
源代码管理服务器、持续集成服务器、目标服务器;其中,
所述源代码管理服务器,用于存储行业应用系统的源代码,所述源代码包括至少一个分支源代码;
所述持续集成服务器,用于监测所述源代码管理服务器存储的源代码是否发生变更;如果监测到所述源代码管理服务器的至少一个分支源代码中指定分支源代码发生了变更,则依次触发针对所述目标服务器的构建任务、部署任务和测试任务;其中,所述构建任务包括:从所述源代码管理服务器获取所述指定分支源代码,对所述指定分支源代码进行编译,生成能够运行在所述目标服务器上的应用包;所述部署任务包括:获取所述应用包,将所述应用包部署在所述目标服务器上;所述测试任务包括对所述目标服务器上运行的所述应用包进行测试;
所述目标服务器,用于从所述持续集成服务器获取所述应用包,获得持续集成服务器发送的部署命令,根据所述部署命令将所述应用包部署在所述目标服务器,并且获得持续集成服务器发送的测试命令,根据所述测试命令对所述目标服务器上运行的所述应用包进行测试。
可选的,所述持续集成服务器,具体用于:
根据单元测试命令对所述指定分支源代码进行单元测试,根据编译命令对经过单元测试后的指定分支源代码进行编译,得到编译后的文件,根据打包命令对所述编译后的文件进行打包操作,得到所述应用包。
可选的,所述持续集成服务器,具体用于:使用Junit对所述指定分支源代码进行单元测试,将所述编译后的文件输出到classes目录,将编译后的文件打包成Jar包或War包。
可选的,所述持续集成服务器,还用于:
定时轮询所述源代码管理服务器,如果检测到所述指定分支源代码发生变更,则触发所述构建任务。
可选的,所述持续集成服务器,具体用于:
设置定时轮询所述源代码管理服务器的轮询频率或触发所述构建任务的触发时间。
可选的,所述持续集成服务器,还用于:
获得所述目标服务器运行所述应用包提供的运行环境信息,根据所述运行环境信息提供生成所述应用包需要依赖的系统环境,在所述生成所述应用包需要依赖的系统环境中执行所述构建任务,生成所述应用包。
可选的,所述运行环境信息包括:所述目标服务器的机器类型、机器规格及操作系统;所述生成所述应用包需要依赖的系统环境包括:生成所述应用包需要依赖的机器类型、机器规格、操作系统及其他用于构建任务的软件。
可选的,所述持续集成服务器,还用于:按照预设规范配置所述目标服务器的端口、登录用户名、用户主路径、Weblogic9路径、Domains_HOME路径、应用包上传路径、JDK5路径、JDK6路径、JDK7路径、JDK8路径、Tomcat7路径、Weblogic11路径、Weblogic12路径、数据源命名、Domain命名、console控制台登录用户名、Server命名、启动domain脚本路径与命名、关闭domain脚本路径与命名、win应用服务器登录用户名中的至少之一。
可选的,所述持续集成服务器,还用于:
检测所述目标服务器的配置环境是否符合所述预设规范,如果不符合预设规范,则不执行所述部署任务和/或所述测试任务,产生告警信息,如果符合预设规范,则执行所述部署任务和/或所述测试任务。
可选的,所述目标服务器,为下述任一服务器:项目组功能测试环境的Web服务器、项目组准生产测试环境的Web服务器、项目组冻结测试环境的Web服务器、测试组提测版本测试环境的Web服务器。
可选的,所述持续集成服务器,还用于:向所述目标服务器发送卸载命令;
所述目标服务器,还用于:接收所述持续集成服务器发送的卸载命令,根据所述卸载命令卸载所述目标服务器上部署或运行的应用包,删除用于所述应用包的指定目录后,接收所述持续集成服务器部署新应用包的部署命令,将新应用包部署到指定目录下,解压缩所述新应用包,运行新应用包。
可选的,所述持续集成服务器,还用于:向所述目标服务器发送重启命令;
所述目标服务器,还用于:接收所述重启命令,根据所述重启命令关闭domain脚本,清理domain缓存,启动domain脚本。
可选的,所述持续集成服务器,还用于:在执行所述部署任务后向所述目标服务器发送验证所述应用包的命令,所述应用包提供URL;
所述目标服务器,还用于:接收所述验证命令,根据所述验证命令使用httppost对象检查所述应用包提供的URL是否能够被访问,如果否,则提示所述应用包提供的URL不能够被访问。
可选的,所述持续集成服务器还用于:对所述指定分支源代码中变更文件进行增量编译,生成增量包,所述增量包为相对于变更前的应用包的增量包,将所述增量包提供给部署了所述变更前的应用包的目标服务器;
所述目标服务器,还用于:从所述持续集成服务器获取所述增量包,解压缩所述增量包和所述变更前的应用包,将所述增量包中的文件替换所述变更前的应用包中的对应文件后,得到新的应用包,部署并运行新应用包。
可选的,所述持续集成系统还包括配置管理服务器,用于在指定目录下存储包含所述应用包和版本文档的标准版本压缩包;
所述持续集成服务器,还用于:依次触发针对所述目标服务器的部署任务、针对所述配置管理服务器和所述目标服务器的集成测试任务;其中,所述集成测试任务包括:将所述应用包和版本文档打包成用于集成测试的标准版本压缩包,或者,按照指定文件清单以增量方式打包成用于集成测试的标准版本压缩包,将所述标准版本压缩包上传到所述配置管理服务器的指定目录下,向所述目标服务器下发集成测试命令;
所述目标服务器,还用于:接收所述集成测试命令,根据所述集成测试命令从所述配置管理服务器获取所述用于集成测试的标准版本压缩包,解压缩所述用于集成测试的标准版本压缩包,按照所述版本文档部署所述应用包,对所述应用包进行集成测试。
可选的,所述持续集成服务器,还用于:查询和/或管理所述配置管理服务器上的指定目录下的文件清单。
可选的,所述持续集成系统还包括:数据库;所述数据库存储有对所述应用包进行测试使用的业务数据和测试用例,配合所述目标服务器对所述应用包进行测试。
可选的,所述持续集成服务器具体用于:向所述数据库发送更新数据库命令;
所述数据库具体用于:接收持续集成服务器发送的更新数据库命令,根据所述更新数据库命令更新所述数据库。
可选的,所述持续集成服务器,还用于:在所述构建任务、所述部署任务、所述测试任务、所述集成测试任务、所述更新数据库中的任一项执行失败后,提示执行失败信息。
可选的,所述持续集成服务器,还用于:指定所述应用包的存储期间,在所述存储期间内所述应用包为可用应用包,如果所述部署任务执行失败,则指示所述目标服务器回滚到指定版本的可用应用包。
本申请还提供一种持续集成方法,包括:
监测源代码管理服务器存储的源代码是否发生变更;
如果监测到所述源代码管理服务器的至少一个分支源代码中指定分支源代码发生了变更,则依次触发针对所述目标服务器的构建任务、部署任务和测试任务;
其中,所述构建任务包括:从所述源代码管理服务器获取所述指定分支源代码,对所述指定分支源代码进行编译,生成能够运行在所述目标服务器上的应用包;所述部署任务包括:获取所述应用包,将所述应用包部署在所述目标服务器上;所述测试任务包括对所述目标服务器上运行的所述应用包进行测试。
可选的,所述从所述源代码管理服务器获取所述指定分支源代码,对所述指定分支源代码进行编译,生成能够运行在所述目标服务器上的应用包,包括:
根据所述构建任务的源代码获取命令从所述源代码管理服务器获取所述指定分支源代码;
根据所述构建任务的单元测试命令对所述指定分支源代码进行单元测试;
根据所述构建任务的编译命令对单元测试后的源代码进行编译,得到编译后的文件;
根据所述构建任务的打包命令对所述编译后的文件进行打包操作,得到所述应用包。
可选的,所述根据所述构建任务的单元测试命令对所述指定分支源代码进行单元测试,包括:使用Junit对所述指定分支源代码进行单元测试;
所述根据所述构建任务的打包命令对所述编译后的文件进行打包操作,得到所述应用包,包括:将编译后的文件打包成Jar包或War包,所述Jar包或War包即为所述应用包。
可选的,所述方法还包括:
定时轮询所述源代码管理服务器,如果检测到所述指定分支源代码发生变更,则触发所述构建任务。
可选的,所述方法还包括:
设置定时轮询所述源代码管理服务器的轮询频率或触发所述构建任务的触发时间。
可选的,所述方法还包括:
获得所述目标服务器运行所述应用包提供的运行环境信息;
根据所述运行环境信息提供生成所述应用包需要依赖的系统环境;
在所述生成所述应用包需要依赖的系统环境中执行所述构建任务,生成所述应用包。
可选的,所述运行环境信息包括:所述目标服务器的机器类型、机器规格及操作系统;所述生成所述应用包需要依赖的系统环境包括:生成所述应用包需要依赖的机器类型、机器规格、操作系统及其他用于构建任务的软件。
可选的,所述方法还包括:按照预设规范配置所述目标服务器的端口、登录用户名、用户主路径、Weblogic9路径、Domains_HOME路径、应用包上传路径、JDK5路径、JDK6路径、JDK7路径、JDK8路径、Tomcat7路径、Weblogic11路径、Weblogic12路径、数据源命名、Domain命名、console控制台登录用户名、Server命名、启动domain脚本路径与命名、关闭domain脚本路径与命名、win应用服务器登录用户名中的至少之一。
可选的,所述方法还包括:
检测所述目标服务器的配置环境是否符合所述预设规范;
如果不符合预设规范,则不执行所述部署任务和/或所述测试任务,产生告警信息;
如果符合预设规范,则执行所述部署任务和/或所述测试任务。
可选的,所述目标服务器,为下述任一服务器:项目组功能测试环境的Web服务器、项目组准生产测试环境的Web服务器、项目组冻结测试环境的Web服务器、测试组提测版本测试环境的Web服务器。
可选的,所述方法还包括:向所述目标服务器发送卸载命令,指示所述目标服务器进行下述操作:卸载所述目标服务器上部署或运行的应用包,删除用于所述应用包的指定目录后,接收所述持续集成服务器部署新应用包的部署命令,将新应用包部署到指定目录下,解压缩所述新应用包,运行新应用包。
可选的,所述方法还包括:向所述目标服务器发送重启命令,指示所述目标服务器进行下述操作:关闭domain脚本,清理domain缓存,启动domain脚本。
可选的,所述方法还包括:在执行所述部署任务后向所述目标服务器发送验证所述应用包的命令,所述应用包提供URL,指示所述目标服务器进行下述操作:使用httppost对象检查所述应用包提供的URL是否能够被访问,如果否,则提示所述应用包提供的URL不能够被访问。
可选的,所述方法还包括:对所述指定分支源代码中变更文件进行增量编译,生成增量包,所述增量包为相对于变更前的应用包的增量包,将所述增量包提供给部署了所述变更前的应用包的目标服务器。
可选的,所述方法还包括:
依次触发针对所述目标服务器的部署任务、针对所述配置管理服务器和所述目标服务器的集成测试任务;其中,所述集成测试任务包括:将所述应用包和版本文档打包成用于集成测试的标准版本压缩包,或者,按照指定文件清单以增量方式打包成用于集成测试的标准版本压缩包,将所述标准版本压缩包上传到所述配置管理服务器的指定目录下,向所述目标服务器下发集成测试命令,指示所述目标服务器对所述应用包进行集成测试。
可选的,所述方法还包括:查询和/或管理所述配置管理服务器上的指定目录下的文件清单。
可选的,所述方法还包括:
向数据库发送更新数据库命令;所述数据库存储有对所述应用包进行测试使用的业务数据和测试用例,配合所述目标服务器对所述应用包进行测试。
可选的,所述方法还包括:在所述构建任务、所述部署任务、所述测试任务、所述集成测试任务、所述更新数据中的任一项执行失败后,提示执行失败信息。
可选的,所述方法还包括:
指定所述应用包的存储期间,在所述存储期间内所述应用包为可用应用包;
如果所述部署任务执行失败,则指示所述目标服务器回滚到指定版本的可用应用包。
本申请还提供一种持续集成装置,包括:
监测单元,用于监测源代码管理服务器存储的源代码是否发生变更;
任务触发单元,用于监测到所述源代码管理服务器的至少一个分支源代码中指定分支源代码发生了变更,则依次触发针对所述目标服务器的构建任务、部署任务和测试任务;
其中,所述构建任务包括:从所述源代码管理服务器获取所述指定分支源代码,对所述指定分支源代码进行编译,生成能够运行在所述目标服务器上的应用包;所述部署任务包括:获取所述应用包,将所述应用包部署在所述目标服务器上;所述测试任务包括对所述目标服务器上运行的所述应用包进行测试。
与现有技术相比,本申请具有以下优点:
本申请提供的持续集成系统,通过持续集成服务器监测源代码管理服务器的代码变更,如果监测到指定分支源代码发生了变更,依次触发针对目标服务器的构建任务、部署任务、测试任务;目标服务器从持续集成服务器获取所述应用包,根据持续集成服务器发送的部署命令在目标服务器上部署并运行所述应用包,根据持续集成服务器发送的测试命令对所述应用包进行测试。构建任务、部署任务以及测试任务依次触发,减少了手工操作,从而解决了行业应用系统的构建、部署、测试等步骤中需要频繁的手工操作导致维护难度大的问题。
本申请提供的持续集成方法及装置,通过监测源代码管理服务器存储的源代码是否发生变更;如果监测到所述源代码管理服务器的至少一个分支源代码中指定分支源代码发生了变更,则依次触发针对所述目标服务器的构建任务、部署任务和测试任务;其中,所述构建任务包括:从所述源代码管理服务器获取所述指定分支源代码,对所述指定分支源代码进行编译,生成能够运行在所述目标服务器上的应用包;所述部署任务包括:获取所述应用包,将所述应用包部署在所述目标服务器上;所述测试任务包括对所述目标服务器上运行的所述应用包进行测试。构建任务、部署任务以及测试任务依次触发,能够减少手工操作,从而解决了行业应用系统的构建、部署、测试等步骤中需要频繁的手工操作导致维护难度大的问题。进一步,制定合适的研发测试环境管理规范,按照预设规范对目标服务器进行管理,能建立良好的研发测试环境,提升集成效率。
附图说明
图1是本申请第一实施例提供的持续集成系统示意图;
图2是本申请第二实施例提供的持续集成方法的处理流程图;
图3是本申请第二实施例提供的一种企业级自动化持续集成管理方案的流程图;
图4是本申请第三实施例提供的持续集成装置示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请第一实施例提供一种持续集成系统。本申请同时涉及一种持续集成方法及装置。在下面的实施例中逐一进行详细说明。
本申请第一实施例提供一种持续集成系统。
以下结合图1对本申请第一实施例提供的一种持续集成系统进行说明。
图1所示的持续集成系统,包括:源代码管理服务器101、持续集成服务器102、目标服务器103。
所述源代码管理服务器101,用于存储行业应用系统的源代码,所述源代码包括至少一个分支源代码。
本申请实施例提供的持续集成系统,构建任务、部署任务以及测试任务均为自动触发,不需要太多手工操作干预,可以用于规模化的行业应用系统的开发实践,达到持续集成的目的,有利于检查缺陷,避免项目早期引入的缺陷到集成阶段才被发现的问题,保证版本在质量得到控制的情况下如期发布。
为了便于理解,先对行业应用系统的开发过程进行简单介绍。开发团队开发的源代码存储在源代码管理服务器101,需要进行编译、打包成行业应用系统应用包(或称应用包)时,持续集成服务器102从源代码管理服务器拉取需要进行构建的源代码,按照要部署或运行构建生成的应用包的目标服务器103的运行环境信息针对所述源代码构建生成应用包。
本申请实施例以保险行业应用系统的开发实践为例进行说明。保险行业应用系统由于规模庞大、业务复杂,一般设计为多个子系统,例如,保单申请系统、业务支援系统、保险客户管理系统、保险营业管理系统、保险计算基础系统、保险贩卖工具、保险商品维护系统、保险商品收费与给付管理、保险商品日报月报系统、保险会计处理流程、保险审批流程自动化。保险行业应用系统的源代码存储在源代码管理服务器(或源代码库)中,开发活动输出的源代码以分支结构进行管理,可以使用版本号指示一个分支。在开发活动过程中对保险行业应用系统的每次集成,可以通过指定具体版本号来指定分支源代码,对所述指定分支源代码进行集成,包括:构建保险行业应用系统的应用包、部署所述应用包并进行集成测试。合适的持续集成模式无疑给保险行业系统应用的开发提供更高的效率,在项目早期经常进行集成,每次集成都通过自动化的构建、部署、测试进行验证,能够尽早地发现集成错误,大大减少集成的问题,降低解决问题的代价。
为便于进行持续集成,保险行业应用系统的开发过程中提供多种环境供不同的项目组人员使用,相应的,部署并运行持续集成过程中的应用包的目标服务器为下述任一服务器:项目组功能测试环境的Web服务器、项目组准生产测试环境的Web服务器、项目组冻结测试环境的Web服务器、测试组提测版本测试环境的Web服务器。并且,制定合适的研发测试环境管理规范,按照预设规范对目标服务器进行管理能提升集成效率。
所述持续集成服务器102,用于监测所述源代码管理服务器存储的源代码是否发生变更;如果监测到所述源代码管理服务器的至少一个分支源代码中指定分支源代码发生了变更,则依次触发针对所述目标服务器的构建任务、部署任务和测试任务;其中,所述构建任务包括:从所述源代码管理服务器获取所述指定分支源代码,对所述指定分支源代码进行编译,生成能够运行在所述目标服务器上的应用包;所述部署任务包括:获取所述应用包,将所述应用包部署在所述目标服务器上;所述测试任务包括对所述目标服务器上运行的所述应用包进行测试。
本申请实施例中,在持续集成服务器上部署基于Jenkins的使用Ant开发的集成管理工具,完成构建任务、部署任务以及测试任务的自动触发。所谓Jenkins是基于Java开发的一种可以用于监控持续重复的工作的工具,需要JDK/JRE环境部署,并依赖对应的Java运行库;所谓Ant是一种脚本语言,可以采用xml文件形式编写用于Java项目的编译、打包、测试等任务的脚本文件,提供指令执行所述脚本文件。
一种可能的实现方式包括:持续集成服务器102获得所述目标服务器运行所述应用包提供的运行环境信息,根据所述运行环境信息提供生成所述应用包需要依赖的系统环境,在所述生成所述应用包需要依赖的系统环境中执行所述构建任务,生成所述应用包。具体的,所述运行环境信息包括:所述目标服务器的机器类型、机器规格及操作系统;所述生成所述应用包需要依赖的系统环境包括:生成所述应用包需要依赖的机器类型、机器规格、操作系统及其他用于构建任务的软件。
本申请实施例中,持续集成服务器102按照预设规范配置目标服务器103,包括配置目标服务器的端口、登录用户名、用户主路径、Weblogic9路径、Domains_HOME路径、应用包上传路径、JDK5路径、JDK6路径、JDK7路径、JDK8路径、Tomcat7路径、Weblogic11路径、Weblogic12路径、数据源命名、Domain命名、console控制台登录用户名、Server命名、启动domain脚本路径与命名、关闭domain脚本路径与命名、win应用服务器登录用户名中的至少之一。所谓WebLogic是一个用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器(或application server)。
一种可能的实现方式包括:持续集成服务器102检测目标服务器103的配置环境是否符合所述预设规范,如果不符合预设规范,则不执行所述部署任务和/或所述测试任务,产生告警信息,如果符合预设规范,则执行所述部署任务和/或所述测试任务。
持续集成服务器102根据单元测试命令对所述指定分支源代码进行单元测试,根据编译命令对经过单元测试后的指定分支源代码进行编译,得到编译后的文件,根据打包命令对所述编译后的文件进行打包操作,得到所述应用包。具体的,使用Junit对所述指定分支源代码进行单元测试,将所述编译后的文件输出到classes目录,将编译后的文件打包成Jar包或War包。所谓Junit,是Java开发环境的单元测试工具。
在一种可能的实现方式中,持续集成服务器102定时轮询源代码管理服务器101,如果检测到所述指定分支源代码发生变更,则触发所述构建任务。具体的,通过设置定时轮询源代码管理服务器101的轮询频率或触发所述构建任务的触发时间,可以控制构建行业应用系统应用包的节奏。例如,每4小时构建一次或每天下班时构建一次。
本申请实施例中,持续集成服务器102还用于:向所述目标服务器发送卸载命令;和/或,向所述目标服务器发送重启命令;和/或,在执行所述部署任务后向所述目标服务器发送验证所述应用包的命令,所述应用包提供URL。
在一种可能的实现方式中,采用增量部署的方式,目标服务器不用获取完整的新应用包,而是获取针对新增或修改文件进行增量编译、打包生成的增量包,避免了目标服务器获取完整新应用包时花费的大量传输时间,提升集成效率。增量部署方式下,持续集成服务器102对所述指定分支源代码中变更文件进行增量编译,生成增量包,所述增量包为相对于变更前的应用包的增量包,将所述增量包提供给部署了所述变更前的应用包的目标服务器;相应的,目标服务器103从所述持续集成服务器获取所述增量包,解压缩所述增量包和所述变更前的应用包,将所述增量包中的文件替换所述变更前的应用包中的对应文件后,得到新的应用包,部署并运行新应用包。
所述目标服务器103,用于从所述持续集成服务器获取所述应用包,获得持续集成服务器发送的部署命令,根据所述部署命令将所述应用包部署在所述目标服务器,并且获得持续集成服务器发送的测试命令,根据所述测试命令对所述目标服务器上运行的所述应用包进行测试。
本申请实施例中,目标服务器103用于接收所述持续集成服务器发送的命令,根据命令的指示进行操作,包括:接收所述持续集成服务器发送的卸载命令,根据所述卸载命令卸载所述目标服务器上部署或运行的应用包,删除用于所述应用包的指定目录后,接收所述持续集成服务器部署新应用包的部署命令,将新应用包部署到指定目录下,解压缩所述新应用包,运行新应用包;和/或,
接收所述重启命令,根据所述重启命令关闭domain脚本,清理domain缓存,启动domain脚本;和/或,
接收所述验证命令,根据所述验证命令对所述应用包进行验证,例如,所述应用包提供URL,根据验证命令使用httppost对象检查所述应用包提供的URL是否能够被访问,如果否,则提示所述应用包提供的URL不能够被访问。
一种可能实现方式中,所述持续集成系统还包括:数据库;所述数据库存储有对所述应用包进行测试使用的业务数据和测试用例,配合目标服务器103对所述应用包进行测试。相应的,持续集成服务器102具体用于:向所述数据库发送更新数据库命令;所述数据库接收持续集成服务器发送的更新数据库命令,根据所述更新数据库命令更新所述数据库。
所述持续集成系统还可以包括配置管理服务器。配置管理服务器用于在指定目录下存储包含所述应用包和版本文档的标准版本压缩包;
相应的,持续集成服务器依次触发针对所述目标服务器的部署任务、针对所述配置管理服务器和所述目标服务器的集成测试任务;其中,所述集成测试任务包括:将所述应用包和版本文档打包成用于集成测试的标准版本压缩包,或者,按照指定文件清单以增量方式打包成用于集成测试的标准版本压缩包,将所述标准版本压缩包上传到所述配置管理服务器的指定目录下,向所述目标服务器下发集成测试命令;其中,持续集成服务器可以从源代码配置管理服务器上获取版本文档,例如,升级文档、版本说明书等。
相应的,目标服务器用于:接收所述集成测试命令,根据所述集成测试命令从配置管理服务器获取所述用于集成测试的标准版本压缩包,解压缩所述用于集成测试的标准版本压缩包,按照所述版本文档部署所述应用包,对所述应用包进行集成测试。
进一步,所述持续集成服务器还用于查询和/或管理配置管理服务器上的指定目录下的文件清单。
本申请实施例中,如果所述构建任务、所述部署任务、所述测试任务、所述集成测试任务、所述更新数据库中的任一项执行失败后,持续集成服务器提示执行失败信息。例如,邮件或短信通知开发团队处理责任人,便于及时处理。
本申请实施例中,还可以在持续集成服务器上指定所述应用包的存储期间,在所述存储期间内所述应用包为可用应用包,如果所述部署任务执行失败,则指示所述目标服务器回滚到指定版本的可用应用包。
按照本申请实施例提供的持续集成系统,复杂的行业应用系统在开发实践过程中,允许团队开发成员经常集成他们的工作,例如,每个成员每天至少集成一次,每次集成都通过自动化的构建(包括编译,部署,测试)来验证,从而尽早地发现存在的缺陷,并且由于项目开发团队清楚的知道每一次构建的结果,因此可以知道对源代码的改动会造成哪些影响,使得开发过程可控,降低开发成本。
以本申请第一实施例为基础,本申请第二实施例提供了一种持续集成方法。以下结合图2和图3对第二实施例提供的一种持续集成方法进行说明。由于本实施例以第一实施例为基础,所以描述得比较简单,相关的部分请参见第一实施例的对应说明即可。
图2所示的持续集成方法,包括:步骤S201至步骤S202。
步骤S201,监测源代码管理服务器存储的源代码是否发生变更。
本申请实施例提供的持续集成方法,构建任务、部署任务以及测试任务均为自动触发,不需要太多手工操作干预,可以用于规模化的行业应用系统的开发实践,达到持续集成的目的,有利于检查缺陷,避免项目早期引入的缺陷到集成阶段才被发现的问题,保证版本在质量得到控制的情况下如期发布。
本申请实施例涉及到的行业应用系统的开发过程,包括:开发团队开发的源代码存储在源代码管理服务器,持续集成服务器从源代码管理服务器拉取需要进行构建的源代码,对所述源代码进行编译、打包成行业应用系统应用包(或称应用包),目标服务器运行针对所述源代码构建生成的应用包。
下述以保险行业应用系统的开发实践为例对本申请提供的持续集成方法进行说明。保险行业应用系统由于规模庞大、业务复杂,一般设计为多个子系统,例如,保单申请系统、业务支援系统、保险客户管理系统、保险营业管理系统、保险计算基础系统、保险贩卖工具、保险商品维护系统、保险商品收费与给付管理、保险商品日报月报系统、保险会计处理流程、保险审批流程自动化。保险行业应用系统的源代码存储在源代码管理服务器(或源代码库)中,开发活动输出的源代码以分支结构进行管理,可以使用版本号指示一个分支。在开发活动过程中对保险行业应用系统的每次集成,可以通过指定具体版本号来指定分支源代码,对所述指定分支源代码进行集成,包括:构建保险行业应用系统的应用包、部署所述应用包并进行集成测试。合适的持续集成模式无疑给保险行业系统应用的开发提供更高的效率,在项目早期经常进行集成,每次集成都通过自动化的构建、部署、测试进行验证,能够尽早地发现集成错误,大大减少集成的问题,降低解决问题的代价。
为便于进行持续集成,保险行业应用系统的开发过程中提供多种环境供不同的项目组人员使用,主要包括以下四类:项目组功能测试环境,项目组冻结测试环境,测试组提测版本测试环境,项目组准生产测试环境。各类研发测试环境的设置可以遵从相同的标准,但用途不同。例如,项目组功能测试环境用于单个项目的一个版本提交源代码库之前,可以提供给开发人员测试使用。再如,项目组冻结测试环境用于单个项目的一个版本提交源代码库之后,持续集成服务器监测源代码管理服务器存储的源代码发生变更,触发相关任务的测试环境。再如,集成测试环境用于多个项目之间联调测试。再如,项目组准生产测试环境是版本发布之后,和现有生产环境版本一致的环境,仅用于生产环境复现问题,而不用于测试。相应的,部署并运行持续集成过程中的应用包的目标服务器为下述任一服务器:项目组功能测试环境的Web服务器、项目组准生产测试环境的Web服务器、项目组冻结测试环境的Web服务器、测试组提测版本测试环境的Web服务器。并且,制定合适的研发测试环境管理规范,按照预设规范对目标服务器进行管理能提升集成效率。具体包括:按照预设规范配置所述目标服务器的端口、登录用户名、用户主路径、Weblogic9路径、Domains_HOME路径、应用包上传路径、JDK5路径、JDK6路径、JDK7路径、JDK8路径、Tomcat7路径、Weblogic11路径、Weblogic12路径、数据源命名、Domain命名、console控制台登录用户名、Server命名、启动domain脚本路径与命名、关闭domain脚本路径与命名、win应用服务器登录用户名中的至少之一。所谓WebLogic是一个用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器(或application server)。
本申请实施例中,还包括:
检测所述目标服务器的配置环境是否符合所述预设规范;
如果不符合预设规范,则不执行所述部署任务和/或所述测试任务,产生告警信息;
如果符合预设规范,则执行所述部署任务和/或所述测试任务。
本申请实施例中,基于Jenkins的使用Ant开发的集成管理工具,完成构建任务、部署任务以及测试任务的自动触发。所谓Jenkins是基于Java开发的一种可以用于监控持续重复的工作的工具,需要JDK/JRE环境部署,并依赖对应的Java运行库;所谓Ant是一种脚本语言,可以采用xml文件形式编写用于Java项目的编译、打包、测试等任务的脚本文件,提供指令执行所述脚本文件。
本步骤是监测源代码管理服务器存储的源代码是否发生变更。实际环境中,开发团队各项目组人员从源代码管理服务器(或源代码库)checkout一个分支,在此分支源代码基础上新增或修改代码,新代码完成后checkin到源代码管理服务器,此时相应分支源代码发生变更。
本申请实施例中,定时轮询所述源代码管理服务器,如果检测到所述指定分支源代码发生变更,则触发所述构建任务。并且能够通过设置定时轮询所述源代码管理服务器的轮询频率或触发所述构建任务的触发时间,控制代码集成的节奏。例如,每4小时构建一次或每天下班时构建一次。
例如,预设规范包括研发测试环境服务器的端口标准化,和/或,应用服务器设置信息的标准化,从而使得不同的项目组人员使用多种环境,便于进行持续集成。具体的,可以指定分配给项目组准生产测试环境、测试组提测版本测试环境、项目组冻结测试环境、项目组功能测试环境等不同环境下总公司以及各子公司使用的端口号。可以规定Suseweblogic应用服务器的服务器登录用户名、用户主路径、Weblogic9路径、Domains_HOME路径、应用包上传路径、不同JDK版本对应的路径、Tomcat7、不同WEBLOGIC版本路径。其中,不同WEBLOGIC版本包括WEBLOGIC11(10.3.6)、WEBLOGIC12(12.1.3)、WEBLOGIC11(12.2.1)中的至少一种。可以规定Suse weblogic应用服务器的服务器登录用户名、用户主路径、Weblogic9路径、Domains_HOME路径、应用包上传路径、不同JDK版本对应的路径、Tomcat7、不同WEBLOGIC版本路径。其中,不同WEBLOGIC版本包括WEBLOGIC11(10.3.6)、WEBLOGIC12(12.1.3)、WEBLOGIC11(12.2.1)中的至少一种。可以规定win应用服务器的服务器登录用户名。可以规定WebLogic Domain的设置信息,包括:
指定数据源命名规则,例如以系统简称和“DataSource”(数据源)组合命名;
指定Domain命名规则,例如以系统简称、Domain(域)、端口号组合命名;
指定console控制台登录用户名;
指定Server命名规则,例如以server和端口号组合命名;
指定用于启动domain的脚本路径及脚本名称;
指定用于关闭domain脚本路径及脚本名称。
步骤S202,如果监测到所述源代码管理服务器的至少一个分支源代码中指定分支源代码发生了变更,则依次触发针对所述目标服务器的构建任务、部署任务和测试任务。
所述构建任务包括:从所述源代码管理服务器获取所述指定分支源代码,对所述指定分支源代码进行编译,生成能够运行在所述目标服务器上的应用包;所述部署任务包括:获取所述应用包,将所述应用包部署在所述目标服务器上;所述测试任务包括对所述目标服务器上运行的所述应用包进行测试。
本步骤是依次触发针对所述目标服务器的构建任务、部署任务和测试任务。
本申请实施例中,获得所述目标服务器运行所述应用包提供的运行环境信息,根据所述运行环境信息提供生成所述应用包需要依赖的系统环境,在所述生成所述应用包需要依赖的系统环境中执行所述构建任务,生成所述应用包。具体的,所述运行环境信息包括:所述目标服务器的机器类型、机器规格及操作系统;所述生成所述应用包需要依赖的系统环境包括:生成所述应用包需要依赖的机器类型、机器规格、操作系统及其他用于构建任务的软件。
本申请实施例中,包括下述处理生成能够运行在所述目标服务器上的应用包:
根据所述构建任务的源代码获取命令从所述源代码管理服务器获取所述指定分支源代码;
根据所述构建任务的单元测试命令对所述指定分支源代码进行单元测试;
根据所述构建任务的编译命令对单元测试后的源代码进行编译,得到编译后的文件;
根据所述构建任务的打包命令对所述编译后的文件进行打包操作,得到所述应用包。
具体的,使用Junit对所述指定分支源代码进行单元测试;单元测试后进行编译,将编译后的文件打包成Jar包或War包,所述Jar包或War包即为所述应用包。所谓Junit,是Java开发环境的单元测试工具。
本申请实施例包含的一个可能的实现方式中,向目标服务器发送卸载命令,指示所述目标服务器进行下述操作:卸载所述目标服务器上部署或运行的应用包,删除用于所述应用包的指定目录后,接收所述持续集成服务器部署新应用包的部署命令,将新应用包部署到指定目录下,解压缩所述新应用包,运行新应用包。
本申请实施例包含的一个可能的实现方式中,向所述目标服务器发送重启命令,指示所述目标服务器进行下述操作:关闭domain脚本,清理domain缓存,启动domain脚本。
本申请实施例包含的一个可能的实现方式中,在执行所述部署任务后向所述目标服务器发送验证所述应用包的命令,所述应用包提供URL,指示所述目标服务器进行下述操作:使用httppost对象检查所述应用包提供的URL是否能够被访问,如果否,则提示所述应用包提供的URL不能够被访问。
本申请实施例包含的一个可能的实现方式中,采用增量部署的方式,目标服务器不用获取完整的新应用包,而是获取针对新增或修改文件进行增量编译、打包生成的增量包,避免了目标服务器获取完整新应用包时花费的大量传输时间,提升集成效率。增量部署方式下包括下述处理:对所述指定分支源代码中变更文件进行增量编译,生成增量包,所述增量包为相对于变更前的应用包的增量包,将所述增量包提供给部署了所述变更前的应用包的目标服务器。
本申请实施例包含的一个可能的实现方式中,包括下述处理:
向数据库发送更新数据库命令;所述数据库存储有对所述应用包进行测试使用的业务数据和测试用例,配合所述目标服务器对所述应用包进行测试。所述数据库接收持续集成服务器发送的更新数据库命令,根据所述更新数据库命令更新所述数据库。
本申请实施例包含的一个可能的实现方式中,包括:依次触发针对所述目标服务器的部署任务、针对所述配置管理服务器和所述目标服务器的集成测试任务。其中,所述配置管理服务器用于在指定目录下存储包含所述应用包和版本文档的标准版本压缩包;所述集成测试任务包括:将所述应用包和版本文档打包成用于集成测试的标准版本压缩包,或者,按照指定文件清单以增量方式打包成用于集成测试的标准版本压缩包,将所述标准版本压缩包上传到所述配置管理服务器的指定目录下,向所述目标服务器下发集成测试命令;所述目标服务器根据所述集成测试命令从配置管理服务器获取所述用于集成测试的标准版本压缩包,解压缩所述用于集成测试的标准版本压缩包,按照所述版本文档部署所述应用包,对所述应用包进行集成测试。版本文档,例如,升级文档、版本说明书等,可以从源代码配置管理服务器上获取。
本申请实施例包含的一个可能的实现方式中,支持查询和/或管理所述配置管理服务器上的指定目录下的文件清单。
本申请实施例中,当所述构建任务、所述部署任务、所述测试任务、所述集成测试任务、所述更新数据中的任一项执行失败后,提示执行失败信息。例如,邮件或短信通知开发团队处理责任人,便于及时处理。
本申请实施例包含的一个可能的实现方式中,还包括:
指定所述应用包的存储期间,在所述存储期间内所述应用包为可用应用包;
如果所述部署任务执行失败,则指示所述目标服务器回滚到指定版本的可用应用包。
请参考图3,图中示出了一种企业级自动化持续集成管理方案的流程图。图中包括多个集成任务,其中,图中S301至S303为构建任务包括的子任务步骤;S304为部署任务,构建任务为全量更新的必须步骤;S305为重启任务、S306为验证任务,均属于可选任务;S307为自动测试任务。S308至S311为集成测试环境专有的特定任务,集成测试环境专有的特定任务可以是参与持续集成管理的各项目组特有功能调试完毕后使用提测版本测试环境进行联调测试执行的任务。
以下对图3中包括的各具体任务步骤进行说明:
S301,Compile(编译),从源代码管理服务器取JAVA代码文件,编译JAVA文件,并输出至classes目录。
S302,Junit(运行单元测试),对JAVA代码进行单元测试。
S303,Pack(打包),将编译后的应用打成Jar包或War包。
S304,Deploy(部署),部署任务用于全量更新或增量更新,包括以下处理:使用weblogic undeploy指令卸载应用;先删除上传目标目录,再将版本包上传至指定目录,并解压,其中,针对增量更新场景具体操作为:删除应用目录,上传增量包,解压大版本应用包,解压增量包;针对全量更新场景具体操作为:更新数据库;使用weblogic undeploy指令卸载应用,协助应用部署。
S305,Restart(重启操作为可选操作),具体包括以下操作:停止应用服务和启动应用服务。例如,使用服务器上的stop.sh停止服务;使用服务器上的start.sh启动服务。另外,如果无需清理domain缓存并重启服务,该步骤可忽略。
S306,Check(验证),校验服务可用性,例如,使用httppost检查系统URL是否可访问,若不可访问,则发邮件给指定的负责人。
S307,Test(测试),部署后启动自动测试。
S308,FF_ZIP版本打包任务,将应用包和相关文档打包成规范的版本zip包,例如将工程打版本包在${doc.dir}目录下。另外,增量更新场景下,按指定文件清单打包得到增量包。
S309,FF_UPLOAD版本上传任务,将版本包及各升级文档上传至配置管理库。例如,将build/${project.version}/目录下的文件上传到配置管理服务器指定目录下。
S310,FF_LIST配置库查看任务,显示配置管理服务器指定目录下的文件清单。
S311,FF_DELETE删除配置库文件任务,删除配置管理服务器指定目录下的指定文件。
按照本申请实施例提供的持续集成方法,进行复杂的行业应用系统的开发实践,使得团队开发成员每次集成都通过自动化的构建(包括编译,部署,测试)来验证,从而尽早地发现存在的缺陷,并且由于项目开发团队清楚的知道每一次构建的结果,因此可以知道对源代码的改动会造成哪些影响,使得开发过程可控,降低开发成本。
与本申请第二实施例提供的一种持续集成方法相对应,本申请第三实施例还提供了一种持续集成装置。
参照图4,其示出了本申请第三实施例提供的持续集成装置示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关的部分请参见方法实施例的对应说明即可。
图4所示的持续集成装置,包括:
监测单元401,用于监测源代码管理服务器存储的源代码是否发生变更;
任务触发单元402,用于监测到所述源代码管理服务器的至少一个分支源代码中指定分支源代码发生了变更,则依次触发针对所述目标服务器的构建任务、部署任务和测试任务;
其中,所述构建任务包括:从所述源代码管理服务器获取所述指定分支源代码,对所述指定分支源代码进行编译,生成能够运行在所述目标服务器上的应用包;所述部署任务包括:获取所述应用包,将所述应用包部署在所述目标服务器上;所述测试任务包括对所述目标服务器上运行的所述应用包进行测试。
可选的,所述任务触发单元402,包括:分支源代码获取子单元、单元测试子单元、编译子单元、打包子单元;
所述分支源代码获取子单元,用于根据所述构建任务的源代码获取命令从所述源代码管理服务器获取所述指定分支源代码;
所述单元测试子单元,用于根据所述构建任务的单元测试命令对所述指定分支源代码进行单元测试;
所述编译子单元,用于根据所述构建任务的编译命令对单元测试后的源代码进行编译,得到编译后的文件;
所述打包子单元,用于根据所述构建任务的打包命令对所述编译后的文件进行打包操作,得到所述应用包。
可选的,所述单元测试子单元具体用于:使用Junit对所述指定分支源代码进行单元测试;所述打包子单元具体用于:将编译后的文件打包成Jar包或War包,所述Jar包或War包即为所述应用包。
可选的,所述监测单元401具体用于:
定时轮询所述源代码管理服务器,如果检测到所述指定分支源代码发生变更,则触发所述构建任务。
可选的,所述监测单元401具体用于:
设置定时轮询所述源代码管理服务器的轮询频率或触发所述构建任务的触发时间。
可选的,所述持续集成装置包括环境配置单元,所述环境配置单元用于:
获得所述目标服务器运行所述应用包提供的运行环境信息;
根据所述运行环境信息提供生成所述应用包需要依赖的系统环境;
所述任务触发单元402具体用于:在所述生成所述应用包需要依赖的系统环境中执行所述构建任务,生成所述应用包。
可选的,所述运行环境信息包括:所述目标服务器的机器类型、机器规格及操作系统;所述生成所述应用包需要依赖的系统环境包括:生成所述应用包需要依赖的机器类型、机器规格、操作系统及其他用于构建任务的软件。
可选的,所述持续集成装置还包括标准化单元,所述标准化单元用于:按照预设规范配置所述目标服务器的端口、登录用户名、用户主路径、Weblogic9路径、Domains_HOME路径、应用包上传路径、JDK5路径、JDK6路径、JDK7路径、JDK8路径、Tomcat7路径、Weblogic11路径、Weblogic12路径、数据源命名、Domain命名、console控制台登录用户名、Server命名、启动domain脚本路径与命名、关闭domain脚本路径与命名、win应用服务器登录用户名中的至少之一。
可选的,所述标准化单元具体用于:
检测所述目标服务器的配置环境是否符合所述预设规范;
如果不符合预设规范,则不执行所述部署任务和/或所述测试任务,产生告警信息;
如果符合预设规范,则执行所述部署任务和/或所述测试任务。
可选的,所述目标服务器,为下述任一服务器:项目组功能测试环境的Web服务器、项目组准生产测试环境的Web服务器、项目组冻结测试环境的Web服务器、测试组提测版本测试环境的Web服务器。
可选的,所述持续集成装置包括命令发送单元,所述命令发送单元用于:向所述目标服务器发送卸载命令,指示所述目标服务器进行下述操作:卸载所述目标服务器上部署或运行的应用包,删除用于所述应用包的指定目录后,接收所述持续集成服务器部署新应用包的部署命令,将新应用包部署到指定目录下,解压缩所述新应用包,运行新应用包。
可选的,所述命令发送单元还用于:向所述目标服务器发送重启命令,指示所述目标服务器进行下述操作:关闭domain脚本,清理domain缓存,启动domain脚本。
可选的,所述命令发送单元还用于:在执行所述部署任务后向所述目标服务器发送验证所述应用包的命令,所述应用包提供URL,指示所述目标服务器进行下述操作:使用httppost对象检查所述应用包提供的URL是否能够被访问,如果否,则提示所述应用包提供的URL不能够被访问。
可选的,所述持续集成装置还包括增量部署单元,所述增量部署单元用于:对所述指定分支源代码中变更文件进行增量编译,生成增量包,所述增量包为相对于变更前的应用包的增量包,将所述增量包提供给部署了所述变更前的应用包的目标服务器。
可选的,所述持续集成装置还包括版本配置管理单元,所述版本配置管理单元用于:
依次触发针对所述目标服务器的部署任务、针对所述配置管理服务器和所述目标服务器的集成测试任务;其中,所述集成测试任务包括:将所述应用包和版本文档打包成用于集成测试的标准版本压缩包,或者,按照指定文件清单以增量方式打包成用于集成测试的标准版本压缩包,将所述标准版本压缩包上传到所述配置管理服务器的指定目录下,向所述目标服务器下发集成测试命令,指示所述目标服务器对所述应用包进行集成测试。
可选的,所述版本配置管理单元还用于:查询和/或管理所述配置管理服务器上的指定目录下的文件清单。
可选的,所述持续集成装置还包括数据库更新单元,所述数据库更新单元用于:
向数据库发送更新数据库命令;所述数据库存储有对所述应用包进行测试使用的业务数据和测试用例,配合所述目标服务器对所述应用包进行测试。
可选的,所述持续集成装置还包括失败告警单元,所述失败告警单元用于:在所述构建任务、所述部署任务、所述测试任务、所述集成测试任务、所述更新数据中的任一项执行失败后,提示执行失败信息。
可选的,所述持续集成装置还包括回滚单元,所述回滚单元用于:
指定所述应用包的存储期间,在所述存储期间内所述应用包为可用应用包;
如果所述部署任务执行失败,则指示所述目标服务器回滚到指定版本的可用应用包。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
Claims (36)
1.一种持续集成系统,其特征在于,包括:
源代码管理服务器、持续集成服务器、目标服务器;其中,
所述源代码管理服务器,用于存储行业应用系统的源代码,所述源代码包括至少一个分支源代码;
所述持续集成服务器,用于监测所述源代码管理服务器存储的源代码是否发生变更;如果监测到所述源代码管理服务器的至少一个分支源代码中指定分支源代码发生了变更,则依次触发针对所述目标服务器的构建任务、部署任务和测试任务;其中,所述构建任务包括:从所述源代码管理服务器获取所述指定分支源代码,对所述指定分支源代码进行编译,生成能够运行在所述目标服务器上的应用包;所述部署任务包括:获取所述应用包,将所述应用包部署在所述目标服务器上;所述测试任务包括对所述目标服务器上运行的所述应用包进行测试;
所述目标服务器,用于从所述持续集成服务器获取所述应用包,获得持续集成服务器发送的部署命令,根据所述部署命令将所述应用包部署在所述目标服务器,并且获得持续集成服务器发送的测试命令,根据所述测试命令对所述目标服务器上运行的所述应用包进行测试;
其中,所述持续集成服务器还用于:对所述指定分支源代码中变更文件进行增量编译,生成增量包,所述增量包为相对于变更前的应用包的增量包,将所述增量包提供给部署了所述变更前的应用包的目标服务器;
所述目标服务器,还用于:从所述持续集成服务器获取所述增量包,解压缩所述增量包和所述变更前的应用包,将所述增量包中的文件替换所述变更前的应用包中的对应文件后,得到新应用包;
其中,所述持续集成服务器,还用于:向所述目标服务器发送卸载命令;
所述目标服务器,还用于:接收所述持续集成服务器发送的卸载命令,根据所述卸载命令卸载所述目标服务器上部署或运行的应用包,删除用于所述应用包的指定目录后,接收所述持续集成服务器部署新应用包的部署命令,将新应用包部署到指定目录下,解压缩所述新应用包,运行新应用包。
2.根据权利要求1所述的系统,其特征在于,所述持续集成服务器,具体用于:
根据单元测试命令对所述指定分支源代码进行单元测试,根据编译命令对经过单元测试后的指定分支源代码进行编译,得到编译后的文件,根据打包命令对所述编译后的文件进行打包操作,得到所述应用包。
3.根据权利要求2所述的系统,其特征在于,所述持续集成服务器,具体用于:使用Junit对所述指定分支源代码进行单元测试,将所述编译后的文件输出到classes目录,将编译后的文件打包成Jar包或War包。
4.根据权利要求1所述的系统,其特征在于,所述持续集成服务器,还用于:
定时轮询所述源代码管理服务器,如果检测到所述指定分支源代码发生变更,则触发所述构建任务。
5.根据权利要求4所述的系统,其特征在于,所述持续集成服务器,具体用于:
设置定时轮询所述源代码管理服务器的轮询频率或触发所述构建任务的触发时间。
6.根据权利要求1所述的系统,其特征在于,所述持续集成服务器,还用于:
获得所述目标服务器运行所述应用包提供的运行环境信息,根据所述运行环境信息提供生成所述应用包需要依赖的系统环境,在所述生成所述应用包需要依赖的系统环境中执行所述构建任务,生成所述应用包。
7.根据权利要求6所述的系统,其特征在于,所述运行环境信息包括:所述目标服务器的机器类型、机器规格及操作系统;所述生成所述应用包需要依赖的系统环境包括:生成所述应用包需要依赖的机器类型、机器规格、操作系统及其他用于构建任务的软件。
8.根据权利要求1所述的系统,其特征在于,所述持续集成服务器,还用于:按照预设规范配置所述目标服务器的端口、登录用户名、用户主路径、Weblogic9路径、Domains_HOME路径、应用包上传路径、JDK5路径、JDK6路径、JDK7路径、JDK8路径、Tomcat7路径、Weblogic11路径、Weblogic12路径、数据源命名、Domain命名、console控制台登录用户名、Server命名、启动domain脚本路径与命名、关闭domain脚本路径与命名、win应用服务器登录用户名中的至少之一。
9.根据权利要求1所述的系统,其特征在于,所述持续集成服务器,还用于:
检测所述目标服务器的配置环境是否符合预设规范,如果不符合预设规范,则不执行所述部署任务和/或所述测试任务,产生告警信息,如果符合预设规范,则执行所述部署任务和/或所述测试任务。
10.根据权利要求1所述的系统,其特征在于,所述目标服务器,为下述任一服务器:项目组功能测试环境的Web服务器、项目组准生产测试环境的Web服务器、项目组冻结测试环境的Web服务器、测试组提测版本测试环境的Web服务器。
11.根据权利要求1所述的系统,其特征在于,所述持续集成服务器,还用于:向所述目标服务器发送重启命令;
所述目标服务器,还用于:接收所述重启命令,根据所述重启命令关闭domain脚本,清理domain缓存,启动domain脚本。
12.根据权利要求1所述的系统,其特征在于,所述持续集成服务器,还用于:在执行所述部署任务后向所述目标服务器发送验证所述应用包的命令,所述应用包提供URL;
所述目标服务器,还用于:接收验证命令,根据所述验证命令使用httppost对象检查所述应用包提供的URL是否能够被访问,如果否,则提示所述应用包提供的URL不能够被访问。
13.根据权利要求1所述的系统,其特征在于,所述持续集成系统还包括配置管理服务器,用于在指定目录下存储包含所述应用包和版本文档的标准版本压缩包;
所述持续集成服务器,还用于:依次触发针对所述目标服务器的部署任务、针对所述配置管理服务器和所述目标服务器的集成测试任务;其中,所述集成测试任务包括:将所述应用包和版本文档打包成用于集成测试的标准版本压缩包,或者,按照指定文件清单以增量方式打包成用于集成测试的标准版本压缩包,将所述标准版本压缩包上传到所述配置管理服务器的指定目录下,向所述目标服务器下发集成测试命令;
所述目标服务器,还用于:接收所述集成测试命令,根据所述集成测试命令从所述配置管理服务器获取所述用于集成测试的标准版本压缩包,解压缩所述用于集成测试的标准版本压缩包,按照版本文档部署所述应用包,对所述应用包进行集成测试。
14.根据权利要求13所述的系统,其特征在于,所述持续集成服务器,还用于:查询和/或管理所述配置管理服务器上的指定目录下的文件清单。
15.根据权利要求1所述的系统,其特征在于,还包括:数据库;所述数据库存储有对所述应用包进行测试使用的业务数据和测试用例,配合所述目标服务器对所述应用包进行测试。
16.根据权利要求15所述的系统,其特征在于,所述持续集成服务器具体用于:向所述数据库发送更新数据库命令;
所述数据库具体用于:接收持续集成服务器发送的更新数据库命令,根据所述更新数据库命令更新所述数据库。
17.根据权利要求1或15所述的系统,其特征在于,所述持续集成服务器,还用于:在所述构建任务、所述部署任务、所述测试任务、集成测试任务、更新数据库中的任一项执行失败后,提示执行失败信息。
18.根据权利要求1所述的系统,其特征在于,所述持续集成服务器,还用于:指定所述应用包的存储期间,在所述存储期间内所述应用包为可用应用包,如果所述部署任务执行失败,则指示所述目标服务器回滚到指定版本的可用应用包。
19.一种持续集成方法,其特征在于,包括:
通过源代码管理服务器存储行业应用系统的源代码,所述源代码包括至少一个分支源代码;
监测源代码管理服务器存储的源代码是否发生变更;
如果监测到所述源代码管理服务器的至少一个分支源代码中指定分支源代码发生了变更,则依次触发针对目标服务器的构建任务、部署任务和测试任务;
其中,所述构建任务包括:从所述源代码管理服务器获取所述指定分支源代码,对所述指定分支源代码进行编译,生成能够运行在所述目标服务器上的应用包;所述部署任务包括:获取所述应用包,将所述应用包部署在所述目标服务器上;所述测试任务包括对所述目标服务器上运行的所述应用包进行测试;
通过所述目标服务器从持续集成服务器获取所述应用包,获得持续集成服务器发送的部署命令,根据所述部署命令将所述应用包部署在所述目标服务器,并且获得持续集成服务器发送的测试命令,根据所述测试命令对所述目标服务器上运行的所述应用包进行测试;
通过所述持续集成服务器对所述指定分支源代码中变更文件进行增量编译,生成增量包,所述增量包为相对于变更前的应用包的增量包,将所述增量包提供给部署了所述变更前的应用包的目标服务器;通过所述目标服务器从所述持续集成服务器获取所述增量包,解压缩所述增量包和所述变更前的应用包,将所述增量包中的文件替换所述变更前的应用包中的对应文件后,得到新应用包;
通过所述持续集成服务器向所述目标服务器发送卸载命令,通过所述目标服务器,接收所述持续集成服务器发送的卸载命令,根据所述卸载命令卸载所述目标服务器上部署或运行的应用包,删除用于所述应用包的指定目录后,接收所述持续集成服务器部署新应用包的部署命令,将新应用包部署到指定目录下,解压缩所述新应用包,运行新应用包。
20.根据权利要求19所述的方法,其特征在于,所述从所述源代码管理服务器获取所述指定分支源代码,对所述指定分支源代码进行编译,生成能够运行在所述目标服务器上的应用包,包括:
根据所述构建任务的源代码获取命令从所述源代码管理服务器获取所述指定分支源代码;
根据所述构建任务的单元测试命令对所述指定分支源代码进行单元测试;
根据所述构建任务的编译命令对单元测试后的源代码进行编译,得到编译后的文件;
根据所述构建任务的打包命令对所述编译后的文件进行打包操作,得到所述应用包。
21.根据权利要求20所述的方法,其特征在于,所述根据所述构建任务的单元测试命令对所述指定分支源代码进行单元测试,包括:使用Junit对所述指定分支源代码进行单元测试;
所述根据所述构建任务的打包命令对所述编译后的文件进行打包操作,得到所述应用包,包括:将编译后的文件打包成Jar包或War包,所述Jar包或War包即为所述应用包。
22.根据权利要求19所述的方法,其特征在于,还包括:
定时轮询所述源代码管理服务器,如果检测到所述指定分支源代码发生变更,则触发所述构建任务。
23.根据权利要求22所述的方法,其特征在于,还包括:
设置定时轮询所述源代码管理服务器的轮询频率或触发所述构建任务的触发时间。
24.根据权利要求19所述的方法,其特征在于,还包括:
获得所述目标服务器运行所述应用包提供的运行环境信息;
根据所述运行环境信息提供生成所述应用包需要依赖的系统环境;
在所述生成所述应用包需要依赖的系统环境中执行所述构建任务,生成所述应用包。
25.根据权利要求24所述的方法,其特征在于,所述运行环境信息包括:所述目标服务器的机器类型、机器规格及操作系统;所述生成所述应用包需要依赖的系统环境包括:生成所述应用包需要依赖的机器类型、机器规格、操作系统及其他用于构建任务的软件。
26.根据权利要求19所述的方法,其特征在于,还包括:按照预设规范配置所述目标服务器的端口、登录用户名、用户主路径、Weblogic9路径、Domains_HOME路径、应用包上传路径、JDK5路径、JDK6路径、JDK7路径、JDK8路径、Tomcat7路径、Weblogic11路径、Weblogic12路径、数据源命名、Domain命名、console控制台登录用户名、Server命名、启动domain脚本路径与命名、关闭domain脚本路径与命名、win应用服务器登录用户名中的至少之一。
27.根据权利要求19所述的方法,其特征在于,还包括:
检测所述目标服务器的配置环境是否符合预设规范;
如果不符合预设规范,则不执行所述部署任务和/或所述测试任务,产生告警信息;
如果符合预设规范,则执行所述部署任务和/或所述测试任务。
28.根据权利要求19所述的方法,其特征在于,所述目标服务器,为下述任一服务器:项目组功能测试环境的Web服务器、项目组准生产测试环境的Web服务器、项目组冻结测试环境的Web服务器、测试组提测版本测试环境的Web服务器。
29.根据权利要求19所述的方法,其特征在于,还包括:向所述目标服务器发送重启命令,指示所述目标服务器进行下述操作:关闭domain脚本,清理domain缓存,启动domain脚本。
30.根据权利要求19所述的方法,其特征在于,还包括:在执行所述部署任务后向所述目标服务器发送验证所述应用包的命令,所述应用包提供URL,指示所述目标服务器进行下述操作:使用httppost对象检查所述应用包提供的URL是否能够被访问,如果否,则提示所述应用包提供的URL不能够被访问。
31.根据权利要求19所述的方法,其特征在于,还包括:
依次触发针对所述目标服务器的部署任务、针对配置管理服务器和所述目标服务器的集成测试任务;其中,所述集成测试任务包括:将所述应用包和版本文档打包成用于集成测试的标准版本压缩包,或者,按照指定文件清单以增量方式打包成用于集成测试的标准版本压缩包,将所述标准版本压缩包上传到所述配置管理服务器的指定目录下,向所述目标服务器下发集成测试命令,指示所述目标服务器对所述应用包进行集成测试。
32.根据权利要求31所述的方法,其特征在于,还包括:查询和/或管理所述配置管理服务器上的指定目录下的文件清单。
33.根据权利要求19所述的方法,其特征在于,还包括:
向数据库发送更新数据库命令;所述数据库存储有对所述应用包进行测试使用的业务数据和测试用例,配合所述目标服务器对所述应用包进行测试。
34.根据权利要求19或31或33所述的方法,其特征在于,还包括:在所述构建任务、所述部署任务、所述测试任务、集成测试任务、更新数据中的任一项执行失败后,提示执行失败信息。
35.根据权利要求19所述的方法,其特征在于,还包括:
指定所述应用包的存储期间,在所述存储期间内所述应用包为可用应用包;
如果所述部署任务执行失败,则指示所述目标服务器回滚到指定版本的可用应用包。
36.一种持续集成装置,其特征在于,包括:
监测单元,用于监测源代码管理服务器存储的源代码是否发生变更;
任务触发单元,用于监测到所述源代码管理服务器的至少一个分支源代码中指定分支源代码发生了变更,则依次触发针对目标服务器的构建任务、部署任务和测试任务;
其中,所述构建任务包括:从所述源代码管理服务器获取所述指定分支源代码,对所述指定分支源代码进行编译,生成能够运行在所述目标服务器上的应用包;所述部署任务包括:获取所述应用包,将所述应用包部署在所述目标服务器上;所述测试任务包括对所述目标服务器上运行的所述应用包进行测试;
其中,源代码管理服务器,用于存储行业应用系统的源代码,所述源代码包括至少一个分支源代码;
所述装置还用于:
通过所述目标服务器从持续集成服务器获取所述应用包,获得持续集成服务器发送的部署命令,根据所述部署命令将所述应用包部署在所述目标服务器,并且获得持续集成服务器发送的测试命令,根据所述测试命令对所述目标服务器上运行的所述应用包进行测试;
通过所述持续集成服务器对所述指定分支源代码中变更文件进行增量编译,生成增量包,所述增量包为相对于变更前的应用包的增量包,将所述增量包提供给部署了所述变更前的应用包的目标服务器;通过所述目标服务器从所述持续集成服务器获取所述增量包,解压缩所述增量包和所述变更前的应用包,将所述增量包中的文件替换所述变更前的应用包中的对应文件后,得到新应用包;
通过所述持续集成服务器向所述目标服务器发送卸载命令,通过所述目标服务器,接收所述持续集成服务器发送的卸载命令,根据所述卸载命令卸载所述目标服务器上部署或运行的应用包,删除用于所述应用包的指定目录后,接收所述持续集成服务器部署新应用包的部署命令,将新应用包部署到指定目录下,解压缩所述新应用包,运行新应用包。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2019106504207 | 2019-07-18 | ||
CN201910650420 | 2019-07-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110532189A CN110532189A (zh) | 2019-12-03 |
CN110532189B true CN110532189B (zh) | 2022-11-01 |
Family
ID=68666218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910823427.4A Active CN110532189B (zh) | 2019-07-18 | 2019-09-02 | 一种持续集成系统、方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110532189B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111049889B (zh) * | 2019-12-04 | 2022-07-08 | 车智互联(北京)科技有限公司 | 一种静态资源上传方法、装置、集成服务器和系统 |
CN111309336B (zh) * | 2020-01-21 | 2023-11-28 | 浪潮软件股份有限公司 | 分布式应用的部署方法及装置 |
CN111309633A (zh) * | 2020-03-23 | 2020-06-19 | 上海新炬网络信息技术股份有限公司 | 基于自动化运维的持续性能测试方法 |
CN111651352B (zh) * | 2020-05-29 | 2023-03-14 | 成都新潮传媒集团有限公司 | 一种仓库代码的合并方法及装置 |
CN111984657B (zh) * | 2020-09-04 | 2023-07-25 | 河北幸福消费金融股份有限公司 | 数据归集方法、装置、存储介质及计算机设备 |
CN112100073A (zh) * | 2020-09-16 | 2020-12-18 | 京东数字科技控股股份有限公司 | 应用程序的在线开发方法、装置、电子设备和存储介质 |
CN112394951B (zh) * | 2020-11-13 | 2023-11-17 | 中国工商银行股份有限公司 | 应用部署方法及服务器集群 |
CN112579126A (zh) * | 2020-12-21 | 2021-03-30 | 杭州米络星科技(集团)有限公司 | 软件开发平台及软件开发方法 |
CN112579475A (zh) * | 2020-12-31 | 2021-03-30 | 平安银行股份有限公司 | 代码测试方法、装置、设备及可读存储介质 |
CN112988571B (zh) * | 2021-02-09 | 2022-11-29 | 中国建设银行股份有限公司 | 一种用于优化cc代码的自动化编译部署方法及系统 |
CN113110824B (zh) * | 2021-03-31 | 2022-05-06 | 中汽研(天津)汽车工程研究院有限公司 | 一种汽车电子软件持续集成及自动测试方法 |
CN113127036B (zh) * | 2021-04-16 | 2023-04-11 | 展讯通信(上海)有限公司 | 软件开发系统、代码的持续集成方法、装置和介质 |
CN113111000B (zh) * | 2021-04-28 | 2023-05-12 | 北京中祥英科技有限公司 | 持续集成自动化测试系统和方法、电子设备、存储介质 |
CN113434151A (zh) * | 2021-06-10 | 2021-09-24 | 中国铁道科学研究院集团有限公司电子计算技术研究所 | 一种服务部署方法、服务器和系统 |
CN113419963B (zh) * | 2021-07-14 | 2022-12-13 | 上海浦东发展银行股份有限公司 | 编程语言项目的集成方法、装置、设备及存储介质 |
CN114328185A (zh) * | 2021-11-30 | 2022-04-12 | 苏州浪潮智能科技有限公司 | 持续集成信息聚合系统 |
CN114281682A (zh) * | 2021-12-09 | 2022-04-05 | 南京隼眼电子科技有限公司 | 软件的持续集成方法、装置及存储介质 |
CN117596084B (zh) * | 2024-01-19 | 2024-04-16 | 天津航天机电设备研究所 | 一种面向网信安全的软件持续集成系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201429234A (zh) * | 2012-10-18 | 2014-07-16 | Broadcom Corp | 媒體處理裝置及其操作方法 |
CN105630488A (zh) * | 2015-12-18 | 2016-06-01 | 上海爱数信息技术股份有限公司 | 一种基于docker容器技术的持续集成实现方法 |
CN106407101A (zh) * | 2015-07-31 | 2017-02-15 | 三亚中兴软件有限责任公司 | 基于lxc的持续集成方法及装置 |
CN106708509A (zh) * | 2016-11-28 | 2017-05-24 | 上海宝尊电子商务有限公司 | 自动化软件项目开发全链路配置管理系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140149966A1 (en) * | 2012-11-27 | 2014-05-29 | Inadev Corporation | Application, build, integration, and release management system and method |
-
2019
- 2019-09-02 CN CN201910823427.4A patent/CN110532189B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201429234A (zh) * | 2012-10-18 | 2014-07-16 | Broadcom Corp | 媒體處理裝置及其操作方法 |
CN106407101A (zh) * | 2015-07-31 | 2017-02-15 | 三亚中兴软件有限责任公司 | 基于lxc的持续集成方法及装置 |
CN105630488A (zh) * | 2015-12-18 | 2016-06-01 | 上海爱数信息技术股份有限公司 | 一种基于docker容器技术的持续集成实现方法 |
CN106708509A (zh) * | 2016-11-28 | 2017-05-24 | 上海宝尊电子商务有限公司 | 自动化软件项目开发全链路配置管理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110532189A (zh) | 2019-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110532189B (zh) | 一种持续集成系统、方法及装置 | |
US8533676B2 (en) | Single development test environment | |
US8745585B2 (en) | Meta-data for single development test environment | |
EP3643049B1 (en) | Edge devices and associated networks utilising microservices | |
US10114637B1 (en) | Automatically updating a shared project build platform | |
JP5535484B2 (ja) | 自動ソフトウェアテストフレームワーク | |
US20130174124A1 (en) | Version numbering in single development and test environment | |
US7735080B2 (en) | Integrated system and method for the management of a complete end-to-end software delivery process | |
US10579966B1 (en) | Adapting a shared project build platform to a developer plugin | |
CA3094320A1 (en) | Unified test automation system | |
US8091066B2 (en) | Automated multi-platform build and test environment for software application development | |
US9569204B2 (en) | End-to-end continuous integration and verification of software | |
US20170083430A1 (en) | Code coverage plugin | |
CN111324522A (zh) | 一种自动化测试系统及方法 | |
AU2012201749B2 (en) | Single development test environment | |
US9542173B2 (en) | Dependency handling for software extensions | |
US20150100831A1 (en) | Method and system for selecting and executing test scripts | |
CN114721809A (zh) | 一种kubernetes集群的应用部署方法及装置 | |
Railić et al. | Architecting continuous integration and continuous deployment for microservice architecture | |
US9760364B2 (en) | Checks for software extensions | |
CN112579099A (zh) | 代码的部署方法、装置、存储介质及电子设备 | |
CN104572236B (zh) | 一种Taurus项目快速搭建构造方法 | |
CN117008958A (zh) | 基于GitOps的OTA云端持续交付方法、系统、设备及存储介质 | |
EP2503450A2 (en) | Version numbering in single development and test environment | |
EP2503451A2 (en) | Metadata for single development test environment |
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 |