CN112394949B - 一种面向持续集成的服务版本动态配置方法 - Google Patents

一种面向持续集成的服务版本动态配置方法 Download PDF

Info

Publication number
CN112394949B
CN112394949B CN202011412434.4A CN202011412434A CN112394949B CN 112394949 B CN112394949 B CN 112394949B CN 202011412434 A CN202011412434 A CN 202011412434A CN 112394949 B CN112394949 B CN 112394949B
Authority
CN
China
Prior art keywords
vertex
configuration
continuous integration
service
path
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
Application number
CN202011412434.4A
Other languages
English (en)
Other versions
CN112394949A (zh
Inventor
王焘
张文博
李安
许源佳
钟华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Software of CAS
Original Assignee
Institute of Software of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Software of CAS filed Critical Institute of Software of CAS
Priority to CN202011412434.4A priority Critical patent/CN112394949B/zh
Publication of CN112394949A publication Critical patent/CN112394949A/zh
Application granted granted Critical
Publication of CN112394949B publication Critical patent/CN112394949B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种面向持续集成的服务版本动态配置方法,其步骤包括:1)根据目标系统选取多个编译打包软件工具;2)对于每一所选编译打包软件工具,构造一持续集成与交付的流水线作业模板;3)收集该目标系统的各类型配置文件,得到源码配置集合A;4)计算每一工具对应的配置集合与集合A的相似度;调用相似度最高的配置集合对应的流水线作业模板i;5)利用模板i解析集合A构建有向带权图;6)计算有向带权图中每一顶点与其他顶点之间的最短关键路径存储为顺序表;7)若两顺序表经过同一个顶点P,则生成顶点P的关键路径不重合的往前路径集合;8)将同一个路径集合内的关键路径设置为并行执行、不同路径集合内的路径按照生成顺序执行。

Description

一种面向持续集成的服务版本动态配置方法
技术领域
本发明涉及一种面向持续集成的服务版本动态配置方法,尤其涉及一种基于服务互联网应用服务复杂度分布的动态构建部署方法,属于软件技术领域。
背景技术
伴随移动互联、互联网等设施的不断发展完善,个人与企业的需求持续更新,服务应用软件系统也需要不断重构自身架构满足大量新需求。这些新需求变化迅速,使用持续集成与交付工具让互联网应用的代码管理、配置发布、部署运维等过程可以自动化执行,提升软件开发效率,从而敏捷地完成持续集成与交付过程,也就具有了其重要的技术价值。持续集成强调开发人员提交了新代码之后,立刻自动的进行构建、(单元)测试,从而确定新代码和原有代码能否正确地集成在一起;持续交付则在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的类生产环境中,并交付给质量团队或者用户以供评审,若评审通过,代码就进入生产阶段。然而当前实现持续集成与交付的方法虽多样,功能也相对便利,却都具有相应的上升空间和亟待解决的问题。
持续集成与交付优化方法主要包括基于性能优化与基于正确性优化两种方法。基于性能优化的方法包括:通过预测构建的性能开销优化的方法(Xianhao Jin andFrancisco Servant.2020.A cost-efficient approach to building in continuousintegration.In Proceedings of the ACM/IEEE 42nd International Conference onSoftware Engineering(ICSE'20).Association for Computing Machinery,New York,NY,USA,13–25.DOI:https://doi.org/10.1145/3377811.3380437),该方法通过尽早执行尽可能多的失败构建来减少持续集成执行的构建数量;基于机器学习统计分析回归测试的性能优化方法(Antonia Bertolino,Antonio Guerriero,Breno Miranda,RobertoPietrantuono,and Stefano Russo.2020.Learning-to-rank vs ranking-to-learn:strategies for regression testing in continuous integration.In Proceedings ofthe ACM/IEEE 42nd International Conference on Software Engineering(ICSE'20).Association for Computing Machinery,New York,NY,USA,1–12.DOI:https://doi.org/10.1145/3377811.3380369),该方法主要提出了介绍了十种在持续集成实践中采用的机器学习算法,并在生产环境中使用特定项目对它们进行了全面的比较,以便开发人员在持续集成开发过程中选择;还有基于案例学习进行手工配置来降低持续集成与交付中异常发生的概率(Ghaleb,Taher Ahmed,Daniel Alencar Da Costa,and Ying Zou."Anempirical study of the long duration of continuous integration builds."Empirical Software Engineering 24.4(2019):2102-2139.)等一系列针对持续集成与交付的某个步骤的手动性能优化方法。但以上这些性能优化方法只关心源码构建或测试等重量级操作,重复关注于对特定步骤的配置优化,却缺乏对多租户环境下持续集成与交付流水线的整体分析和全局优化。与此同时,在一个完整的持续集成与交付流水线中,包含大量的除构建、测试之外的多种操作,构建及测试的目标代码技术栈也有较大差异,从而使得面向单个阶段、特定步骤的启发式规则难以适用于多源异构的互联网服务,持续集成与交付工具要能根据互联网服务的特点自动发现启发式规则,能够优化持续集成与交付流水线的执行路径,通过配置关联分析增加并发程度以缩短持续集成与交付执行时间。
另一方面,当前的正确性优化依然只关心部分规则、经验的总结,在实际使用时仍然依赖于人工实现和效果验证,不能自动生成需要的配置。如文献(C.Vassallo,"EnablingContinuous Improvement of a Continuous Integration Process,"2019 34th IEEE/ACM International Conference on Automated Software Engineering(ASE),SanDiego,CA,USA,2019,pp.1246-1249,doi:10.1109/ASE.2019.00151.)就仅给出持续集成与交付执行时的配置原则、推荐和建议,仅仅是一份对以前工具和方法的总结,并不解决当前服务应用软件对自动化的需求或服务应用项目依赖解耦的问题。而文献(Chen Zhang,Bihuan Chen,Linlin Chen,Xin Peng,and Wenyun Zhao.2019.A large-scale empiricalstudy of compiler errors in continuous integration.In Proceedings of the 201927th ACM Joint Meeting on European Software Engineering Conference andSymposium on the Foundations of Software Engineering(ESEC/FSE 2019.)Association for Computing Machinery,New York,NY,USA,176–187.DOI:https://doi.org/10.1145/3338906.3338917.)则只聚焦于代码的编译错误,属于较为片面的优化方法。持续集成与交付优化方法要能在异构案例分析的基础上,基于互联网服务元数据分析构造配置自动生成,尽可能在运行前消解持续集成与交付过程中的错误和冲突,通过持续集成与交付部分配置的自动补全、生成和校验等方式保障持续集成与交付功能配置的正确性。
综上所述,现有持续集成与交付优化方法主要存在以下问题:(1)缺乏多租户环境下持续集成与交付流水线的整体分析和全局优化;(2)实际在使用过程过度依赖人工实现和效果验证,无法自动生成配置;(3)无法细粒度的处理持续集成和交付的流水线,导致过多不必要的资源开销;(4)无法解耦面向服务应用项目内部服务之间的依赖,导致持续集成与交付过程中可能出现内部服务调用异常。
发明内容
针对以上所述现有持续集成与交付优化方法所存在的缺乏多租户环境下持续集成与交付流水线的整体分析和全局优化,在使用过程过度依赖人工实现和效果验证并无法自动生成配置,无法细粒度的处理持续集成和交付的流水线导致过多不必要的资源开销,以及无法解耦面向服务应用项目内部服务之间的依赖等问题。本发明提供一种面向持续集成的服务版本动态配置方法,尤其涉及一种基于服务互联网应用服务复杂度分布的动态构建部署方法,通过使用“线上配置自主分析-线上流水线自动优化”的方式,从项目自身的元数据出发,自主发现并分析可能的配置,简化持续集成与交付功能配置的复杂度,并能根据持续集成与交付执行的资源开销、运行时间等,充分细粒度交叠多种持续集成与交付操作,降低持续集成与交付运行时间,提升租户内部和不同租户间的并发程度。在面向服务互联网应用的云原生环境下,保障持续集成与交付过程的高效率与正确性。
本发明的技术方案为:
一种面向持续集成的服务版本动态配置方法,其步骤包括:
1)对于一目标软件应用服务系统,根据该目标软件应用服务系统选取一个或多个编译打包软件工具;
2)对于每一所选编译打包软件工具,构造一持续集成与交付的流水线作业模板;
3)收集该目标软件应用服务系统的各类型配置文件,得到该目标软件应用服务系统的源码配置集合A;
4)计算配置信息集合U中每一配置集合与源码配置集合A的相似度J;选取与源码配置集合A的相似度最高的配置集合Mi,调用Mi对应的编译打包软件工具对应的流水线作业模板i;
5)利用该流水线作业模板i解析该源码配置集合A,得到以服务为单位的多元组信息[镜像名称,命令类型,运行时间,依赖服务id,被依赖服务id],然后根据所得多元组信息构建一有向带权图;
6)对于有向带权图中每一顶点Pi,设顶点Pi最早可能发生的时间为earliest(i),而该顶点Pi所允许的最迟发生时间为latest(i),若有另一顶点Pj的所允许的最迟发生时间latest(j)与顶点Pi的最早发生时间earliest(i)之差等于顶点Pi与顶点Pj之间有向边的权重,则该有向边为关键路径的边、顶点Pi与顶点Pj为关键结点,将顶点Pi与其他各顶点之间的最短关键路径存储为顺序表Li
7)依次遍历并比较顺序表,对于任意两顺序表Li与Lj:若顺序表Li与Lj经过同一个顶点P,则分别从顺序表Li与Lj中顶点P往前构建顺序表子表,得到对应顺序表子表Fi与Fj并将其归并于一个集合F,为顶点P的关键路径不重合的往前路径集合;当从该顶点P往前构建顺序表子表过程中又出现相同顶点Q时,则从该顶点Q开始进行前驱遍历至重合部分的最前顶点并归并为重合的单独关键路径集合;
8)将步骤7)中同一个路径集合内的关键路径设置为并行执行、不同路径集合内的路径按照生成顺序进行执行。
进一步的,该有向带权图中的顶点为服务端点,顶点Pi使用第i个服务对应的多元组表示,有向边
Figure BDA0002814516590000041
中a表示依赖服务端标识符,b表示被依赖服务端标识符,有向边权重则表示步骤运行时间,不同命令类型对应不同的运行时间。
进一步的,所述命令类型包括源码仓库、编译打包、镜像构建、安全扫描。
进一步的,步骤2)中,对于每一所选编译打包软件工具,根据该编译打包软件工具的配置信息,得到根据该编译打包软件工具所构建的软件应用系统结构及其部署所需步骤,然后按软件应用系统结构类型分步骤内容撰写脚本,构成持续集成与交付的流水线作业模板;根据各所选编译打包软件工具的配置信息生成一配置信息集合U,其中第i个所选编译打包软件工具的配置集合Mi为配置信息集合U的真子集,满足
Figure BDA0002814516590000042
进一步的,步骤3)中,收集该目标软件应用服务系统的各类型配置文件,对于每一类型配置文件,设该类型配置文件中的配置依赖内容为储存元素t,该类型配置文件中的各个元素构成一个子集;根据各类型配置文件的子集得到该目标软件应用服务系统的源码配置集合A。
进一步的,所述相似度
Figure BDA0002814516590000043
进一步的,步骤6)中,首先根据服务依赖关系对该有向带权图进行拓扑排序,构建出拓扑排序图M;再使用插点法根据步骤的运行时间计算每个顶点Pi最早可能发生的时间earliest(i)与允许的最迟发生时间latest(i)。
一种服务器,其特征在于,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行上述方法中各步骤的指令。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述方法的步骤。
本发明提出一种面向持续集成的服务版本动态配置方法,技术解决方案主要包括以下步骤:
第一步,基于冲突消解进行持续集成与交付的功能优化,具体包括以下步骤:
(1)对于一目标软件应用服务系统,根据该目标软件应用服务系统选取一个或多个编译打包软件工具,比如分析面向java、c++、node.js等单一或多种语言的编译打包软件工具(包括maven、npm、makeFile、gradle、bazel)的关键配置,形式化描述这几种编译打包工具的配置信息,从而得到根据不同工具所构建的软件应用系统结构以及部署所需步骤,按软件应用系统结构类型分步骤内容撰写脚本,每一种工具均由此构成对应的持续集成与交付的流水线作业模板,并形成预置的配置信息集合U,其中每种工具的配置集合Mi为集合U的真子集,满足
Figure BDA0002814516590000051
(2)基于Gitlab API(代码仓库提供的接口)等去收集用户所更新的目标软件应用服务系统源码中的多种配置文件,包括各种文件类型以及包含的关键配置依赖内容,设配置依赖内容为储存元素t,每个文件类型对应一个子集ci,ci由每个文件类型所包含的所有储存元素t组成,满足
Figure BDA0002814516590000052
并构建源码配置集合A,集合A由每个文件类型对应子集ci组成,满足A={c1,c2,...,cm}。
(3)通过以下公式依次计算预置的每种工具的配置集合Mi与源码配置集合A的相似度J:
Figure BDA0002814516590000053
(4)如果某种工具的配置集合Mi与源码配置集合A的相似度最高,则调用该工具类型项目的持续集成与交付的流水线作业模板,触发下一步。
第二步,基于依赖路径优化进行保障持续集成与交付的正确性,具体实现于以下步骤:
(1)解析现有需运行的形式化描述的源码配置集合A,根据项目类型和其中的配置文件解耦判定出以服务为单位的多元组信息[镜像名称,命令类型,运行时间,依赖服务id,被依赖服务id],初步构建一有向带权图,其中,有向带权图中的顶点Pi作为服务端点使用该多元组表示,命令类型包括不限于源码仓库、编译打包、镜像构建、安全扫描等部分步骤的配置参数描述语言,对应不同的运行时间,有向边为
Figure BDA0002814516590000054
其中a表示依赖服务端标识符,b表示被依赖服务端标识符,有向边权重则表示步骤运行时间。
(2)根据服务依赖关系对该有向带权图进行拓扑排序,从而得到拓扑图M(拓扑图包含方向和每个顶点所代表服务的多元组信息,通过该拓扑图得到不同顶点到不同终点的最短关键路径),设定每个顶点Pi最早可能发生的时间为earliest(i),而该顶点Pi所允许的最迟发生时间为latest(i)。倘若通过遍历拓扑图M时,有另一顶点Pj的所允许的最迟发生时间latest(j)与顶点Pi的最早发生时间earliest(i)之差等于他们之间有向边的权重,则该边为关键路径的边,而此两点为关键结点,以此类推,可以分别求出各顶点到各顶点的最短关键路径并分别存储为顺序表Li。最早可能发生的时间earliest(i)与允许的最迟发生时间latest(i)的求取公式如下:
earlist(0)=0
earlist(j)=max{j∈(0,V),i∈P(j)|earlist(i)+l(i,j)}
latest(V-1)=earlist(V-1)
latest(i)=min{i∈(0,V),j∈S(i)|latest(j)-l(i,j)}
其中,V为顶点总数,P(j)是拓扑图中与顶点j直接相邻的任一前驱顶点,S(i)是拓扑图中与顶点i直接相邻的任一后继结点,l(i,j)为有向边的权重值。
(3)依次遍历并比较顺序表,设重合值c为0,若某两个存储关键路径的顺序表Li与Lj经过同一个顶点P,则使重合值c为1,分别从顺序表Li与Lj中顶点P往前构建顺序表子表,得到对应顺序表子表Fi与Fj,并归并于一个集合F,为顶点P的往前集合。
(4)继续遍历,每当遇到不同的顶点重合值c归0,而遇到相同的顶点则归1,重合值的变化作为一个触发器触发子表生成,当c从0→1从该顶点往前构建子表并归并为一个关键路径不重合且具有相似优先级的集合,当c从1→0则从该顶点前驱遍历至重合部分的最前顶点并归并为重合的单独关键路径集合。
(5)属于上步中同一个路径集合内的关键路径可以并行执行,而集合之间只能按照生成顺序进行执行。从而达成尽量晚调度非关键路径上的操作,将资源尽可能多的提供给其他持续集成与交付流水线使用,实现租户间的资源共享。与此同时,也使关键路径上能够优先调度资源占用少、运行时间短的操作,使持续集成与交付流水线的资源使用更加平滑,实现租户内的资源高使用效率。而无依赖关系的各类操作则可以提前下载或并行执行,最终实现延迟调度、短操作优先、交叠感知的优先级调度,降低整个持续集成与交付流水线的完成时间。
本发明的原理:启发式搜索获得源码的情况下,采用杰卡德相似系数评估预置模板与对象模板的相似度达成项目架构识别判断,根据源码对应预置模板构建项目任务步骤的有向带权图并转化为拓扑结构图,并依据插点法利用动态规划的思想寻找多条给定的加权图中多源点之间最短路径,建立一个重合值异步分割可并行的分支和关键路径,从而达成保证依赖正确性的任务调度。
本发明与现有技术相比具有如下优点:
(1)采用线上配置自主分析的方式,从项目自身的元数据出发,自主发现并分析可能的配置。比起以线下经验分析为主的软件工程方法,本方法使用启发式搜索获得源码,在符合云原生规范的情况下,可以减少大量人工工作,同时也能在源码分析的过程中筛出并显示问题。
(2)创建出固定有价值的模板以及资源以供灵活调用。不需要开发人员手动配置,然而也支持开源,允许开发人员添加新的模板以及可调用资源,根本算法可以依然符合任意项目对降低时间与资源开销的需求。
(3)简化持续集成与交付功能配置的复杂度,并能根据持续集成与交付执行的资源开销、运行时间等,充分细粒度交叠多种持续集成与交付操作,降低持续集成与交付运行时间,提升租户内部和不同租户间的并发程度。
附图说明
图1为本发明方法的实现流程图;
图2为本发明实施例的使用环境示意图。
具体实施方式
本发明的一种面向持续集成的服务版本动态配置方法,以下结合具体实施例和图1对本发明进行如下详细说明。(1)部署开源的持续集成与交付工具与版本管理和配置重构系统;(2)根据代码仓库发送的有效负载解析项目结构,从而实现冲突消解,并初步构造有向带权图;(3)使用floyd-warshall算法优化依赖路径,得出最短耗时也不需多余开销的调度方法并生成模板;(4)触发模板,完成服务互联网应用的持续交付与部署。
作为本发明实施例方法的使用环境,如图2所示,由于物理内存的限制,需在3台物理主机上建立Kubernetes集群,其中一台主机作为主节点部署版本管理和配置重构系统实现调度,一台主机部署开源的持续集成与交付工具,一台主机部署需要进行持续集成与交付的服务互联网应用。持续集成与交付工具拦截开发人员更新代码以致代码仓库发送的有效负载,版本管理和配置重构系统根据负载以及预制规则生成配置信息模板,并调用Kubernetes API(kubernetes提供的功能调用接口)以部署于另一台主机上。本发明所提出的方法在版本管理和配置重构系统实现。
其实现步骤如下:
第一步,按照使用环境要求完成部署。先于需要开发人员进行更新操作的github或gitlab代码仓库端配置webhook(网络钩子),以在代码更新操作后发送有效负载;并在持续集成与交付工具与版本管理和配置重构系统的可视化前端依据先前信息进行配置,从而可获得相应权限拉取或部署项目代码于主机。
第二步,根据有效负载信息完成冲突消解。在版本管理和配置重构系统中已具有预先完成并生成相应对比集合的预置配置信息集合U,其中每种编译工具的配置集合Mi为集合U的真子集,满足
Figure BDA0002814516590000081
系统调用开源的持续集成与交付工具,则可以在本地拉取并获得代码仓库的结构和有效信息,并生成源码配置集合A。将源码配置集合A与预置配置信息集合U的真子集以杰哈德相似系数公式求最大相似值:
Figure BDA0002814516590000082
版本管理和配置重构系统将选择符合最大相似度的编译工具集合Mi的方向进行后续的持续集成与交付模板生成。
第三步,解析包含现有需运行的形式化描述配置信息的集合A,构建具有高正确性、最短关键路径的持续集成与交付模板。由于一个项目的部署步骤可能相互依赖,本发明首先解析项目信息,依据模板分解步骤,将每个步骤将作为顶点Pi以[images,command,duration,dependencyID,invokedID]多元组表示,其中images为镜像名称,command为步骤需使用镜像实施的命令,duration为由预置模板得出的步骤消耗时间。至于dependencyID与invokedID则是由项目解析过程中根据项目依赖内容生成,用于反映服务互联网应用内细粒度的服务依赖,最终生成权重为运行时间的有向带权图。
在该有向带权图中,为了确定关键路径,即必须先后执行的步骤顺序,版本管理和配置重构系统需根据服务依赖关系对该有向带权图进行拓扑排序,最终构建出拓扑排序图M。再使用插点法,将duration带入计算每个顶点Pi最早可能发生的时间earliest(i)与允许的最迟发生时间latest(i),确定关键路径的边和关键结点,从而分别求出各顶点到各顶点的最短关键路径并分别存储为顺序表Li
最后依次遍历并比较顺序表,设重合值c(当顶点重合时变为1,顶点不重合时为0)来检测路径重合变化,当c从0→1从该顶点往前构建子表并归并于一个集合,当c从1→0则从该顶点前驱遍历至重合部分的最前顶点并归并集合,从而在分出横向并行调度任务步骤的同时,也能纵向顺序地完成关键路径的部署。
第四步,更新代码仓库,代码仓库发送有效负载至主机节点的端口,由开源的持续集成与交付工具中的事件拦截器拦截,然后完成第二步到第三步的步骤,按照第二步与第三步生成的模板顺序调用细粒度服务任务,调用Kubernetes API将服务互联网应用部署于另一台主机上,完成版本管理和配置重构的整个流程。
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。

Claims (9)

1.一种面向持续集成的服务版本动态配置方法,其步骤包括:
1)对于一目标软件应用服务系统,根据该目标软件应用服务系统选取一个或多个编译打包软件工具;
2)对于每一所选编译打包软件工具,构造一持续集成与交付的流水线作业模板;
3)收集该目标软件应用服务系统的各类型配置文件,得到该目标软件应用服务系统的源码配置集合A;
4)计算每一所选编译打包软件工具对应的配置集合与源码配置集合A的相似度J;选取与源码配置集合A的相似度最高的配置集合Mi,调用Mi对应的编译打包软件工具对应的流水线作业模板i;
5)利用该流水线作业模板i解析该源码配置集合A,得到以服务为单位的多元组信息[镜像名称,命令类型,运行时间,依赖服务id,被依赖服务id],然后根据所得多元组信息构建一有向带权图;
6)对于有向带权图中每一顶点Pi,设顶点Pi最早可能发生的时间为earliest(i),而该顶点Pi所允许的最迟发生时间为latest(i),若有另一顶点Pj的所允许的最迟发生时间latest(j)与顶点Pi的最早发生时间earliest(i)之差等于顶点Pi与顶点Pj之间有向边的权重,则该有向边为关键路径的边、顶点Pi与顶点Pj为关键结点,将顶点Pi与其他各顶点之间的最短关键路径存储为顺序表Li
7)依次遍历并比较顺序表,对于任意两顺序表Li与Lj:若顺序表Li与Lj经过同一个顶点P,则分别从顺序表Li与Lj中顶点P往前构建顺序表子表,得到对应顺序表子表Fi与Fj并将其归并于一个集合F,为顶点P的关键路径不重合的往前路径集合;当从该顶点P往前构建顺序表子表过程中又出现相同顶点Q时,则从该顶点Q开始进行前驱遍历至重合部分的最前顶点并归并为重合的单独关键路径集合;
8)将步骤7)中同一个路径集合内的关键路径设置为并行执行、不同路径集合内的路径按照生成顺序进行执行。
2.如权利要求1所述的方法,其特征在于,该有向带权图中的顶点为服务端点,顶点Pi使用第i个服务对应的多元组表示,有向边
Figure FDA0002814516580000011
中a表示依赖服务端标识符,b表示被依赖服务端标识符,有向边权重则表示步骤运行时间,不同命令类型对应不同的运行时间。
3.如权利要求1或2所述的方法,其特征在于,所述命令类型包括源码仓库、编译打包、镜像构建、安全扫描。
4.如权利要求1所述的方法,其特征在于,步骤2)中,对于每一所选编译打包软件工具,根据该编译打包软件工具的配置信息,得到根据该编译打包软件工具所构建的软件应用系统结构及其部署所需步骤,然后按软件应用系统结构类型分步骤内容撰写脚本,构成持续集成与交付的流水线作业模板;根据各所选编译打包软件工具的配置信息生成一配置信息集合U,其中第i个所选编译打包软件工具的配置集合Mi为配置信息集合U的真子集,满足
Figure FDA0002814516580000021
5.如权利要求1所述的方法,其特征在于,步骤3)中,收集该目标软件应用服务系统的各类型配置文件,对于每一类型配置文件,设该类型配置文件中的配置依赖内容为储存元素t,该类型配置文件中的各个元素构成一个子集;根据各类型配置文件的子集得到该目标软件应用服务系统的源码配置集合A。
6.如权利要求1所述的方法,其特征在于,所述相似度
Figure FDA0002814516580000022
7.如权利要求1所述的方法,其特征在于,步骤6)中,首先根据服务依赖关系对该有向带权图进行拓扑排序,构建出拓扑排序图M;再使用插点法根据步骤的运行时间计算每个顶点Pi最早可能发生的时间earliest(i)与允许的最迟发生时间latest(i)。
8.一种服务器,其特征在于,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行权利要求1至7任一所述方法中各步骤的指令。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一所述方法的步骤。
CN202011412434.4A 2020-12-03 2020-12-03 一种面向持续集成的服务版本动态配置方法 Active CN112394949B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011412434.4A CN112394949B (zh) 2020-12-03 2020-12-03 一种面向持续集成的服务版本动态配置方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011412434.4A CN112394949B (zh) 2020-12-03 2020-12-03 一种面向持续集成的服务版本动态配置方法

