CN104423960B - 一种项目持续集成的方法及系统 - Google Patents
一种项目持续集成的方法及系统 Download PDFInfo
- Publication number
- CN104423960B CN104423960B CN201310409516.7A CN201310409516A CN104423960B CN 104423960 B CN104423960 B CN 104423960B CN 201310409516 A CN201310409516 A CN 201310409516A CN 104423960 B CN104423960 B CN 104423960B
- Authority
- CN
- China
- Prior art keywords
- continuous integrating
- project
- information
- qualitative data
- item
- 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
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供了一种项目持续集成的方法及系统,其中所述方法包括:获取项目信息,所述项目信息包括项目ID、一个或多个项目分支信息;依据所述项目ID以及所述一个或多个项目分支信息,生成对应的一个或多个持续集成任务配置信息;构建与所述一个或多个持续集成任务配置信息对应的一个或多个持续集成任务。本申请可以提高持续集成性能,节约集成成本。
Description
技术领域
本申请涉及项目集成的技术领域,特别是涉及一种项目持续集成的方法,以及,一种项目持续集成的系统。
背景技术
在典型的软件项目中,集成阶段一般都是在最后,因此出现问题的最多,而且最后有可能导致不能按时交付,而持续集成(Continuous integration,简称CI)可以用来解决这个问题。持续集成是一种软件开发实践,在持续集成中,团队的成员频繁集成他们的工作成果,通常每个人每天至少集成一次,这便导致每天会集成多次,每次集成是通过自动构建进行的,目的是让团队在持续的基础上收到反馈并进行改进,而不必等到开发周期后期才寻找和修复缺陷。
Hudson作为一款开源持续集成工具在业界得到普遍的应用,在现有技术中,可以通过人工配置的方式对一个项目使用Hudson进行持续集成,具体步骤如下:
1.人工新建一个或多个Hudson持续集成任务,选取任务风格,并指定任务的名称与项目关联;
2.人工获取项目开发分支信息,人工新建一个或多个Hudson持续集成任务,将项目开发分支填写到Hudson任务分支地址属性中;
3.人工配置每个任务简介属性,构建命令属性,定时器属性,执行节点属性,结果搜集方式,静态扫描方式等一系列任务属性;
4.人工维护每个持续集成任务,当项目开发分支变更时,需要人工更新持续集成任务的属性;
5.Hudson定时构建后,会通过配置的方式解析一份结果,它并没有结果监控功能,如果需要获取构建质量数据,需要打开一个或多个任务进行查看汇总;
6.当项目结束删除任务后,构建结果随着任务一起被删除,不具备持久化保存的功能。
然而,发明人在实施上述项目持续集成时,发现以下不足:
1.人工配置持续集成任务,每个任务平均耗时10分钟,每个项目平均需要配置2~10个任务,大规模使用时,一个互联网公司在某一个时间段内大约有500~5000个项目的规模需要持续集成构建;
2.人工维护持续集成任务与项目的关联,根据计算一个互联网公司所需要的任务数量在1000~50000个,通过人工维护其人工开销成本十分巨大;
3.人工汇总项目持续集成构建质量数据,需要投入大量的人工成本来进行简单的汇总计算,系统无法做到项目质量自动监控;
4.项目结束删除任务后,不能持久化的保存历史构建质量数据,无法追溯历史数据;
5.Hudson大规模创建任务(10000个以上)时,会有性能瓶颈,导致Hudson访问慢,无法扩展。
总之,现有Hudson的技术方案在项目中特别是大规模项目中应用时,面临持续集成任务配置困难,管理维护困难,项目质量监控困难以及项目质量数据分析困难等问题,并且当大规模项目应用以人工配置管理的方式进行持续集成时,会带来较大成本开销。
因此,本领域技术人员迫切需要解决的问题是:提供一种项目持续集成的处理机制,用以提高持续集成性能,节约集成成本。
发明内容
本申请所要解决的技术问题是提供一种项目持续集成的方法,用以提高持续集成性能,节约集成成本。
相应的,本申请还提供了一种项目持续集成的系统,用以保证上述方法在实际中的应用。
为了解决上述问题,本申请公开了一种项目持续集成的方法,包括:
获取项目信息,所述项目信息包括项目ID、一个或多个项目分支信息;
依据所述项目ID以及所述一个或多个项目分支信息,生成对应的一个或多个持续集成任务配置信息;
构建与所述一个或多个持续集成任务配置信息对应的一个或多个持续集成任务。
优选地,所述依据所述项目ID以及一个或多个项目分支信息,生成对应的一个或多个持续集成任务配置信息的步骤包括:
调用预设插件分别将所述项目ID,每个项目分支信息替换预设模板中对应的项目ID和项目分支信息,生成与所述项目分支信息一一对应的持续集成任务配置信息。
优选地,调用第一预设接口构建与所述一个或多个持续集成任务配置信息对应的一个或多个持续集成任务。
优选地,所述方法还包括:
当所述一个或多个持续集成任务构建完成后,获取所述一个或多个持续集成任务的构建质量数据;
持久化所述构建质量数据。
优选地,所述当所述一个或多个持续集成任务构建完成后,获取所述一个或多个持续集成任务的构建质量数据的步骤包括:
当所述一个或多个持续集成任务构建完成后,调用预设插件获取所述一个或多个持续集成任务的构建信息,所述构建信息包括项目ID;
调用第二预设接口依据所述构建信息获取对应的构建质量数据;
生成所述构建质量数据与所述项目ID的关联关系;
所述持久化所述构建质量数据的步骤包括:
持久化所述构建质量数据以及所述构建质量数据与所述项目ID的关联关系。
优选地,所述项目信息包括项目更新信息,所述方法还包括:
依据所述项目更新信息更新对应的一个或多个持续集成任务。
优选地,所述依据所述项目更新信息更新对应的一个或多个持续集成任务的步骤包括:
依据所述项目更新信息生成对应的一个或多个最新的持续集成任务配置信息;
依据所述项目ID获得对应的一个或多个已有的持续集成任务配置信息;
将所述一个或多个最新的持续集成任务配置信息与所述一个或多个已有的持续集成任务配置信息进行比对,获得一个或多个持续集成任务配置信息的更新结果;
依据所述更新结果调用第三预设接口更新对应的一个或多个持续集成任务。
优选地,所述方法还包括:
获取所述更新后的持续集成任务的构建质量数据;
持久化所述更新后的持续集成任务的构建质量数据;
依据项目ID查找所述持续集成任务更新前的构建质量数据;
将所述持续集成任务更新前的构建质量数据与更新后的构建质量数据进行比较;
若所述持续集成任务更新前的构建质量数据大于更新后的构建质量数据,发出告警消息。
优选地,所述项目信息包括项目结束信息,所述方法还包括:
依据所述项目结束信息调用第四预设接口删除所述项目ID对应的一个或多个持续集成任务配置信息。
优选地,所述方法还包括:
当所述持续集成任务配置信息的个数大于预设阈值时,将所述持续集成任务配置信息轮循分配到预设的多台持续集成服务器中。
本申请公开了一种项目持续集成的系统,包括:
项目信息获取模块,用于获取项目信息,所述项目信息包括项目ID、一个或多个项目分支信息;
配置信息生成模块,用于依据所述项目ID以及所述一个或多个项目分支信息,生成对应的一个或多个持续集成任务配置信息;
任务构建模块,用于构建与所述一个或多个持续集成任务配置信息对应的一个或多个持续集成任务。
优选地,所述配置信息生成模块包括:
持续集成任务配置信息生成子模块,用于调用预设插件分别将所述项目ID,每个项目分支信息替换预设模板中对应的项目ID和项目分支信息,生成与所述项目分支信息一一对应的持续集成任务配置信息。
优选地,调用第一预设接口构建与所述一个或多个持续集成任务配置信息对应的一个或多个持续集成任务。
优选地,所述系统还包括:
第一构建质量数据获取模块,用于在所述一个或多个持续集成任务构建完成后,获取所述一个或多个持续集成任务的构建质量数据;
第一构建质量数据持久化模块,用于持久化所述构建质量数据。
优选地,所述第一构建质量数据获取模块包括:
构建信息获取子模块,用于在所述一个或多个持续集成任务构建完成后,调用预设插件获取所述一个或多个持续集成任务的构建信息,所述构建信息包括项目ID;
构建质量数据获取子模块,用于调用第二预设接口依据所述构建信息获取对应的构建质量数据;
关联关系生成子模块,用于生成所述构建质量数据与所述项目ID的关联关系;
所述构建质量数据持久化模块包括:
关联子模块,用于持久化所述构建质量数据以及所述构建质量数据与所述项目ID的关联关系。
优选地,所述项目信息包括项目更新信息,所述系统还包括:
更新模块,用于依据所述项目更新信息更新对应的一个或多个持续集成任务。
优选地,所述更新模块包括:
最新配置信息获取子模块,用于依据所述项目更新信息生成对应的一个或多个最新的持续集成任务配置信息;
已有配置信息获取子模块,用于依据所述项目ID获得对应的一个或多个已有的持续集成任务配置信息;
比对子模块,用于将所述一个或多个最新的持续集成任务配置信息与所述一个或多个已有的持续集成任务配置信息进行比对,获得一个或多个持续集成任务配置信息的更新结果;
持续集成任务更新子模块,用于依据所述更新结果调用第三预设接口更新对应的一个或多个持续集成任务。
优选地,所述系统还包括:
第二构建质量数据获取模块,用于获取所述更新后的持续集成任务的构建质量数据;
第二构建质量数据持久化模块,用于持久化所述更新后的持续集成任务的构建质量数据;
构建质量数据查找模块,用于依据项目ID查找所述持续集成任务更新前的构建质量数据;
质量数据比较模块,用于将所述持续集成任务更新前的构建质量数据与更新后的构建质量数据进行比较;
告警模块,用于在所述持续集成任务更新前的构建质量数据大于更新后的构建质量数据时,发出告警消息。
优选地,所述项目信息包括项目结束信息,所述系统还包括:
配置信息删除模块,用于依据所述项目结束信息调用第四预设接口删除所述项目ID对应的一个或多个持续集成任务配置信息。
优选地,所述系统还包括:
配置信息轮循分配模块,用于在所述持续集成任务配置信息的个数大于预设阈值时,将所述持续集成任务配置信息轮循分配到预设的多台持续集成服务器中。
与现有技术相比,本申请具有以下优点:
第一,本申请实施例可以自动获取项目信息,根据项目信息中的项目ID和一个或多个项目分支信息自动生成一个或多个持续集成任务配置信息并自动构建对应的持续集成任务,由于持续集成任务配置信息中包含项目ID,因此构建的持续集成任务可以与项目关联,从而方便对项目的管理,节省项目特别是大规模项目的持续集成和项目管理维护的成本,提高项目持续集成的效率以及提高持续集成性能。
第二,本申请实施例可以自动获取项目更新信息以及项目结束信息,依据项目更新信息以及项目结束信息自动更新对应的持续集成任务或者删除对应的持续集成任务,免去人工更新和删除持续集成任务的麻烦,方便对持续集成任务的管理,节省了持续集成任务维护管理的成本。
第三,本申请实施例通过自动获取一个或多个持续集成任务的构建信息,依据构建信息自动汇总构建质量数据并持久化保存构建质量数据,这样可以免去了手工打开一个或多个持续集成任务并手工汇总构建质量数据的麻烦,节省了构建质量数据监控的成本,并且,即使项目结束导致持续集成任务被删除时,构建质量数据也不会随着持续集成任务一起被删除,持久保存的构建质量数据以便于项目历史构建质量数据的追溯和构建质量数据以及更新代码版本的质量监控。
第四,当面对大规模Hudson持续集成任务的管理时,本申请实施例在调用HudsonAPI之前设置了一个轮询迭代器,通过调用Hudson集群的方式进行持续集成任务支撑,线性扩展了Hudson的性能,避免了大规模Hudson持续集成任务管理导致Hudson宕机的情况。
附图说明
图1是本申请一种项目持续集成的方法实施例一的步骤流程图;
图2是本申请一种项目持续集成的方法实施例二的步骤流程图;
图3是本申请一种项目持续集成的系统实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请实施例的核心构思之一在于,通过自动获取项目信息,根据项目信息中的项目ID和一个或多个项目分支信息自动生成一个或多个持续集成任务配置信息并自动构建对应的与项目关联的持续集成任务,在持续集成任务构建完成后还可以自动获取和持久化构建质量数据,自动更新和删除持续集成任务,使得整个项目持续集成过程自动化,从而提高了项目持续集成的效率,降低集成和管理成本。
参照图1,示出了本申请一种项目持续集成的方法实施例一的步骤流程图,可以包括以下步骤:
步骤101,获取项目信息,所述项目信息包括项目ID、一个或多个项目分支信息;
步骤102,依据所述项目ID以及所述一个或多个项目分支信息,生成对应的一个或多个持续集成任务配置信息;
步骤103,构建与所述一个或多个持续集成任务配置信息对应的一个或多个持续集成任务。
本申请实施例能够全自动实现项目的持续集成,具体而言,本申请实施例可以自动获取项目信息,根据项目信息中的项目ID和一个或多个项目分支信息自动生成一个或多个持续集成任务配置信息并自动构建对应的持续集成任务,由于持续集成任务配置信息中包含项目ID,因此构建的持续集成任务可以与项目关联起来,从而方便对项目的管理,节省项目特别是大规模项目的持续集成和项目管理维护的成本,提高项目持续集成的效率以及提高持续集成性能。
参照图2,示出了本申请一种项目持续集成的方法实施例二的步骤流程图,在本申请实施例中,以互联网项目为例进行说明,本申请实施例可以包括以下步骤:
步骤201,获取项目信息,所述项目信息包括项目ID、一个或多个项目分支信息、项目更新信息、项目结束信息;
随着互联网的快速发展,互联网公司均有大规模的项目进行开发,在项目开发过程中,由于并行开发的原因,可能出现多人修改一个代码模块的情形,这样针对该代码模块就有一个或多个项目分支信息。具体而言,该代码模块可以称为主干代码或主干信息(主干信息可以表示如下:svn.a.com/test/trunk),分支是主干代码复制出来的一个副本,例如项目成员A在开发过程中需要修改主干代码时,可以复制一份出来在本地修改,复制出来的代码称为主干代码的分支(项目成员A的分支信息可以表示如下:svn.a.com/test/branches/172312_1);项目成员B在开发过程中同样修改主干代码的另一个功能,也可以复制一份出来本地修改,复制出来的代码称为主干代码模块的另一个分支(项目成员B的分支信息可以表示如下:svn.a.com/test/branches/172312_2);当项目成员A开发修改完后发布,会跟主干代码合并,生成一个新的版本的主干代码,项目成员B开发修改完后同样跟主干代码合并,生成另一个新版本的主干代码。
一个互联网项目的项目信息除了包括一个或多个项目分支信息(或称开发分支信息)外,还可以包括唯一标识该项目的项目ID、开发成员信息、项目发布日期等信息。在实际中,项目信息还可以包括项目更新信息,项目结束信息等。本申请实施例的项目信息可以从外部系统发送的异步消息中获取,也可以通过其他方式获取,本申请实施例对项目信息的获取方式不做限制。本申请实施例通过自动获取项目信息来提高持续集成的效率,节约项目持续集成成本。
步骤202,依据所述项目ID以及所述一个或多个项目分支信息,生成对应的一个或多个持续集成任务配置信息;
具体而言,持续集成任务(简称任务)可以为通过开源的持续集成工具Hudson服务器创建的任务,用于定时检出代码,执行构建命令,解析结果报告等。在本申请中,可以依据项目ID以及一个或多个项目分支信息自动生成与所述一个或多个项目分支信息对应的一个或多个持续集成任务配置信息。
在本申请的一种优选实施例中,步骤202可以包括如下子步骤:
子步骤S11,调用预设插件分别将所述项目ID以及每个项目分支信息替换预设模板中对应的项目ID和项目分支信息,生成与所述项目分支信息一一对应的持续集成任务配置信息。
在具体实现中,由于测试类型可以包括单元测试、自动化测试、性能测试等等不同的类型,本申请实施例预设有针对不同类型的测试的模板,不同模板可以区分创建针对不同测试类型的不同的标准化任务,例如对于单元测试,预设有单元测试模板等。
在本申请实施例中,预设插件为本申请实施例开发的新插件Hudson Plugin,通过Hudson Plugin可以分别将项目ID以及每个项目分支信息作为变量,替换预设模板中定义的项目ID和项目分支信息,将项目ID、项目分支信息和预设模板合并渲染成对应的持续集成任务配置信息,即项目ID+分支信息+预设模版三者可以生成每个项目分支信息唯一对应的持续集成任务配置信息。
步骤203,构建与所述一个或多个持续集成任务配置信息对应的一个或多个持续集成任务;
在实际应用中,可以调用第一预设接口构建与所述一个或多个持续集成任务配置信息对应的一个或多个持续集成任务,所述第一预设接口为Hudson服务器(简称Hudson)的新建API(Application Programming Interface,应用程序编程接口),依据每个项目分支的持续集成任务配置信息调用Hudson新建API可以进行对应的持续集成任务的自动构建。
由于每个持续集成任务配置信息可以由项目ID、项目分支信息以及预设模板唯一确定,因此依据持续集成任务配置信息构建的对应的持续集成任务能够与项目ID关联,并且每个持续集成任务都具有唯一的任务ID,使得项目ID与任务ID具有关联关系,本申请实施例自动将持续集成任务与项目关联起来,可以方便对项目的管理,节省持续集成和项目管理维护的成本。
应用于本申请实施例,当面对大规模Hudson持续集成任务的管理(如持续集成任务配置信息的个数大于预设阈值,如上万个)时,本申请实施例还可以将所述多个持续集成任务配置信息轮循分配到预设的多台持续集成服务器(Hudson服务器)中。具体而言,本申请实施例在调用Hudson API之前设置了一个轮询迭代器,轮询迭代器相当于一个负载均衡,用于将持续集成任务配置轮循分配(如取模分配)到Hudson集群的多台Hudson服务器中。例如,Hudson集群有Hudson1、Hudson2、Hudson3三台Hudson服务器,共有5个持续集成任务配置信息,则通过轮询迭代器,将持续集成任务配置信息1分配到Hudson1,持续集成任务配置信息2分配到Hudson2,持续集成任务配置信息3分配到Hudson3,持续集成任务配置信息4分配到Hudson1,持续集成任务配置信息5分配到Hudson2中,使得持续集成任务配置信息能够轮循Hudson集群中的多台Hudson服务器。本申请实施例通过调用Hudson集群的方式进行持续集成任务支撑,线性扩展了Hudson的性能,避免了大规模Hudson持续集成任务管理导致Hudson宕机的情况。
步骤204,当所述一个或多个持续集成任务构建完成后,获取所述一个或多个持续集成任务的构建质量数据并进行持久化存储;
在本申请的一种优选实施例中,步骤204可以包括如下子步骤:
子步骤S21,当所述一个或多个持续集成任务构建完成后,调用预设插件获取所述一个或多个持续集成任务的构建信息,所述构建信息包括项目ID;
在本申请实施例中,当所述一个或多个持续集成任务构建完成后,Hudson Plugin可以自动从Hudson服务器中搜集一个或多个持续集成任务的构建信息,所述构建信息可以包括本次构建序号、构建开始时间、构建耗时、构建节点、触发方式、构建数据链接、项目ID等信息。
子步骤S22,调用第二预设接口依据所述构建信息获取对应的构建质量数据;
具体而言,在获取Hudson Plugin以异步消息的形式(HudsonPlugin可以通过使用ActiveMQ(一种开源消息总线),直接将消息发送到ActiveMQ异步消息队列里)发送的构建信息后,解析该构建消息,并调用第二预设接口从解析结果中提取并汇总构建对应的构建质量数据,其中,所述第二预设接口可以为junit插件API,testNG插件API,FindBug插件API等Hudson开源插件的API,所述构建质量数据可以包括但不限以下内容:
junit:持续集成用例总数、成功用例个数、失败用例个数、忽略用例个数、成功率、每个用例的详情、失败信息(如果失败)等;
testNG:持续集成用例总数、成功用例个数、失败用例个数、忽略用例个数、成功率、每个用例的详情、失败信息(如果失败)等;
FindBug:代码扫描风险个数(高、正常、低三种级别的个数)等。
子步骤S23,生成所述构建质量数据与项目ID的关联关系;
子步骤S24,持久化所述构建质量数据以及所述构建质量数据与所述项目ID的关联关系。
具体而言,由于Hudson Plugin返回的构建信息中包括项目ID,通过建立项目ID与构建质量数据的关联关系将构建质量数据与项目进行关联,并将关联后的构建质量数据以及关联关系持久化保存到数据库中以便于对构建质量数据进行监控。本申请实施例通过自动获取一个或多个持续集成任务的构建信息,依据构建信息自动汇总构建质量数据,可以免去了手工打开一个或多个持续集成任务并手工汇总构建质量数据的麻烦,节省了构建质量数据监控的成本。
步骤205,依据所述项目更新信息更新对应的一个或多个持续集成任务;
在本申请的一种优选实施例中,所述步骤205可以包括如下子步骤:
子步骤S31,依据所述项目更新信息生成对应的一个或多个最新的持续集成任务配置信息;
子步骤S32,依据所述项目ID获得对应的一个或多个已有的持续集成任务配置信息;
子步骤S33,将所述一个或多个最新的持续集成任务配置信息与所述一个或多个已有的持续集成任务配置信息进行比对,获得一个或多个持续集成任务配置信息的更新结果;
子步骤S34,依据所述更新结果调用第三预设接口更新对应的一个或多个持续集成任务。
在本申请实施例中,当项目信息包括项目更新信息时,可以对与该项目对应的一个或多个持续集成任务进行更新操作,具体过程可以为:依据项目更新信息自动生成一个或多个最新的持续集成任务配置信息,通过项目ID关联查询该项目一个或多个已有的持续集成任务配置信息,两者对比更新为项目最新的持续集成任务配置信息,并调用Hudson修改API(即第三预设接口)进行持续集成任务的自动更新。
当所述持续集成任务更新后,本申请实施例可以获取更新后的持续集成任务的构建质量数据(具体获取方法步骤204雷同,此处不再赘述)并进行持久化保存,由于本申请实施例中持续集成任务与项目关联,通过持续集成任务可以获取对应的项目ID,通过项目ID在数据库中查询对应的持续集成任务更新前的构建质量数据,并将所述持续集成任务更新前的构建质量数据与更新后的构建质量数据进行比较,如果更新前的构建质量数据大于更新后的构建质量数据,则代表该次更新的代码版本的质量下降了,可以发出告警消息提醒项目成员。
实际上,每次更新的代码版本都可以成为新的质量标准,同时该代码版本对应的构建质量数据也成为新的质量标准,持续监控每份代码版本的质量趋势,同时关联团队成员,可以分析团队整体代码质量趋势,以及团队间代码质量趋势。
步骤206,依据所述项目结束信息调用第四预设接口删除所述项目ID对应的一个或多个持续集成任务配置信息;
具体而言,当项目信息为项目结束信息时,说明该项目结束关闭,则可以通过项目ID关联查询到项目已有的持续集成任务配置信息,通过调用Hudson删除API(即第四预设接口)删除对应的一个或多个持续集成任务配置信息,完成持续集成任务的清理。
由于构建质量数据以代码的维度做单独保存,这样即使项目关闭结束导致持续集成任务被删除,构建质量数据也不会随着持续集成任务一起被删除,持久保存的构建质量数据还可以用于项目历史构建数据的追溯。
本申请实施例可以自动获取项目更新信息以及项目结束信息,依据项目更新信息以及项目结束信息自动更新对应的持续集成任务或者删除对应的持续集成任务,免去人工更新和删除持续集成任务的麻烦,方便对持续集成任务的管理,节省了持续集成任务维护管理的成本。
另外,本申请实施例通过自动获取一个或多个持续集成任务的构建信息,依据构建信息自动汇总构建质量数据并持久化保存构建质量数据,这样可以免去了手工打开一个或多个持续集成任务并手工汇总构建质量数据的麻烦,节省了构建质量数据监控的成本,并且,即使项目结束导致持续集成任务被删除时,构建质量数据也不会随着持续集成任务一起被删除,持久保存的构建质量数据以便于项目历史构建数据的追溯和构建质量数据以及更新代码版本的质量监控。
再次,当面对大规模Hudson持续集成任务的管理时,本申请实施例在调用HudsonAPI之前设置了一个轮询迭代器,通过调用Hudson集群的方式进行持续集成任务支撑,线性扩展了Hudson的性能,避免了大规模Hudson持续集成任务管理导致Hudson宕机的情况。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以调用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请所必须的。
参照图3,示出了一种项目持续集成的系统实施例的结构框图,具体可以包括以下模块:
项目信息获取模块301,用于获取项目信息,所述项目信息包括项目ID、一个或多个项目分支信息;
配置信息生成模块302,用于依据所述项目ID以及所述一个或多个项目分支信息,生成对应的一个或多个持续集成任务配置信息;
在本申请的一种优选实施例中,所述配置信息生成模块302可以包括如下子模块:
持续集成任务配置信息生成子模块,用于调用预设插件分别将所述项目ID,每个项目分支信息替换预设模板中对应的项目ID和项目分支信息,生成与所述项目分支信息一一对应的持续集成任务配置信息。
任务构建模块303,用于构建与所述一个或多个持续集成任务配置信息对应的一个或多个持续集成任务。
在本申请的一种优选实施例中,可以调用第一预设接口构建与所述一个或多个持续集成任务配置信息对应的一个或多个持续集成任务。
优选地,本申请实施例还可以包括:
第一构建质量数据获取模块,用于在所述一个或多个持续集成任务构建完成后,获取所述一个或多个持续集成任务的构建质量数据;
第一构建质量数据持久化模块,用于持久化所述构建质量数据。
在本申请的一种优选实施例中,所述第一构建质量数据获取模块包括:
构建信息获取子模块,用于在所述一个或多个持续集成任务构建完成后,调用预设插件获取所述一个或多个持续集成任务的构建信息,所述构建信息包括项目ID;
构建质量数据获取子模块,用于调用第二预设接口依据所述构建信息获取对应的构建质量数据;
关联关系生成子模块,用于生成所述构建质量数据与项目ID的关联关系;
所述构建质量数据持久化模块可以包括如下子模块:
关联子模块,用于持久化所述构建质量数据以及所述构建质量数据与项目ID的关联关系。
优选地,所述项目信息包括项目更新信息,本申请实施例还可以包括:
更新模块,用于依据所述项目更新信息更新对应的一个或多个持续集成任务。
在本申请的一种优选实施例中,所述更新模块可以包括如下子模块:
最新配置信息获取子模块,用于依据所述项目更新信息生成一个或多个最新的持续集成任务配置信息;
已有配置信息获取子模块,用于依据所述项目ID获得一个或多个已有的持续集成任务配置信息;
比对子模块,用于将所述一个或多个最新的持续集成任务配置信息与所述一个或多个已有的持续集成任务配置信息进行比对,获得一个或多个持续集成任务配置信息的更新结果;
持续集成任务更新子模块,用于依据所述更新结果调用第三预设接口更新对应的一个或多个持续集成任务。
优选地,本申请实施例还可以包括:
第二构建质量数据获取模块,用于获取所述更新后的持续集成任务的构建质量数据;
第二构建质量数据持久化模块,用于持久化所述更新后的持续集成任务的构建质量数据;
构建质量数据查找模块,用于依据项目ID查找所述持续集成任务更新前的构建质量数据;
质量数据比较模块,用于将所述持续集成任务更新前的构建质量数据与更新后的构建质量数据进行比较;
告警模块,用于在所述持续集成任务更新前的构建质量数据大于更新后的构建质量数据时,发出告警消息。
优选地,所述项目信息包括项目结束信息,本申请实施例还可以包括:
配置信息删除模块,用于依据所述项目结束信息调用第四预设接口删除所述项目ID对应的一个或多个持续集成任务配置信息。
优选地,本申请实施例还可以包括:
配置信息轮循分配模块,用于在所述持续集成任务配置信息的个数大于预设阈值时,将所述持续集成任务配置信息轮循分配到预设的多台持续集成服务器中。
由于上述系统实施例基本相应于前述方法实施例,故本实施例的描述中未详尽之处,可以参见前述方法实施例中的相关说明,在此就不赘述了。
本说明书中的各个实施例均调用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可调用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可调用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
最后,还需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种项目持续集成的方法和系统进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (18)
1.一种项目持续集成的方法,其特征在于,包括:
获取项目信息,所述项目信息包括项目ID、一个或多个项目分支信息;
依据所述项目ID以及所述一个或多个项目分支信息,生成对应的一个或多个持续集成任务配置信息;
构建与所述一个或多个持续集成任务配置信息对应的一个或多个持续集成任务;
当所述一个或多个持续集成任务构建完成后,获取所述一个或多个持续集成任务的构建质量数据;
持久化所述构建质量数据;
其中,所述当所述一个或多个持续集成任务构建完成后,获取所述一个或多个持续集成任务的构建质量数据的步骤包括:
当所述一个或多个持续集成任务构建完成后,调用预设插件获取所述一个或多个持续集成任务的构建信息,所述构建信息包括项目ID;
调用第二预设接口依据所述构建信息获取对应的构建质量数据;
生成所述构建质量数据与所述项目ID的关联关系。
2.根据权利要求1所述的方法,其特征在于,所述依据所述项目ID以及一个或多个项目分支信息,生成对应的一个或多个持续集成任务配置信息的步骤包括:
调用预设插件分别将所述项目ID,每个项目分支信息替换预设模板中对应的项目ID和项目分支信息,生成与所述每个项目分支信息一一对应的持续集成任务配置信息。
3.根据权利要求1或2所述的方法,其特征在于,调用第一预设接口构建与所述一个或多个持续集成任务配置信息对应的一个或多个持续集成任务。
4.根据权利要求1所述的方法,其特征在于,
所述持久化所述构建质量数据的步骤包括:
持久化所述构建质量数据以及所述构建质量数据与所述项目ID的关联关系。
5.根据权利要求1所述的方法,其特征在于,所述项目信息包括项目更新信息,所述方法还包括:
依据所述项目更新信息更新对应的一个或多个持续集成任务。
6.根据权利要求5所述的方法,其特征在于,所述依据所述项目更新信息更新对应的一个或多个持续集成任务的步骤包括:
依据所述项目更新信息生成对应的一个或多个最新的持续集成任务配置信息;
依据所述项目ID获得对应的一个或多个已有的持续集成任务配置信息;
将所述一个或多个最新的持续集成任务配置信息与所述一个或多个已有的持续集成任务配置信息进行比对,获得一个或多个持续集成任务配置信息的更新结果;
依据所述更新结果调用第三预设接口更新对应的一个或多个持续集成任务。
7.根据权利要求5或6所述的方法,其特征在于,还包括:
获取所述更新后的持续集成任务的构建质量数据;
持久化所述更新后的持续集成任务的构建质量数据;
依据项目ID查找所述持续集成任务更新前的构建质量数据;
将所述持续集成任务更新前的构建质量数据与更新后的构建质量数据进行比较;
若所述持续集成任务更新前的构建质量数据大于更新后的构建质量数据,发出告警消息。
8.根据权利要求1所述的方法,其特征在于,所述项目信息包括项目结束信息,所述方法还包括:
依据所述项目结束信息调用第四预设接口删除所述项目ID对应的一个或多个持续集成任务配置信息。
9.根据权利要求1所述的方法,其特征在于,还包括:
当所述持续集成任务配置信息的个数大于预设阈值时,将所述持续集成任务配置信息轮循分配到预设的多台持续集成服务器中。
10.一种项目持续集成的系统,其特征在于,包括:
项目信息获取模块,用于获取项目信息,所述项目信息包括项目ID、一个或多个项目分支信息;
配置信息生成模块,用于依据所述项目ID以及所述一个或多个项目分支信息,生成对应的一个或多个持续集成任务配置信息;
任务构建模块,用于构建与所述一个或多个持续集成任务配置信息对应的一个或多个持续集成任务;
第一构建质量数据获取模块,用于在所述一个或多个持续集成任务构建完成后,获取所述一个或多个持续集成任务的构建质量数据;
第一构建质量数据持久化模块,用于持久化所述构建质量数据;
其中,所述第一构建质量数据获取模块包括:
构建信息获取子模块,用于在所述一个或多个持续集成任务构建完成后,调用预设插件获取所述一个或多个持续集成任务的构建信息,所述构建信息包括项目ID;
构建质量数据获取子模块,用于调用第二预设接口依据所述构建信息获取对应的构建质量数据;
关联关系生成子模块,用于生成所述构建质量数据与所述项目ID的关联关系。
11.根据权利要求10所述的系统,其特征在于,所述配置信息生成模块包括:
持续集成任务配置信息生成子模块,用于调用预设插件分别将所述项目ID,每个项目分支信息替换预设模板中对应的项目ID和项目分支信息,生成与所述每个项目分支信息一一对应的持续集成任务配置信息。
12.根据权利要求10或11所述的系统,其特征在于,调用第一预设接口构建与所述一个或多个持续集成任务配置信息对应的一个或多个持续集成任务。
13.根据权利要求10所述的系统,其特征在于,所述构建质量数据持久化模块包括:
关联子模块,用于持久化所述构建质量数据以及所述构建质量数据与所述项目ID的关联关系。
14.根据权利要求10所述的系统,其特征在于,所述项目信息包括项目更新信息,所述系统还包括:
更新模块,用于依据所述项目更新信息更新对应的一个或多个持续集成任务。
15.根据权利要求14所述的系统,其特征在于,所述更新模块包括:
最新配置信息获取子模块,用于依据所述项目更新信息生成对应的一个或多个最新的持续集成任务配置信息;
已有配置信息获取子模块,用于依据所述项目ID获得对应的一个或多个已有的持续集成任务配置信息;
比对子模块,用于将所述一个或多个最新的持续集成任务配置信息与所述一个或多个已有的持续集成任务配置信息进行比对,获得一个或多个持续集成任务配置信息的更新结果;
持续集成任务更新子模块,用于依据所述更新结果调用第三预设接口更新对应的一个或多个持续集成任务。
16.根据权利要求14或15所述的系统,其特征在于,还包括:
第二构建质量数据获取模块,用于获取所述更新后的持续集成任务的构建质量数据;
第二构建质量数据持久化模块,用于持久化所述更新后的持续集成任务的构建质量数据;
构建质量数据查找模块,用于依据项目ID查找所述持续集成任务更新前的构建质量数据;
质量数据比较模块,用于将所述持续集成任务更新前的构建质量数据与更新后的构建质量数据进行比较;
告警模块,用于在所述持续集成任务更新前的构建质量数据大于更新后的构建质量数据时,发出告警消息。
17.根据权利要求10所述的系统,其特征在于,所述项目信息包括项目结束信息,所述系统还包括:
配置信息删除模块,用于依据所述项目结束信息调用第四预设接口删除所述项目ID对应的一个或多个持续集成任务配置信息。
18.根据权利要求10所述的系统,其特征在于,还包括:
配置信息轮循分配模块,用于在所述持续集成任务配置信息的个数大于预设阈值时,将所述持续集成任务配置信息轮循分配到预设的多台持续集成服务器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310409516.7A CN104423960B (zh) | 2013-09-10 | 2013-09-10 | 一种项目持续集成的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310409516.7A CN104423960B (zh) | 2013-09-10 | 2013-09-10 | 一种项目持续集成的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104423960A CN104423960A (zh) | 2015-03-18 |
CN104423960B true CN104423960B (zh) | 2018-04-03 |
Family
ID=52973052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310409516.7A Active CN104423960B (zh) | 2013-09-10 | 2013-09-10 | 一种项目持续集成的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104423960B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105404519A (zh) * | 2015-12-07 | 2016-03-16 | 青岛海信电器股份有限公司 | 一种版本控制方法、代码测试方法及系统 |
CN105868957A (zh) * | 2015-12-18 | 2016-08-17 | 乐视致新电子科技(天津)有限公司 | 一种持续集成方法及装置 |
CN105893147A (zh) * | 2016-03-29 | 2016-08-24 | 乐视控股(北京)有限公司 | 多任务队列管理方法、设备及系统 |
CN105843651B (zh) * | 2016-03-31 | 2019-10-11 | 广州华多网络科技有限公司 | 一种管理持续集成处理脚本的方法、装置和系统 |
CN106407106A (zh) * | 2016-08-26 | 2017-02-15 | 郑州悉知信息科技股份有限公司 | 一种代码管理系统及方法 |
CN108304189B (zh) * | 2016-08-29 | 2021-03-12 | 迈普通信技术股份有限公司 | 多镜像设备软件编译方法、装置及设备 |
CN106685738B (zh) * | 2017-02-22 | 2019-11-12 | 广东网金控股股份有限公司 | 一种net项目的配置项的维护方法和维护系统 |
CN107818048B (zh) * | 2017-10-25 | 2020-06-05 | 携程旅游网络技术(上海)有限公司 | 计算机代码分支集成的质量检查方法及相关设备 |
CN109840194B (zh) * | 2017-11-28 | 2022-07-08 | 网宿科技股份有限公司 | 一种配置文件的检测方法及系统 |
CN108762736B (zh) * | 2018-03-21 | 2022-09-02 | 五八有限公司 | 项目分支的管理方法、装置、设备及计算机可读存储介质 |
CN110895460A (zh) * | 2018-09-13 | 2020-03-20 | 深圳市优必选科技有限公司 | 基于Jenkins的机器人系统集成方法、装置及终端设备 |
CN109542769A (zh) * | 2018-10-25 | 2019-03-29 | 武汉精立电子技术有限公司 | 一种持续集成的自动化测试方法 |
CN109766270A (zh) * | 2018-12-19 | 2019-05-17 | 北京万维之道信息技术有限公司 | 项目测试方法及装置、服务器、平台 |
CN111382988A (zh) * | 2018-12-28 | 2020-07-07 | 浙江大学 | 一种针对开源项目的事件处理方法及装置 |
CN110489093A (zh) * | 2019-10-16 | 2019-11-22 | 鹏城实验室 | 一种面向ai应用的持续构造方法、装置、终端及存储介质 |
CN111414302A (zh) * | 2020-02-28 | 2020-07-14 | 天津车之家数据信息技术有限公司 | 用于持续集成过程中的静态代码质量分析方法及计算设备 |
CN111538525B (zh) * | 2020-03-20 | 2022-09-02 | 成都药王科技股份有限公司 | 一种用于程序发布的快速迭代与回滚方法 |
CN112181397B (zh) * | 2020-09-30 | 2023-10-13 | 平安科技(深圳)有限公司 | 流程可视化监控方法、装置、计算机设备及存储介质 |
CN112527382B (zh) * | 2020-12-14 | 2023-12-12 | 携程旅游网络技术(上海)有限公司 | 部署流水线引擎系统的方法、持续集成的方法及装置 |
CN112579126A (zh) * | 2020-12-21 | 2021-03-30 | 杭州米络星科技(集团)有限公司 | 软件开发平台及软件开发方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004206586A (ja) * | 2002-12-26 | 2004-07-22 | Toshiba Corp | ソフトウェア部品流通支援方法、その方法を実現するためのソフトウェア部品流通支援システムおよびプログラム |
JP2007272655A (ja) * | 2006-03-31 | 2007-10-18 | Nec Corp | プロジェクト管理システムおよびプロジェクト管理方法 |
CN101174208A (zh) * | 2007-11-28 | 2008-05-07 | 山东浪潮齐鲁软件产业股份有限公司 | 一种软件生产线平台的实现方法 |
CN102098190A (zh) * | 2011-02-22 | 2011-06-15 | 浪潮(北京)电子信息产业有限公司 | 一种Web项目的自动开发测试系统及方法 |
-
2013
- 2013-09-10 CN CN201310409516.7A patent/CN104423960B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004206586A (ja) * | 2002-12-26 | 2004-07-22 | Toshiba Corp | ソフトウェア部品流通支援方法、その方法を実現するためのソフトウェア部品流通支援システムおよびプログラム |
JP2007272655A (ja) * | 2006-03-31 | 2007-10-18 | Nec Corp | プロジェクト管理システムおよびプロジェクト管理方法 |
CN101174208A (zh) * | 2007-11-28 | 2008-05-07 | 山东浪潮齐鲁软件产业股份有限公司 | 一种软件生产线平台的实现方法 |
CN102098190A (zh) * | 2011-02-22 | 2011-06-15 | 浪潮(北京)电子信息产业有限公司 | 一种Web项目的自动开发测试系统及方法 |
Non-Patent Citations (1)
Title |
---|
"如何做大规模软件的配置管理";goldpac_guan;《百度文库》;20110602;第2-3页,第5页,图4 * |
Also Published As
Publication number | Publication date |
---|---|
CN104423960A (zh) | 2015-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104423960B (zh) | 一种项目持续集成的方法及系统 | |
CN104252481B (zh) | 主从数据库一致性的动态校验方法和装置 | |
CN109460349B (zh) | 一种基于日志的测试用例生成方法和装置 | |
CN110300963B (zh) | 大规模数据储存库中的数据管理系统 | |
CN107038162B (zh) | 基于数据库日志的实时数据查询方法和系统 | |
US8671084B2 (en) | Updating a data warehouse schema based on changes in an observation model | |
US10726042B2 (en) | Replication control using eventually consistent meta-data | |
US20130145350A1 (en) | Efficient, large scale trace storage system | |
EP3751427A1 (en) | Rules-based dataset cleaning | |
CN116009428A (zh) | 基于流式计算引擎的工业数据监控系统和方法、介质 | |
CN112148578A (zh) | 基于机器学习的it故障缺陷预测方法 | |
CN109828886B (zh) | 一种容器云环境下的ci/cd监控方法和系统 | |
CN116010452A (zh) | 基于流式计算引擎的工业数据处理系统和方法、介质 | |
CN112527801A (zh) | 关系型数据库与大数据系统间的数据同步方法及系统 | |
CN117149873A (zh) | 一种基于流批一体化的数据湖服务平台构建方法 | |
CN115712623A (zh) | 一种基于捕获元数据变更的批量数据容错采集方法 | |
CN111367924A (zh) | 数据同步方法、装置、电子设备、存储介质 | |
CN114416868A (zh) | 一种数据同步方法、装置、设备及存储介质 | |
US20180137036A1 (en) | Determining potential test actions | |
WO2016100737A1 (en) | Method and system to search logs that contain a massive number of entries | |
CN116881261A (zh) | 一种基于Flink的实时整库入湖方法 | |
CN115982213A (zh) | Bi数据分析方法、系统及存储介质 | |
CN113220530B (zh) | 数据质量监控方法及平台 | |
Karami et al. | Maintaining accurate web usage models using updates from activity diagrams | |
CN112346994B (zh) | 一种测试信息关联方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |