一种智能化持续集成与持续部署流水线方法及系统技术方案

技术编号:19690936 阅读:31 留言:0更新日期:2018-12-08 10:56
本发明专利技术提供一种智能化持续集成与持续部署流水线方法及系统,收集开放协作平台上可被访问的项目的持续集成与持续部署配置文件及使用的开发语言、开发框架信息,构建持续集成与持续部署流水线任务库及配置模板库,根据项目使用的开发语言、开发框架推荐流水线配置,对持续集成与持续部署过程中任务的执行进行综合监控、度量分析和记录,根据规则、历史数据、任务间关系、任务输入文件的变更对流水线中任务的执行进行动态调节。本发明专利技术能够提高持续集成的效果,降低持续集成的开销。

【技术实现步骤摘要】
一种智能化持续集成与持续部署流水线方法及系统
本专利技术涉及持续集成与持续部署的
,尤其涉及一种智能化持续集成与持续部署流水线方法及系统。
技术介绍
持续集成是软件开发中的一项重要实践。GradyBooch于1994年最先提出持续集成的理念,随后,KentBeck与RonJeffrie在他们提出的极限编程方法(ExtremeProgramming)中推广了持续集成。持续集成的基本的思想是软件开发团队中所有开发者的工作要持续地集成到一条共享的开发主线上,集成过程包括了代码的合并、编译、构建、测试等任务,该方法的持续性表现为每天进行若干次这样的集成过程。持续集成通过不断地合并和检查各个开发者的代码变更来及早发现他们之间的冲突和质量问题。对于互联网应用等需要部署的软件系统,持续集成从开发阶段延伸到部署阶段便产生了持续部署。持续部署可以加快软件产品的更新迭代速度,及时将软件的变更推送给用户,有效提升用户体验。Jenkins、TrvaisCI等持续集成工具(服务)通过流水线技术实现了持续集成的过程的高度自动化。持续集成与持续部署流水线包括了持续集成与持续部署任务及其配置、任务间的依赖关系以及任务的自动执行机构。用户编写流水线配置文件,持续集成工具(服务)根据配置文件执行流水线中的任务。持续集成与持续部署的频率、时机以及任务的选择对其效率具有很大的影响,过高的频率和不必要的任务会造成计算资源的过度开销、集成与部署周期的延长,并给开发者带来过多的干扰,过低的频率以及不完备的任务则无法达到提高开发效率与软件质量的目标。现有工具虽然能够自动化持续集成和持续部署的过程,但是开发者需要根据经验配置持续集成和持续部署流水线,并且一个项目开发的上下文是在持续变化的,开发者难以手工地针对这些变化对配置进行实时的、有效的调整。因此,软件项目及软件开发者迫切需要一种智能推荐、自动调节的持续集成与持续部署流水线,用以提高持续集成与持续部署的效果并降低开销。
技术实现思路
本专利技术所要解决的技术问题是:克服现有技术的不足,提供一种能够感知开发活动及其上下文、评估持续集成与持续部署任务执行效果并进行推荐和自动调优的持续集成与持续部署流水线方法及系统,以提高持续集成和持续部署的效果并降低开销。本专利技术技术解决方案:本专利技术的一种智能化持续集成与持续部署流水线方法,包括:(1)收集开放协作平台上可被访问的项目的持续集成与持续部署配置文件及项目使用的开发语言、开发框架信息,构建持续集成与持续部署流水线任务库及配置模板库;(2)针对(1)中所述的持续集成与持续部署流水线任务库中的每一项任务构建一套可选、可配置的任务执行规则;(3)获取本方法服务的用户项目使用的开发语言、开发框架,根据其使用的开发语言、开发框架从(1)中所述的持续集成与持续部署流水线任务库及配置模板库中推荐流水线配置模板与流水线任务,用户在推荐下完成流水线的配置,最终形成用户项目的持续集成与持续部署流水线;(4)记录(3)中所述用户项目的版本控制仓库地址,在本地建立上述版本控制仓库的副本,持续监控原版本控制仓库与本地副本仓库间的差异,发现开发者提交的代码变更;(5)对(3)中所述持续集成与持续部署流水线中任务的执行进行综合监控、度量分析和记录,形成历史信息库,监控、度量分析和记录内容包括代码变更信息及其上下文,代码变更对应的持续集成与持续部署任务执行信息;(6)对(3)中所述持续集成与持续部署流水线中任务的输入和输出文件进行追踪,建立任务与文件间的输入输出关联并缓存任务输出的文件,根据任务与文件间的输入输出关联进一步建立任务间的依赖关系;(7)发现(2)中所述开发者提交的代码变更时,根据四个决策面依次判断(3)中所述持续集成与持续部署流水线中的任务是否需要执行、是否并行执行并决定需要执行的任务的参数和配置:a.用户选择和配置的(2)中所述任务执行规则,b.基于(5)中所述历史信息库的机器学习决策模型的预判结果,c.(6)中所述任务间的依赖关系,d.(6)中所述任务输入文件的变更;在该技术方案中,根据使用的开发语言、开发框架对开放协作平台上可被访问的项目分类,从分类后的每一类项目的配置文件中提取常见的任务及其信息、任务间的依赖关系,所述任务信息包括任务的名称、任务的参数和配置,所述任务的参数和配置包括任务依赖的工具、工具的参数和配置,使用这些任务及其信息、任务间依赖关系构建持续集成与持续部署流水线任务库及模板库。在该技术方案中,流水线的配置过程包括:在流水线任务库和流水线配置模板库中匹配用户项目使用开发语言、开发框架,根据匹配结果向用户推荐流水线配置模板;用户对推荐的流水线配置进行选择调整,并参考任务库增补需要的任务。优选地,所述代码变更信息包括代码变更的作者和提交者、代码变更的作者和提交者的业务经验技能、代码变更的类型(包括主代码类、文本类、测试类、其他),每种类型的行数(添加与删除的行数),变更的文件、变更文件近期被变更的次数、变更文件上次变更的作者与提交者与本次是否相同,变更文件近期涉及的持续集成与持续部署任务次数。优选地,该技术方案中所述的代码变更上下文包括近期代码变更的次数、近期代码变更的作者数和提交者数、距离上一次代码变更的时间、距离上一次持续部署与持续集成任务的时间、上一次持续部署与持续集成任务的执行结果。优选地,所述持续集成与持续部署任务执行信息包括执行时间与执行结果,所述持续集成与持续部署任务执行结果包括成功与失败。该技术方案中相关的量化方法包括:数量型及分类型的信息直接使用其数值和类别;代码变更作者与提交者的经验按以下公式量化:经验=(历史上代码提交次数+添加和删除的各类别代码行数)成功的持续集成与持续部署次数占比优选地,该技术方案中所述的一套可选、可配置的任务执行规则包括周期性执行规则、最大时间间隔执行规则、累积变更规模执行规则、流水线配置变更执行规则,用户可为每个任务的执行配置一组规则。上述周期性执行规则为:预设任务执行周期、任务参数和配置,如果周期内代码发生变更,在周期结束时,不考虑其他因素,以预设的任务参数和配置执行任务。上述最大时间间隔执行规则为:预设任务执行的最大时间间隔、任务参数和配置,在最大时间间隔内,如果代码发生了变更且任务没有被执行过,不考虑其他因素,以预设的任务参数和配置执行任务。上述累积变更规模执行规则为:预设累积变更规模、任务参数和配置,上次任务执行后,源版本控制库与本地版本控制库副本变更累积到预设规模后,不考虑其他因素,以预设的任务参数和配置执行任务。上述累积变更规模以行数计算,区别不同类型的变更。上述流水线配置变更执行规则为:预设任务参数和配置,流水线配置被用户修改后,不考虑其他因素,以预设的任务参数和配置执行任务。在该技术方案中,针对每个任务,通过历史信息库训练基于统计的机器学习决策模型,将新提交的代码变更信息及其上下文、任务参数和配置输入模型得到任务执行是否出现异常的预判。该技术方案在对一项任务的执行决策时,首先考虑决策面a,如果用户选择和配置的规则命中,则执行该任务;如果没有命中,则考虑决策面b,如果决策模型给出的预判结果为有较大概率出现异常,则执行该任务,否则考虑决策面c,如果依赖于该任务的其他任务需要执行,则执行该任务本文档来自技高网
...