Publications (2)

Publication Number Publication Date
CN112394949A CN112394949A (zh) 2021-02-23
CN112394949B true CN112394949B (zh) 2022-04-22

Family

ID=74604408

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011412434.4A Active CN112394949B (zh) 2020-12-03 2020-12-03 一种面向持续集成的服务版本动态配置方法

Country Status (1)

Country Link
CN (1) CN112394949B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113297081A (zh) * 2021-05-26 2021-08-24 北京京东振世信息技术有限公司 一种持续集成流水线的执行方法和装置
CN113434264B (zh) * 2021-07-14 2022-08-05 上海浦东发展银行股份有限公司 一种任务组件的智能处理方法、装置、设备和存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077140A (zh) * 2014-07-04 2014-10-01 用友软件股份有限公司 用于持续集成的自动化编译方法和编译装置
CN108958721A (zh) * 2018-07-09 2018-12-07 中国科学院软件研究所 一种智能化持续集成与持续部署流水线方法及系统
CN110058860A (zh) * 2019-03-16 2019-07-26 平安城市建设科技(深圳)有限公司 一种代码自动交付方法、装置、设备及计算机存储介质
US10534595B1 (en) * 2017-06-30 2020-01-14 Palantir Technologies Inc. Techniques for configuring and validating a data pipeline deployment
CN110909363A (zh) * 2019-11-25 2020-03-24 中国人寿保险股份有限公司 基于大数据的软件第三方组件漏洞应急响应系统及方法
CN111488136A (zh) * 2020-04-07 2020-08-04 携程旅游网络技术(上海)有限公司 持续集成和持续交付方法、系统、设备及存储介质
CN111897566A (zh) * 2020-06-23 2020-11-06 福建升腾资讯有限公司 一种软件开发持续集成方法、装置、设备和介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9383988B2 (en) * 2012-07-03 2016-07-05 Salesforce, Inc. System and method for using directed acyclic graph (DAG) for application updates

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077140A (zh) * 2014-07-04 2014-10-01 用友软件股份有限公司 用于持续集成的自动化编译方法和编译装置
US10534595B1 (en) * 2017-06-30 2020-01-14 Palantir Technologies Inc. Techniques for configuring and validating a data pipeline deployment
CN108958721A (zh) * 2018-07-09 2018-12-07 中国科学院软件研究所 一种智能化持续集成与持续部署流水线方法及系统
CN110058860A (zh) * 2019-03-16 2019-07-26 平安城市建设科技(深圳)有限公司 一种代码自动交付方法、装置、设备及计算机存储介质
CN110909363A (zh) * 2019-11-25 2020-03-24 中国人寿保险股份有限公司 基于大数据的软件第三方组件漏洞应急响应系统及方法
CN111488136A (zh) * 2020-04-07 2020-08-04 携程旅游网络技术(上海)有限公司 持续集成和持续交付方法、系统、设备及存储介质
CN111897566A (zh) * 2020-06-23 2020-11-06 福建升腾资讯有限公司 一种软件开发持续集成方法、装置、设备和介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Dynamic configuration management in a graph-oriented Distributed Programming Environment;Jiannong, CAO 等;《Science of Computer Programming》;20031231;全文 *
面向OSGi框架的软件构件监控方法的设计与实现;李顺 等;《计算机应用与软件》;20140430;第31卷(第4期);全文 *

