CN109062789B - 持续集成方法、装置及设备、可读存储介质 - Google Patents
持续集成方法、装置及设备、可读存储介质 Download PDFInfo
- Publication number
- CN109062789B CN109062789B CN201810784503.0A CN201810784503A CN109062789B CN 109062789 B CN109062789 B CN 109062789B CN 201810784503 A CN201810784503 A CN 201810784503A CN 109062789 B CN109062789 B CN 109062789B
- Authority
- CN
- China
- Prior art keywords
- project
- construction
- server
- environment
- servers
- 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/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
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 Hardware Design (AREA)
- Quality & Reliability (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种持续集成方法、装置及设备、可读存储介质,所述方法包括:获取待持续集成的项目的配置;根据所述配置携带的环境信息,选取至少一能够满足所述项目构建环境的服务器,并控制选取的服务器对所述项目进行构建;如果构建失败,确定构建失败原因是否为选取的服务器的环境问题;如果是,则直接重新选取其他能够满足所述项目构建环境的服务器,并控制重新选取的服务器对所述项目进行构建。实施本发明实施例,可以在导致构建失败的原因是服务器的环境问题,而非项目本身问题时,继续选取其他服务器继续进行项目构建,有效减少非项目原因导致的构建中断、项目配置修改次数与服务器配置修改次数,进而减少构建成本。
Description
技术领域
本发明涉及软件开发测试技术领域,尤其涉及一种持续集成方法、装置及设备、可读存储介质。
背景技术
在软件项目的开发测试领域,持续集成是一种软件开发实践,在持续集成中,团队的成员频繁集成他们的工作成果,通常每个人每天至少集成一次,这便导致每天会集成多次,每次集成通过自动化的构建(包括自动编译、发布、测试)进行,目的是让团队在持续的基础上收到反馈并进行改进,而不必等到开发周期后期才寻找和修复缺陷。
目前的持续集成工具,如Jenkins,在进行项目的构建之前,可以按照服务器能够满足的项目构建环境(指持续集成任务对应的环境,或项目构建任务对应的环境),选取满足待持续集成的项目的项目构建环境的服务器,由选取的服务器进行该项目的构建。
选取的服务器在进行项目的构建时,由于各种原因可能出现构建失败的情况。针对构建失败的情况,相关持续集成方案需要修改项目的配置,手动触发项目的构建后,重新选取另一台服务器,由重新选取的服务器进行该项目的构建。无论是修改项目的配置,还是手动触发项目的构建,均可能耗费较多的时间和资源。
发明内容
有鉴于此,本发明实施例提供一种持续集成方法、装置及设备、可读存储介质,以解决相关持续集成方案处理失败的自动化构建耗费的资源和时间较多的问题。
根据本发明的第一方面,提供一种持续集成方法,包括步骤:
获取待持续集成的项目的配置;该配置携带有描述所述项目的项目构建环境的环境信息;
根据所述配置携带的环境信息,选取至少一能够满足所述项目构建环境的服务器,并控制选取的服务器对所述项目进行构建;
如果构建失败,确定构建失败原因是否为选取的服务器的环境问题;
如果是,则直接重新选取其他能够满足所述项目构建环境的服务器,并控制重新选取的服务器对所述项目进行构建。
在一个实施例中,所述方法还包括以下步骤:
将构建失败的服务器的唯一标识及项目构建日志,通过邮件插件发送至预定的收件方。
在一个实施例中,根据所述配置携带的项目构建环境信息,选取至少一能够满足所述项目构建环境的服务器,包括:
获取各服务器的环境标签,所述环境标签用于表示服务器能满足的项目构建环境;
根据获取的环境标签及所述配置携带的环境信息,查找环境标签与所述环境信息匹配的服务器;
如果查找到的服务器的数量大于预定阈值,从查找出的服务器中选取构建所需数量的服务器。
在一个实施例中,从查找出的服务器中选取构建所需数量的服务器,包括:
采用负载均衡的方式,从查找出的服务器中选取构建所需数量的服务器。
在一个实施例中,确定构建失败原因是否为选取的服务器的环境问题,包括:
获取项目构建日志;
从项目构建日志中提取描述构建失败原因的数据;
对比提取的数据与预置的环境问题;
如果对比结果表示提取的数据与预置的环境问题匹配,则确定构建失败原因是选取的服务器的环境问题。
在一个实施例中,所述环境问题包括以下至少一项:
项目工作空间之外文件查找失败;
引用工具查找失败;
引用工具的相关模块查找失败;
存储空间异常;
网络异常。
根据本发明的第二方面,提供一种持续集成装置,包括:
配置获取模块,用于获取待持续集成的项目的配置;该配置携带有描述所述项目的项目构建环境的环境信息;
项目构建模块,用于根据所述配置携带的环境信息,选取至少一能够满足所述项目构建环境的服务器,并控制选取的服务器对所述项目进行构建;
失败确认模块,用于在构建失败时,确定构建失败原因是否为选取的服务器的环境问题;
重复构建模块,用于在构建失败原因是所述环境问题时,直接重新选取其他能够满足所述项目构建环境的服务器,并控制重新选取的服务器对所述项目进行构建。
在一个实施例中,所述装置还包括:
信息邮送模块,用于将构建失败的服务器的唯一标识及项目构建日志,通过邮件插件发送至预定的收件方。
在一个实施例中,所述项目构建模块还被配置为:
获取各服务器的环境标签,所述环境标签用于表示服务器能满足的项目构建环境;
根据获取的环境标签及所述配置携带的环境信息,查找环境标签与所述环境信息匹配的服务器;
如果查找到的服务器的数量大于预定阈值,从查找出的服务器中选取构建所需数量的服务器。
在一个实施例中,所述失败确认模块还被配置为:
获取项目构建日志;
从项目构建日志中提取描述构建失败原因的数据;
对比提取的数据与预置的环境问题;
如果对比结果表示提取的数据与预置的环境问题匹配,则确定构建失败原因是选取的服务器的环境问题。
根据本发明的第三方面,提供一种计算机设备,包括:
处理器;
存储处理器可执行指令的存储器;
其中,所述处理器耦合于所述存储器,用于读取所述存储器存储的程序指令,并作为响应,执行如上所述方法中的操作。
根据本发明的第四方面,提供一个或多个机器可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得电子设备执行如上所述方法中的操作。
实施本发明提供的实施例,在选取的服务器对所述项目进行构建的情况下,确定构建失败原因是否为选取的服务器的环境问题,如果是,则直接重新选取其他能够满足所述项目构建环境的服务器,并控制重新选取的服务器对所述项目进行构建。因此,可以在导致构建失败的原因是环境问题,而非项目本身问题时,继续选取其他服务器继续进行项目构建,相对于构建失败即修改项目配置或修改构建失败服务器的配置,重新触发项目构建的方式而言,能够有效减少非项目原因导致的构建中断、项目配置修改次数与服务器配置修改次数,进而减少构建成本。
附图说明
图1是本发明一示例性实施例示出的网络架构的示意图;
图2是本发明一示例性实施例示出的持续集成方法的流程图;
图3是本发明一示例性实施例示出的持续集成方法的交互示意图;
图4是本发明另一示例性实施例示出的持续集成方法的流程图;
图5是本发明一示例性实施例示出的持续集成装置的框图;
图6是本发明一示例性实施例示出的计算机设备的硬件结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
请参阅图1,图1本发明一示例性实施例示出的网络架构的示意图:
所示环境架构中的设备,可用于实现本发明实施例的持续集成方法,包括开发/测试团队110、代码库120、调控服务器130及构建服务器140,开发/测试团队110通过有线或无线网络分别与代码库120与部署服务器130连接,部署服务器130通过有线或无线网络分别与代码库120及构建服务器140连接。
其中,开发/测试团队110可以包括不止一台终端设备(110a、110b、110c等),终端设备可以是手提电脑、台式电脑、平板电脑、个人数字助理(PDA)、移动终端设备等计算机设备中的至少一种。可以装有持续集成工具对应的客户端(以下简称为CI客户端,某些场景下可以为B/S架构型的客户端),此外,也可以装有代码编写工具及其他应用程序。这里提到的CI客户端可以为Jenkins、TeamCity、Travis CI、Go等持续集成工具中至少一种对应的客户端。
代码库120,可以设置在单独的服务器上,也可以设置在调控服务器130上,可以存储一个或多个开发/测试团队110针对各种项目编写的源代码,而且,考虑到项目的源代码可能经历多次修改更新,代码库120可以依据更新时间为源代码添加版本标识。
调控服务器130,可以由一台服务器或多台服务器构成,装有持续集成工具对应的服务端(以下简称为CI服务端),用于根据任一台终端设备(110a、110b、或110c等)发送的项目的配置,为项目选取用于进行项目构建的服务器。此外,调控服务器130也可以装有其他应用程序,例如可商购获得的超文本传送协议(HTTP)服务器应用程序,或者安全套接字层超文本传输协议(HTTPS)服务器应用程序。
构建服务器140,用于对待持续集成的项目进行构建,可以包括不止一台服务器(140a、140b、140c等),构建时,可以进行自动编译、发布与测试中的至少一项,具体执行多少项,由项目的配置决定。
此外,为了便于选取服务器,调控服务器130还可以记录构建服务器140的各服务器(140a、140b、140c等)的唯一标识,及能够满足的项目构建环境。某些例子中,可以预先对应构建服务器140中每个服务器,存储描述每个服务器能满足的项目构建环境的环境标签。这里提到的项目构建环境包括项目构建中各任务环节的环境,如一环节为编译环节,项目构建环境包括编译环境。
在有项目需要开发和/或测试(该项目可以称为待持续集成的项目)时,开发/测试人员(以下简称为用户)通过操作终端设备110a、110b、110c等设备中任一,可以编写项目的源代码,将项目的源代码推送至代码库120,并通过CI客户端进行项目的配置,完成后,将项目的配置发送至调控服务器130。这里提到的配置可以用于定义持续集成任务的执行流程,配置的具体形式可以随着开发集成工具的不同而不同,如开发集成工具为Jenkins时,配置可以包括源码的配置、构建触发器的配置、项目构建环境的配置、代码的编译过程的配置、代码的发布配置、代码的测试配置、构建结果中代码(编译代码或持续集成代码,指可以运行的实际代码)的归档配置、项目构建日志的邮送配置等。
调控服务器130接收到项目的配置后,可以即刻或在到达预定时间时,从服务器140a、140b、140c等服务器中选取至少一服务器,如选取服务器140b,然后控制选取的服务器140b对项目进行构建。实际的构建可以随持续集成工具的不同而不同,如持续集成工具为Jenkins,调控服务器130从代码库120拉取该项目的源代码(可以根据配置拉取或拉取最新版),然后将该源代码及项目的配置发送至选取的服务器,由选取的服务器根据项目的配置,对项目的源代码进行自动编译、发布、测试等。
如果构建成功,构建项目的服务器将构建相关数据发送至调控服务器130,这里的数据包括项目构建日志、持续集成后代码及其他相关数据。然后由调控服务器130对持续集成后代码进行分类归档,打包供终端设备110a、110b、110c等下载,并将项目构建日志发送至终端设备110a、110b、110c等设备中至少一个。
如果构建失败,在相关的持续集成方案中,调控服务器130会将项目构建日志发送至110a、110b、110c等设备中至少一个,由用户修改项目的配置和/或源代码,然后手动触发项目的构建后,调控服务器130重新选取一台服务器,由重新选取的服务器进行该项目的构建。
在其他实施例,本发明实施例也可以通过其他网络架构实现本法实施例的持续集成方法,如调控服务器130与构建服务器140为同一服务器,具体的网络架构由实际的应用场景决定,本发明实施例对此不做限制。
由上可知,无论是修改项目的配置,还是手动触发项目的构建,均可能耗费较多的时间和资源。针对该问题,本发明的设计人员考虑到引起构建失败的原因可能是构建项目的服务器的环境问题,项目的配置或者项目的源代码的问题。如果是服务器的环境问题的话,无需修改配置或代码,换一台服务器进行构建即可,上述方案浪费时间和资源的同时,会降低项目的开发进度;如果是配置或者项目的源代码的问题,直接更换服务器进行构建,也会在一定程度上延迟问题发现时间和浪费构建的服务器的资源。有鉴于此,本发明提出一种持续集成方法,该方法在选取的服务器对所述项目进行构建的情况下,确定构建失败原因是否为选取的服务器的环境问题,如果是,则直接重新选取其他能够满足所述项目构建环境的服务器,并控制重新选取的服务器对所述项目进行构建。因此,可以在导致构建失败的原因是环境问题,而非项目本身问题时,继续选取其他服务器继续进行项目构建,相对于构建失败即修改项目配置,重新触发项目构建的方式而言,能够有效减少非项目原因导致的构建中断、项目配置修改次数与服务器配置修改次数,进而减少构建成本。以下结合附图对本发明实施例的持续集成过程进行详细介绍:
请参阅图2,图2是本发明一示例性实施例示出的持续集成方法的流程图,该实施例可以应用于计算机设备上,包括以下步骤S201-S204:
步骤S201、获取待持续集成的项目的配置;该配置携带有描述所述项目的项目构建环境的环境信息。
步骤S202、根据所述配置携带的环境信息,选取至少一能够满足所述项目构建环境的服务器,并控制选取的服务器对所述项目进行构建。
步骤S203、如果构建失败,确定构建失败原因是否为选取的服务器的环境问题。
步骤S204、如果是,则直接重新选取其他能够满足所述项目构建环境的服务器,并控制重新选取的服务器对所述项目进行构建。
本发明实施例应用的计算机设备可以是图1所示的调控服务器,也可以是其他控制调控服务器的设备,在此不做限制。另外,本实施例涉及的技术特征,如项目的配置、构建等,可以参阅图1涉及的实施例的描述,在此不再赘述。
在对项目持续集成前,项目开发/测试人员可以配置项目的构建开始时间,也可以配置完成后,手动触发项目的构建。
如果有配置构建开始时间,本发明实施例可以预先接收并存储项目的配置,在到达构建开始时间时,调取预存的配置,如果用户发送配置的同时触发项目的配置,本发明实施例可以实时接收项目的配置。
获取到项目的配置后,为了提高项目构建的成功率,需要用能够满足项目的项目构建环境的服务器来对项目进行构建。而具体需要选取多少台服务器,可以由项目需求及服务器性能来定。如项目构建需要进行编译、发布、测试三个任务环节,且服务器性能强大,可以选择一台服务器进行编译、发布、测试,如果服务器性能一般,可以选择三台服务器分别进行编译、发布、测试,如果服务器性能较差,可以选择三台以上服务器,用一台以上服务器进行编译,一台以上服务器进行发布,一台以上服务器进行测试,因此,具体选多少台服务器,视情况而定,本发明实施例对此不做限制。
另外,为了提高选取服务器的效率,本发明实施例可以预先确定各服务器能够满足的项目构建环境,并基于此为各服务器配置环境标签。在选取服务器时,通过以下操作,根据所述配置携带的项目构建环境信息,选取至少一能够满足所述项目构建环境的服务器:
获取各服务器的环境标签,所述环境标签用于表示服务器能满足的项目构建环境。
根据获取的环境标签及所述配置携带的环境信息,查找环境标签与所述环境信息匹配的服务器。
如果查找到的服务器的数量大于预定阈值,从查找出的服务器中选取构建所需数量的服务器。这里的预定阈值可以为0,这里构建所需数量可以为1。
其中,配置所携带的环境信息可以是本例子中的环境标签,也可以是其他描述项目的项目构建环境的数据,只要两者表示的项目构建环境一致,或差距在预定的差距范围内,即表示环境标签与所述环境信息匹配。
本例子中构建所需服务器的数量,可以由开发/测试人员在进行项目配置时设置,也可以由调控服务器根据项目配置设定,本发明实施例对此不做限制。
挑选出的服务器的数量大于构建所需服务的数量时,可以随机选取够所需数量的服务器。也可以采用负载均衡的方式,从查找出的服务器中选取构建所需数量的服务器。还可以采用其他方式选取。
针对选取出的服务器,本发明实施例可以向其发送携带项目的配置及源代码的构建控制指令,控制其根据项目的配置对项目进行构建。
在构建过程中,如果服务器的环境、项目的配置或源代码出现问题,则可构建失败,在构建失败后,构建服务器可以输出项目构建日志,本发明实施例为了针对造成构建失败的问题,采取相应措施,需要确定构建失败原因是否为选取的服务器的环境问题。
一例子中,可以从项目构建日志提取出描述项目构建失败原因的信息,然后分析提取的信息是否为服务器的环境数据,如果是,则为环境问题,如果不是,则不是环境问题,这里提到的服务器的环境数据包括服务器内操作系统涉及的数据,安装的各种非系统软件涉及的数据,硬件设备数据,或网络数据等。
另一例子中,本发明实施例可以预置环境问题,然后对比提取的数据与预置的问题,具体可以通过以下操作确定构建失败原因是否为选取的服务器的环境问题:
获取项目构建日志。
从项目构建日志中提取描述构建失败原因的数据。
对比提取的数据与预置的环境问题。
如果对比结果表示提取的数据与预置的环境问题匹配,则确定构建失败原因是选取的服务器的环境问题。
其中,预置的环境问题可以由项目及服务器的环境来决定,也可以根据历史构建失败的环境问题设定,一例子中,预置的环境问题包括以下至少一项:
项目工作空间之外文件查找失败;这里的文件可以随着持续集成工具的不同而不同,如持续集成工具为Jenkins时,文件可以为python3,can't openfile'/opt/tools/xxx.py',[Errno 2]No such file or directory等。
引用工具查找失败;这里的引用工具同样可以随着持续集成工具的不同而不同,如持续集成工具为Jenkins时,引用工具可以为ImportError,No module named'suds'等。
引用工具的相关模块查找失败;这里引用工具的相关模块也可以随着持续集成工具的不同而不同,如持续集成工具为Jenkins时,引用工具的相关模块可以为ImportError相关模块,No module named'suds'相关模块等。
存储空间异常;如缓存空间、内存空间或其他可读存储介质的空间问题。
网络异常;如断网、弱网等。
在确定是服务器的环境问题导致构建失败时,本发明实施例为了提高项目构建效率,无需重新配置项目及修改项目的源代码,而是直接重新选取其他能够满足所述项目构建环境的服务器,并控制重新选取的服务器对所述项目进行构建。
在重新选取其他服务器时,可以根据所述配置携带的环境信息,从多个服务器中重新选取不同于之前选取的服务器;也可以参照步骤S202的选取结果进行重新选取,例如,在步骤S202查找出多个满足项目构建环境的服务器,且仅使用了部分查找的服务器进行项目构建的情况下,本发明实施例可以从步骤S202查找出的多个服务器中选取之前选取的服务器外的其他服务器。
由上述实施例可知,在导致构建失败的原因是环境问题,而非项目本身问题时,继续选取其他服务器继续进行项目构建,相对于构建失败即修改项目配置,重新触发项目构建的方式而言,能够有效减少非项目原因导致的构建中断、项目配置修改次数与服务器配置修改次数,进而减少构建成本。而且构建过程中项目开发/测试人员对环境问题引起的构建失败无感知,可以提高其对持续集成工具的使用体验。
此外,无论控制重新选取的继续构建失败还是成功,为了便于相关人员分析之前构建失败的问题,本发明实施例可以将构建失败的服务器的唯一标识及项目构建日志,通过邮件插件发送至预定的收件方。这里的项目构建日志可以包括项目构建失败的记录。在控制重新选取的继续构建成功后,项目构建日志还可以包括项目构建成功的记录。收件方可以管理员的邮箱客户端,或任一项目开发/测试人员的邮箱客户端
在其他场景下,如果导致构建失败的原因不是环境问题,本发明实施例,也可以将构建失败的服务器的唯一标识及项目构建日志,通过邮件插件发送至预定的收件方,并由项目开发/测试人员修改项目的配置或源代码后,手动触发项目的构建。
以下结合附图3所示网络架构中的设备,介绍下各设备交互实现持续集成的过程:
在有需要开发和/或测试项目(该项目可以称为待持续集成项目)时,开发/测试人员(以下简称为用户)通过操作终端设备310a、310b、310c等设备中任一,可以编写项目的源代码,然后将项目的源代码推送至代码库320(步骤S1),并通过CI客户端进行项目的配置,完成后,将项目的配置发送至调控服务器330(步骤S2)。
调控服务器330接收到项目的配置后,可以即刻或在到达预定时间时,从服务器340a、340b、340c等服务器中选取至少一满足项目构建环境的服务器(步骤S3),如选取服务器340b,然后从代码库320拉取该项目最新的源代码(步骤S4),然后将该源代码及项目的配置发送至选取的服务器340b(步骤S5),由服务器340b根据项目的配置,对项目的源代码进构建,如果构建失败,服务器340b将项目构建日志发送至调控服务器330(步骤S6)。
调控服务器330根据项目构建日志确定是否环境问题引起构建失败,如果是,则重新选取满足项目构建环境的其他服务器(步骤S7),如选取服务器340c。然后将该项目的源代码及配置发送至选取的服务器340C(步骤S8),由服务器340c根据项目的配置,对项目的源代码进重复构建,如果构建成功,服务器340c将项目构建日志及项目构建结果发送至调控服务器330(步骤S9)。
调控服务器330对项目构建结果归档后,打包可以实际运行的代码,存储(步骤S10),并将项目构建日志及构建失败的服务器的唯一标示邮送至对应的终端设备(步骤S11),可以是310a、310b、310c等设备中任一。
本发明实施例涉及的技术内容与前述实施例相应,在此不再赘述。
此外,前述实施例的持续集成方法,在控制重新选取的服务器构建项目后,如果仍然构建失败,本发明实施例可以继续确认构建失败的原因是否为环境问题,如果是环境问题,可以继续选取其他服务器,并控制选取的服务器继续进行项目构建,直至构建成功,构建失败的原因不是环境问题,或者是环境问题导致构建失败,但是没有满足项目构建环境的服务器可供选择。
针对上述情况,本发明实施例可以采取循环步骤进行持续集成,具体可以参见图4,图4所示方法可以应用于计算机设备,包括以下步骤S401-S408:
步骤S401、获取待持续集成的项目的配置;该配置携带有描述所述项目的项目构建环境的环境信息。
步骤S402、根据所述配置携带的环境信息,选取至少一能够满足所述项目构建环境的服务器,并控制选取的服务器对所述项目进行构建,如果构建失败,执行步骤S403,如果构建成功执行步骤S407。
步骤S403、判断构建失败的原因是否为构建失败的服务器的环境问题,如果是执行步骤S404,如果不是,执行步骤S408。
步骤S404、记录构建失败的服务器。
步骤S405、判断除记录的服务器外,是否还存在满足项目构建环境的服务器,如果存在,执行步骤S406,如果不存在,执行步骤S408。
步骤S406、如果是,从记录的服务器外满足项目构建环境的服务器中,重新选取一服务器,并控制选取的服务器对所述项目进行构建,如果构建成功,执行步骤S407,如果构建失败,返回步骤S403。
步骤S407、对构建结果进行归档,打包存储,然后执行步骤S408。
步骤S408、将项目构建日志及记录的服务器的唯一标识邮送至预定的收件方,如果没有记录的服务器,仅邮送项目构建日志。
本发明实施例涉及的技术内容与前述实施例相应,在此不再赘述。
此外,可以预先为不同的服务器预置其满足的项目构建环境的环境标签,满足的项目构建环境相同的服务器,预置的环境标签相同,或划分到环境标签相同的服务器群中。有鉴于此,根据所述配置携带的环境信息,选取至少一能够满足所述项目构建环境的服务器,可以先选取出环境标签与环境信息匹配的服务器群,如环境标签为LABEL_1的服务器列表List。
在记录构建失败的服务器时,从服务器列表List中移除构建失败的那一台服务器,将其加入到失败服务器列表FailList中。在邮送构建失败服务器的唯一标识时,可以邮送FailList中服务器的唯一标识。
与前述方法的实施例相对应,本发明还提供了装置的实施例。
参见图5,图5是本发明一示例性实施例示出的持续集成装置的框图,该装置可以应用于计算机设备,可以包括:配置获取模块510、项目构建模块520、失败确认模块530和重复构建模块540。
其中,配置获取模块510,用于获取待持续集成的项目的配置;该配置携带有描述所述项目的项目构建环境的环境信息。
项目构建模块520,用于根据所述配置携带的环境信息,选取至少一能够满足所述项目构建环境的服务器,并控制选取的服务器对所述项目进行构建。
失败确认模块530,用于在构建失败时,确定构建失败原因是否为选取的服务器的环境问题。
重复构建模块540,用于在构建失败原因是所述环境问题时,直接重新选取其他能够满足所述项目构建环境的服务器,并控制重新选取的服务器对所述项目进行构建。
一例子中,本发明的持续集成装置还可以包括:
信息邮送模块,用于在构建失败原因不是所述环境问题时,将构建失败的服务器的唯一标识及项目构建日志,通过邮件插件发送至预定的收件方。
另一例子中,项目构建模块520还可以被配置为:
获取各服务器的环境标签,所述环境标签用于表示服务器能满足的项目构建环境;
根据获取的环境标签及所述配置携带的环境信息,查找环境标签与所述环境信息匹配的服务器;
如果查找到的服务器的数量大于预定阈值,从查找出的服务器中选取构建所需数量的服务器。
作为例子,项目构建模块520还可以被配置为:
采用负载均衡的方式,从查找出的服务器中选取构建所需数量的服务器。
另一例子中,失败确认模块530还可以被配置为:
获取项目构建日志;
从项目构建日志中提取描述构建失败原因的数据;
对比提取的数据与预置的环境问题;
如果对比结果表示提取的数据与预置的环境问题匹配,则确定构建失败原因是选取的服务器的环境问题。
作为例子,所述环境问题包括以下至少一项:
项目工作空间之外文件查找失败;
引用工具查找失败;
引用工具的相关模块查找失败;
存储空间异常;
网络异常。
上述装置中各个单元(或模块)的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元或模块可以是或者也可以不是物理上分开的,作为单元或模块显示的部件可以是或者也可以不是物理单元或模块,即可以位于一个地方,或者也可以分布到多个网络单元或模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明持续集成装置的实施例可以应用在计算机设备上。具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现中,计算机设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、平板计算机、智能交互设备、智能家居设备等,或者这些设备中的任意几种设备的组合。
装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器等可读存储介质中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本发明持续集成装置所在终端设备的一种硬件结构图,除了图6所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的终端设备通常根据该终端设备的实际功能,还可以包括其他硬件,对此不再赘述。其中,内存和非易失性存储器是计算机可读的存储器,终端设备的存储器可以存储处理器可执行的程序指令;处理器可以耦合存储器,用于读取所述存储介质存储的程序指令,并作为响应,执行以上任一实施例中持续集成方法中的操作。
在其他实施例中,处理器所执行的操作可以参考以上所述持续集成方法的实施例中相关的描述,在此不予赘述。
此外,本发明实施例还提供一种机器可读存储介质(包括计算机设备的存储器),所述可读存储介质中存储有程序指令,所述程序指令包括以上所持续集成方法的各步骤对应的指令。当由一个或多个处理器执行时,使得处理器执行以上所述持续集成方法。
本发明实施例可采用在一个或多个其中包含有程序代码的可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机可用可读存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。机器可读存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (12)
1.一种持续集成方法,其特征在于,包括步骤:
获取待持续集成的项目的配置;该配置携带有描述所述项目的项目构建环境的环境信息;
根据各服务器的环境标签以及所述配置携带的环境信息,选取至少一能够满足所述项目构建环境的服务器,并控制选取的服务器对所述项目进行构建,其中,所述环境标签用于表示服务器能满足的项目构建环境;
如果构建失败,确定构建失败原因是否为选取的服务器的环境问题;
如果是,则直接重新选取其他能够满足所述项目构建环境的服务器,并控制重新选取的服务器对所述项目进行构建。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括以下步骤:
将构建失败的服务器的唯一标识及项目构建日志,通过邮件插件发送至预定的收件方。
3.根据权利要求1所述的方法,其特征在于,所述根据各服务器的环境标签以及所述配置携带的环境信息,选取至少一能够满足所述项目构建环境的服务器,包括:
获取各服务器的环境标签;
根据获取的环境标签及所述配置携带的环境信息,查找环境标签与所述环境信息匹配的服务器;
如果查找到的服务器的数量大于预定阈值,从查找出的服务器中选取构建所需数量的服务器。
4.根据权利要求3所述的方法,其特征在于,从查找出的服务器中选取构建所需数量的服务器,包括:
采用负载均衡的方式,从查找出的服务器中选取构建所需数量的服务器。
5.根据权利要求1所述的方法,其特征在于,确定构建失败原因是否为选取的服务器的环境问题,包括:
获取项目构建日志;
从项目构建日志中提取描述构建失败原因的数据;
对比提取的数据与预置的环境问题;
如果对比结果表示提取的数据与预置的环境问题匹配,则确定构建失败原因是选取的服务器的环境问题。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述环境问题包括以下至少一项:
项目工作空间之外文件查找失败;
引用工具查找失败;
引用工具的相关模块查找失败;
存储空间异常;
网络异常。
7.一种持续集成装置,其特征在于,包括:
配置获取模块,用于获取待持续集成的项目的配置;该配置携带有描述所述项目的项目构建环境的环境信息;
项目构建模块,用于根据各服务器的环境标签以及所述配置携带的环境信息,选取至少一能够满足所述项目构建环境的服务器,并控制选取的服务器对所述项目进行构建,其中,所述环境标签用于表示服务器能满足的项目构建环境;
失败确认模块,用于在构建失败时,确定构建失败原因是否为选取的服务器的环境问题;
重复构建模块,用于在构建失败原因是所述环境问题时,直接重新选取其他能够满足所述项目构建环境的服务器,并控制重新选取的服务器对所述项目进行构建。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
信息邮送模块,用于将构建失败的服务器的唯一标识及项目构建日志,通过邮件插件发送至预定的收件方。
9.根据权利要求7所述的装置,其特征在于,所述项目构建模块还被配置为:
获取各服务器的环境标签;
根据获取的环境标签及所述配置携带的环境信息,查找环境标签与所述环境信息匹配的服务器;
如果查找到的服务器的数量大于预定阈值,从查找出的服务器中选取构建所需数量的服务器。
10.根据权利要求7所述的装置,其特征在于,所述失败确认模块还被配置为:
获取项目构建日志;
从项目构建日志中提取描述构建失败原因的数据;
对比提取的数据与预置的环境问题;
如果对比结果表示提取的数据与预置的环境问题匹配,则确定构建失败原因是选取的服务器的环境问题。
11.一种计算机设备,其特征在于,包括:
处理器;
存储处理器可执行指令的存储器;
其中,所述处理器耦合于所述存储器,用于读取所述存储器存储的程序指令,并作为响应,执行如权利要求1-6中任一项所述方法中的操作。
12.一种计算机可读存储介质,其特征在于,一个或多个计算机可读存储介质上存储有指令,当由一个或多个处理器执行时,使得处理器执行如权利要求1-6中任一项所述方法中的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810784503.0A CN109062789B (zh) | 2018-07-17 | 2018-07-17 | 持续集成方法、装置及设备、可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810784503.0A CN109062789B (zh) | 2018-07-17 | 2018-07-17 | 持续集成方法、装置及设备、可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109062789A CN109062789A (zh) | 2018-12-21 |
CN109062789B true CN109062789B (zh) | 2022-04-15 |
Family
ID=64816967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810784503.0A Active CN109062789B (zh) | 2018-07-17 | 2018-07-17 | 持续集成方法、装置及设备、可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109062789B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112286580B (zh) * | 2020-10-31 | 2023-08-04 | 成都新潮传媒集团有限公司 | 一种用于处理流水线作业的方法、装置及计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105704458A (zh) * | 2016-03-22 | 2016-06-22 | 北京邮电大学 | 基于容器技术的视频监控云服务的平台实现方法及系统 |
CN106897226A (zh) * | 2017-02-28 | 2017-06-27 | 郑州云海信息技术有限公司 | 一种持续集成测试的方法以及装置 |
CN107450941A (zh) * | 2017-06-26 | 2017-12-08 | 深圳市小牛在线互联网信息咨询有限公司 | 自动打包方法、装置、存储介质和计算机设备 |
CN107943684A (zh) * | 2017-10-30 | 2018-04-20 | 北京奇虎科技有限公司 | 一种测试失败的重试方法、装置、服务器及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10310968B2 (en) * | 2016-11-04 | 2019-06-04 | International Business Machines Corporation | Developing software project plans based on developer sensitivity ratings detected from monitoring developer error patterns |
-
2018
- 2018-07-17 CN CN201810784503.0A patent/CN109062789B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105704458A (zh) * | 2016-03-22 | 2016-06-22 | 北京邮电大学 | 基于容器技术的视频监控云服务的平台实现方法及系统 |
CN106897226A (zh) * | 2017-02-28 | 2017-06-27 | 郑州云海信息技术有限公司 | 一种持续集成测试的方法以及装置 |
CN107450941A (zh) * | 2017-06-26 | 2017-12-08 | 深圳市小牛在线互联网信息咨询有限公司 | 自动打包方法、装置、存储介质和计算机设备 |
CN107943684A (zh) * | 2017-10-30 | 2018-04-20 | 北京奇虎科技有限公司 | 一种测试失败的重试方法、装置、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109062789A (zh) | 2018-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100468356C (zh) | 通过属性控制的测试实例继承 | |
US20170090883A1 (en) | Methods and systems for uploading a program based on a target network platform | |
US7853926B2 (en) | Automated context-sensitive operating system switch | |
JP2007172269A (ja) | プログラムのテスト方法、テスト装置 | |
CN112286829B (zh) | 测试脚本生成方法及装置 | |
CN108776643B (zh) | 一种基于版本控制流程的目标代码合并控制方法及系统 | |
CN105468529A (zh) | 一种安卓应用ui控件精准遍历方法和装置 | |
CN112099800B (zh) | 代码数据的处理方法、装置和服务器 | |
CN111258614B (zh) | 项目第三方库升级异常检测方法及系统、设备及存储介质 | |
CN104423961A (zh) | 一种生成测试脚本的方法及系统 | |
CN111651352B (zh) | 一种仓库代码的合并方法及装置 | |
CN114237754B (zh) | 一种数据加载方法、装置、电子设备以及存储介质 | |
CN103810105A (zh) | 应用程序版本检测方法和装置 | |
US10175958B2 (en) | Acquiring identification of an application lifecycle management entity associated with similar code | |
CN112069073A (zh) | 测试用例的管理方法、终端和存储介质 | |
CN109062789B (zh) | 持续集成方法、装置及设备、可读存储介质 | |
CN114609995A (zh) | 故障控制方法、装置、系统、设备、介质及产品 | |
CN104298589A (zh) | 一种性能测试方法和设备 | |
CN107766228B (zh) | 一种基于多语种的自动化测试方法和装置 | |
CN111026398B (zh) | 基于缓存的数据集成的构建方法与构建系统 | |
CN117290236A (zh) | 软件测试方法、装置、计算机设备及计算机可读存储介质 | |
CN110471828B (zh) | 一种操作系统测试方法、装置及其设备 | |
CN110955813A (zh) | 一种数据爬取方法及装置 | |
CN114817047A (zh) | 编译器测试方法、用例生成方法及装置、指令存储结构 | |
CN107463495A (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 |