【技术保护点】
1.一种智能化持续集成与持续部署流水线方法,其特征在于,包括以下步骤:(1)收集开放协作平台上可被访问的项目的持续集成与持续部署配置文件及使用的开发语言、开发框架信息,构建持续集成与持续部署流水线任务库及配置模板库;(2)针对步骤(1)构建持续集成与持续部署流水线任务库中的每一项任务,建立一套可选、可配置的任务执行规则;(3)获取服务的用户项目使用的开发语言、开发框架,根据其使用的开发语言、开发框架从步骤(1)构建的持续集成与持续部署流水线任务库及配置模板库中,推荐流水线配置模板与流水线任务形成用户项目的持续集成与持续部署流水线;(4)记录步骤(3)中所述用户项目的版本控制仓库地址,在本地建立上述版本控制仓库的副本,持续监控原版本控制仓库与本地副本仓库间的差异,发现开发者提交的代码变更;(5)对步骤(3)形成的持续集成与持续部署流水线中任务的执行进行综合监控、度量分析和记录,形成历史信息库,监控、度量分析和记录内容包括代码变更信息及其上下文,代码变更对应的持续集成与持续部署任务执行信息;(6)对步骤(3)形成的持续集成与持续部署流水线中任务的输入和输出文件进行追踪,建立任务与文件间的输入输出关联并缓存任务输出的文件,根据任务与文件间的输入输出关联进一步建立任务间的依赖关系;(7)在步骤(2)发现开发者提交的代码变更时,根据以下四个决策面依次判断步骤(3)形成的持续集成与持续部署流水线中的任务是否需要执行、是否并行执行并决定需要执行的任务的参数和配置,所述四个决策面为:a.用户选择和配置的步骤(2)构建的任务执行规则,b.基于步骤(5)形成的历史信息库的机器学习决策模型的预判结果,c.步骤(6)建立的任务间的依赖关系,d.步骤(6)追踪的任务输入文件的变更。...