Also Published As

Publication number Publication date
CN112394949A (zh) 2021-02-23

Similar Documents

Publication Publication Date Title
AU2019200046B2 (en) Utilizing artificial intelligence to test cloud applications
CN108205463B (zh) 应用生命周期管理系统
Souri et al. Behavioral modeling and formal verification of a resource discovery approach in Grid computing
CN112394949B (zh) 一种面向持续集成的服务版本动态配置方法
CN105719126B (zh) 一种基于生命周期模型的互联网大数据任务调度的系统及方法
US20070100781A1 (en) Conditional CSP solving using constraint propagation
Hummel et al. A collection of software engineering challenges for big data system development
US20160292581A1 (en) Minimized processing of streaming changes into a semantic reasoner
Espinosa et al. Automatic performance evaluation of parallel programs
Speth Semi-automated cross-component issue management and impact analysis
TW201913374A (zh) 微服務軟體開發基礎架構下自動化持續整合系統及其方法
CN113434302A (zh) 分布式作业执行方法、主节点、系统、物理机及存储介质
CN111147541B (zh) 基于参数服务器的节点处理方法、装置、设备及存储介质
US10547565B2 (en) Automatic determination and just-in-time acquisition of data for semantic reasoning
CN114168252A (zh) 信息处理系统及方法、网络方案推荐组件及方法
US20200183737A1 (en) Coordinating processes with interfering external actions
Gu et al. Analyzing execution dynamics of scientific workflows for latency minimization in resource sharing environments
JP6904364B2 (ja) システム構築支援装置、方法およびプログラム
Yi et al. Optimizing DNN compilation for distributed training with joint OP and tensor fusion
CN113886111A (zh) 一种基于工作流的数据分析模型计算引擎系统及运行方法
Souri Formal specification and verification of a data replication approach in distributed systems
JP6897866B2 (ja) システム更新装置およびシステム更新方法
Tang et al. IncGraph: An improved distributed incremental graph computing model and framework based on spark graphX
JP2022108452A (ja) プログラム管理装置及びプログラム管理方法
Goto et al. Development and maintenance environment for anticipatory reasoning-reacting systems

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