【技术特征摘要】
1.一种智能化持续集成与持续部署流水线方法,其特征在于,包括以下步骤:(1)收集开放协作平台上可被访问的项目的持续集成与持续部署配置文件及使用的开发语言、开发框架信息,构建持续集成与持续部署流水线任务库及配置模板库;(2)针对步骤(1)构建持续集成与持续部署流水线任务库中的每一项任务,建立一套可选、可配置的任务执行规则;(3)获取服务的用户项目使用的开发语言、开发框架,根据其使用的开发语言、开发框架从步骤(1)构建的持续集成与持续部署流水线任务库及配置模板库中,推荐流水线配置模板与流水线任务形成用户项目的持续集成与持续部署流水线;(4)记录步骤(3)中所述用户项目的版本控制仓库地址,在本地建立上述版本控制仓库的副本,持续监控原版本控制仓库与本地副本仓库间的差异,发现开发者提交的代码变更;(5)对步骤(3)形成的持续集成与持续部署流水线中任务的执行进行综合监控、度量分析和记录,形成历史信息库,监控、度量分析和记录内容包括代码变更信息及其上下文,代码变更对应的持续集成与持续部署任务执行信息;(6)对步骤(3)形成的持续集成与持续部署流水线中任务的输入和输出文件进行追踪,建立任务与文件间的输入输出关联并缓存任务输出的文件,根据任务与文件间的输入输出关联进一步建立任务间的依赖关系;(7)在步骤(2)发现开发者提交的代码变更时,根据以下四个决策面依次判断步骤(3)形成的持续集成与持续部署流水线中的任务是否需要执行、是否并行执行并决定需要执行的任务的参数和配置,所述四个决策面为:a.用户选择和配置的步骤(2)构建的任务执行规则,b.基于步骤(5)形成的历史信息库的机器学习决策模型的预判结果,c.步骤(6)建立的任务间的依赖关系,d.步骤(6)追踪的任务输入文件的变更。2.根据权利要求1所述的智能化持续集成与持续部署流水线方法,其特征在于:所述步骤(1)中,根据使用的开发语言、开发框架对开放协作平台上可被访问的项目分类,从分类后的每一类项目的配置文件中提取常见的任务及其信息、任务间的依赖关系;所述任务信息包括任务的名称、任务的参数和配置,所述任务的参数和配置包括任务依赖的工具、工具的参数和配置,利用所述任务及其信息、任务间依赖关系构建持续集成与持续部署流水线任务库及模板库。3.根据权利要求1所述的智能化持续集成与持续部署流水线方法,其特征在于:所述步骤(2)中,一套可选、可配置的任务执行规则包括:(31)周期性执行规则:预设任务执行周期、任务参数和配置,如果周期内代码发生变更,在周期结束时,不考虑其他因素,以预设的任务参数和配置执行任务;(32)最大时间间隔执行规则:预设任务执行的最大时间间隔、任务参数和配置,在最大时间间隔内,如果代码发生了变更且任务没有被执行过,不考虑其他因素,以预设的任务参数和配置执行任务;(33)累积变更规模执行规则:预设累积变更规模、任务参数和配置,上次任务执行后,源版本控制库与本地版本控制库副本变更累积到预设规模后,不考虑其他因素,以预设的任务参数和配置执行任务,所述累积变更规模以行数计算,区别不同类型的变更;(34)流水线配置变更执行规则:预设任务参数和配置,流水线配置被用户修改后,不考...

【专利技术属性】
技术研发人员:朱家鑫陈伟高楚舒魏峻杨丰
申请(专利权)人:中国科学院软件研究所
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1