CN115668129A - 流水线工件选择的动态自动化 - Google Patents
流水线工件选择的动态自动化 Download PDFInfo
- Publication number
- CN115668129A CN115668129A CN202180036221.2A CN202180036221A CN115668129A CN 115668129 A CN115668129 A CN 115668129A CN 202180036221 A CN202180036221 A CN 202180036221A CN 115668129 A CN115668129 A CN 115668129A
- Authority
- CN
- China
- Prior art keywords
- pipeline
- artifacts
- application
- computer
- impact
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- 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
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
- G06N5/025—Extracting rules from data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Examining Or Testing Airtightness (AREA)
- Investigating Or Analyzing Materials By The Use Of Ultrasonic Waves (AREA)
- Measuring Volume Flow (AREA)
- Complex Calculations (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种人工智能(AI)平台,用于支持用于软件开发和操作(DevOp)的持续集成和部署(CI/CD)流水线。基于应用工件生成一个或多个依赖图。利用机器学习(ML)模型来捕获(多个)依赖图中的组件与一个或多个流水线工件之间的关系。响应于应用工件的改变,所捕获的关系被利用来标识所检测到的改变对流水线工件的影响。基于所标识的影响来选择性地优化和执行CI/CD流水线以提高流水线的效率和部署时间。
Description
背景技术
本实施例涉及用于软件开发和操作(DevOp)的持续集成/持续交付(CI/CD)流水线。更具体地,各实施例涉及通过学习应用组件和CI/CD流水线组件之间的依赖性,基于所标识的改变来自动地和选择性地优化CI/CD流水线工件。
机器学习(ML)是人工智能(AI)的子集,其利用算法来从数据学习并基于该数据创建前瞻。AI是指机器基于信息能够做出决策时的智能,其最大化了在给定主题中成功的机会。更具体地说,AI能够从数据集学习以解决问题并提供相关的推荐。认知计算是计算机科学和认知科学的混合。认知计算利用使用数据最小化、视觉识别和自然语言处理的自学算法来解决问题并优化人类过程。
AI和相关联的推理的核心在于相似性的概念。理解自然语言和对象的过程需要从关系角度进行推理,这可能是具有挑战性的。包括静态结构和动态结构的结构规定了针对给定的确定输入的确定的输出或动作。更具体地说,所确定的输出或动作是基于结构内的表达或固有关系。这种布置对于选择的环境和条件可能是令人满意的。然而,应当理解,动态结构固有地易受变化的影响,并且输出或动作可能因此易受变化的影响,特别是在用于交付软件的流水线的环境中。用于高效地标识对象和处理内容以及结构的改变的已有解决方案在时间水平上是极其困难的。
发明内容
实施例包括用于通过学习应用工件和流水线工件之间的依赖关系来自动地且选择性地优化CI/CD流水线的系统、计算机程序产品和方法。
在一个方面,计算机系统具有操作性地耦合到存储器的处理单元,以及操作性地耦合到处理单元的人工智能(AI)平台。AI平台支持用于软件开发和操作(DevOp)的持续集成和部署(CI/CD)流水线。AI平台包括图管理器、机器学习(ML)管理器和监视器形式的工具。图管理器用于基于两个或更多个应用工件生成一个或多个依赖图。操作性地耦合到图管理器的ML管理器利用ML模型来捕获(多个)依赖图与一个或多个流水线工件之间的关系。此处所示的操作地耦合到ML管理器的监控器用于检测对(多个)应用工件的改变,并且响应于所检测到的改变,ML管理器利用所捕获的关系来标识所检测到的改变对(多个)流水线工件的影响,并且响应于所标识的影响来选择性地优化流水线。优化是将与所标识的影响对应的映射的改变自动编码到流水线中。处理单元执行优化的流水线。
在另一方面,提供了一种支持持续集成和持续部署(CI/CD)流水线软件开发和操作(DevOp)的计算机程序产品。该计算机程序产品包括具有程序代码的计算机可读存储介质。提供了由处理器可执行的程序代码,以基于两个或更多个应用工件生成一个或多个依赖图。该程序代码利用机器学习(ML)模型来捕获(多个)依赖图与一个或多个流水线工件之间的关系。该程序代码检测对(多个)应用工件的改变,并且响应于检测到的改变,该程序代码利用所捕获的关系来标识检测到的改变对(多个)流水线工件的影响,并且响应于所标识的影响来选择性地优化流水线。优化包括将与所标识的影响对应的映射的改变自动编码到流水线中。然后,优化的流水线被执行。
在又一方面,提供了一种支持用于软件开发和操作(DevOp)的持续集成和部署(CI/CD)流水线的方法。该方法包括基于两个或更多个应用工件生成一个或多个依赖图。利用机器学习(ML)模型来捕获依赖图与一个或多个流水线工件之间的关系。响应于所标识的影响选择性地优化流水线,包括将对应于所标识的影响的映射改变自动编码到流水线中,并执行经优化的CI/CD流水线。
这些和其它特征和优点将从下面结合附图对(多个)当前优选实施例的详细描述中变得明显。
附图说明
这里参考的附图形成说明书的一部分。附图中所示的特征仅是一些实施例的说明,而不是所有实施例的说明,除非另有明确指示。
图1描绘了支持并启用CI/CD流水线的自动选择和优化的计算机系统的示意图。
图2描绘了示出如图1所示和所述的AI平台工具及其相关联的应用程序接口(API)的框图。
图3描述了示出用于进行影响分析以确定应用工件和流水线工件之间的关系的过程的流程图。
图4描绘了示出CI/CD流水线的自动和选择性优化的过程的流程图。
图5描绘了示出基于云的支持系统的计算机系统/服务器的示例的框图,以实现以上关于图1-4描述的系统和过程。
图6描述了示出云计算机环境的框图。
图7描述了示出由云计算环境提供的一组功能抽象模型层的框图。
具体实施方式
容易理解,如在本文的附图中一般性描述和示出的,本实施例的组件可以以各种不同的配置来布置和设计。因此,如附图中所呈现的,以下对本实施例的装置、系统、方法和计算机程序产品的实施例的详细描述不旨在限制如所要求保护的实施例的范围,而仅仅是所选实施例的代表。
在整个说明书中,对“选择实施例”、“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在至少一个实施例中。因此,在本说明书中各处出现的短语“选择实施例”、“在一个实施例中”或“在实施例中”不一定是指同一实施例。
通过参考附图将更好地理解所示实施例,其中,相同的部件始终由相同的附图标记表示。以下描述仅意在作为示例,并且仅示出与本文要求保护的实施例一致的设备、系统和过程的某些所选实施例。
DevOps(“开发”和“操作”的组合)是一种强调软件开发者和其他信息技术(IT)专业人员之间的通信、协作、集成、自动化和协作度量的软件开发方法。DevOps承认软件开发、质量保证和IT操作的相互依赖性,并且旨在帮助组织快速产生软件产品和服务并且在提供更快的开发和部署周期的同时提高可靠性和安全性。持续集成(CI)是开发者集成其代码以便标识集成问题的软件开发过程。更具体地说,CI起减少代码开发工作量的作用,从而产生更高质量的软件和可预测的交付计划。因此,持续集成是DevOps实践,其中开发的软件代码与已有软件代码集成。持续交付(CD)使应用到所选基础设施环境的交付自动化。它确保将代码改变自动推送到诸如开发、测试和生产等不同环境。在DevOps中,CI用作CD的测试部署和发布阶段的先决条件。
持续集成/持续交付(CI/CD)流水线,以下称为流水线,是用作DevOp的一部分或集成到DevOp中的一组自动化过程。流水线由几个阶段组成。在一个实施例中,这些阶段可以包括构建、单元测试、部署开发、集成测试、合规性检查和部署产品。阶段中的每个阶段包括一个或多个动作或选项。例如,测试阶段可以采用简单测试器、高级测试器、和/或合规性扫描仪。在一个实施例中,流水线的一个或多个级可能仅需要选择少于所有可用动作的动作,以避免冗余和低效。流水线使构建、测试和部署阶段自动化。
微服务或微服务架构是指一种计算机环境,其中应用被构建为基于功能定义的一套模块化组件或服务,每个组件或服务对应于一个功能定义,并且每个组件或服务运行在其自己的进程中并通过轻量机制来通信。在微服务架构中,数据被存储在服务之外,并且因此服务是无状态的。服务或组件通常被称为“原子服务”。每个原子服务是用于独立执行模块化服务的轻量组件。例如,原子服务可以接收和组合关键字、处理算法、或者基于算法处理的结果做出决策。每个模块支持特定任务,并使用诸如应用编程接口(API)等定义接口来与其它服务通信。微服务架构支持并实现混合网络中的可扩展性。
流水线中使用的微服务的数目呈指数增长,因为微服务在云本机环境中被划分时提供更多益处。微服务在开发和部署方面具有若干优点,但是它们也伴随有它们自己的挑战。随着应用数目的增长,微服务储存库和流水线的管理变得更加困难。流水线被利用来自动化微服务的部署。随着一些公司运行数百甚至数千个微服务来运行它们的服务,流水线随着时间的推移变得鲁棒,并且将继续变得更大。每当代码、配置、变量改变、网络端口改变等中存在任何改变时,需要重新部署微服务。重新部署遵循相同的过程来提供微服务,并且由于过多的进程,该过程变得更加复杂和缓慢。如本文所示和所述,提供了一种优化的解决方案,以支持和使流水线能够高效地加速重新部署过程,同时保持一定水平的可靠性。
应用工件在本领域中被称为在软件开发期间产生的有形副产品。工件用作在流水线中的阶段之间或不同流水线之间共享文件的资源。应用工件的示例包括但不限于应用源代码、测试代码、应用编程接口(API)规范、应用配置、部署脚本和变量。
流水线工件是在软件开发过程期间产生的副产品。它可以由项目源代码、依赖和二进制文件或资源组成。流水线工件的示例包括但不限于当前在流水线中可用的能力、过程和组件。
参考图1,计算机系统(100)的示意图被提供有支持流水线的自动选择和优化的工具。如图所示,提供了通过网络连接(105)与多个计算设备(180)、(182)、(184)、(186)、(188)和(190)通信的服务器(110)。服务器(110)配置有通过总线(114)与存储器(116)通信的处理器(112)。该服务器(110)被示出为具有人工智能(AI)平台(150),以支持基于应用工件来选择流水线工件,更具体地,AI平台(150)被配置为具有一个或多个工具,用以捕获和学习应用工件和流水线工件之间的依赖性,并且用以基于所学习的依赖性来选择性地优化流水线。计算设备(180)、(182)、(184)、(186)、(188)和(190)经由一个或多个有线和/或无线数据通信链路彼此通信以及与其它设备或组件通信,其中每个通信链路可以包括以下一项或多项:导线、路由器、交换机、发射机、接收机等。服务器(110)的其它实施例可以与除了这里描述的那些之外的组件、系统、子系统和/或设备一起使用。
本文示出了人工智能(AI)平台(150),其被配置为从各种源接收输入(102)。例如,AI平台(150)可以通过网络(105)接收输入并利用知识库(170)(本文也称为语料库或数据源)来将一个或多个流水线工件的自动选择和编码应用于流水线(也称为CI/CD流水线)中。如图所示,知识库(170)配置有一个或多个库,在此示为第一库(162)、第二库(164)和第三库(166)。这里所示的库的数量是为了说明的目的,并且在一个实施例中,知识库(170)可以具有较少数量的库。例如,在一个实施例中,知识库(170)可以具有用于依赖图、模型和相应反馈的一个库或数据结构。
第一库(162)被示出为具有多个依赖图,本文被称为图,包括图A(162A)、图B(162B)和图N(162N)。依赖图(162A)、(162B)和(162N)的数量是为了说明的目的,而不应被认为是限制性的。每个依赖图描绘了应用的各部分之间的关系,并且更具体地,该图明确了应用改变的每个部分如何能够对应用或相关应用的一个或多个其他部分产生影响。(多个)依赖图指示应用工件之间的代码依赖、配置依赖、API依赖、部署依赖等。例如,在一个实施例中,该图可清楚表达对一个应用检测到的改变可以如何要求另一应用的API测试。
第二库(164)被示出具有多个ML模型,包括模型A(164A)、模型B(164B)和模型N(164N)。ML模型(164A)、(164B)和(164N)的数量是为了说明的目的,而不应被认为是限制性的。每个ML模型捕获被存储在第一库(162)中的依赖图与流水线工件之间的关系。ML管理器(154)采用或应用对ML模型(164A)、(164B)和(164N)的关联规则学习以标识所捕获的关系的影响。
第三库(166)被示出具有与ML模型相关联的反馈。在本文所示的示例中,每个模型具有对应的反馈(166A)、(166B)和(166N)。反馈(166A)-(166N)的细节在下面示出和描述。
关联规则学习是用于发现数据库中的变量之间的关系的基于规则的ML方法。给定一组事务,相关联的规则学习基于事务中的其它项的出现来预测项的出现。关联规则学习旨在使用对变量之间的所发现的关系的某种度量(诸如数据中的出现频率)来标识在数据库中发现的强规则。关联规则学习的一个示例是Apriori算法。Apriori算法使用宽度优先搜索策略来扫描程序代码,并使用候选生成函数来利用支持的向下闭合属性。该算法是可以由以下示出和描述的ML模型利用的示例关联规则学习算法。ML模型(在此示为(164A)、(164B)和(164N))有效地创建了应用工件和(多个)流水线工件之间的映射。更具体地说,ML模型采用算法来分析依赖图中反映的所收集的应用工件和流水线工件之间的影响。该映射提供了关于一个或多个应用工件的所检测到的改变将如何影响流水线中的微服务的依赖性信息。在一个实施例中,ML管理器(154)分析所检测的改变的影响,并且使用该分析来预测流水线中的应用改变的后果。该分析在以下图3中描述,在一个实施例中,映射被称为影响映射,用以捕获对一个或多个选择的应用工件的改变将如何影响一个或多个流水线工件,并有效地建议或实现对流水线的改变。
AI平台(150)在这里被示为具有若干工具,以支持基于对一个或多个应用工件的改变的检测或标识的流水线优化、学习或学习到的(多个)改变对流水线工件的任何影响的依赖、基于影响的流水线中的流水线工件的选择性优化、以及选择性优化的流水线的执行。AI平台(150)工具在这里被示为图管理器(152)、机器学习(ML)管理器(154)、监视器(156)和反馈管理器(158)。工具(152)、(154)、(156)和(158)直接或间接地操作性地连接在一起,并提供如下所述的功能。
图管理器(152)生成在第一库(162)中示出的依赖图。图3示出并描述了应用和流水线工件收集以及依赖图生成的细节,这里示出的示例图(162A)、(162B)和(162N)基于两个或更多个所收集的应用工件,并且表达所收集的应用工件之间的一个或多个关系。因此,图管理器(152)生成一个或多个依赖图以表达在所收集的应用工件中呈现和标识的关系。
应当理解,应用改变可以导致或引起一个或多个微服务在对应应用中的重新部署。如图所示,监视器(156)操作性地耦合到图管理器(152)和ML管理器(154)两者。监视器(156)用于检测应用张的如在对应的应用工件中所反映的改变。监视器(156)监视应用工件中的触发一个或多个微服务的重新部署的任何改变。响应于检测到这样的改变,监视器(156)与ML管理器(154)进行接口以从第二库(164)标识对应的ML模型(164A)-(164N),其中所标识的ML模型对应于检测到的改变。ML管理器(154)利用所标识的ML模型来标识检测到的改变对一个或多个流水线工件的影响,并且基于该影响来选择性地优化流水线。由于每个ML模型捕获依赖图和流水线工件之间的关系,因此ML管理器(154)从知识库(170)中标识适当的模型,并且模型采用该算法,在一个实施例中,该算法是关联规则学习算法。此外,ML管理器(154)将与来自ML模型(164A)-(164N)的影响对应的任何映射的变化编码到流水线中。在一个实施例中,编码是自动的,以透明地创建优化的流水线作为对所标识的影响的响应。在一个实施例中,通过将编码限制到流水线中仅一个或多个流水线工件,流水线的优化是选择性的,所述流水线工件受到(多个)应用工件改变影响(impacted)或以其他方式受到(多个)应用工件改变影响(affected)。流水线的选择性编码支持主动学习方法,以进一步教导ML模型识别未来过程中的可重复模式。在一个实施例中,制定主动学习方法提高了关于流水线部署的效率,因为未不必要地评估不受影响的流水线工件。处理单元(112)基于所标识的影响来利用选择性被编码的流水线或流水线工件执行优化的流水线,以提高流水线的效率和部署时间。因此,AI和ML被用于自动地和选择性地优化流水线和流水线工件。
如进一步所示,反馈管理器(158)操作性地耦合到监视器(156)。反馈管理器(158)收集反馈,在此示出为存储在知识库(170)中的反馈(166A)-(166N),对应于检测到的影响。在一个实施例中,收集的反馈(166A)-(166N)或反馈数据,在此统称为反馈,是用户生成的反馈。如图4所示和所述,所收集的反馈源自主题专家(SME),并且可以包括与受影响的流水线工件的部署或重新部署对应的实时数据。如本文所示,反馈(166A)-(166N)操作性地耦合到ML模型(164A)-(164N)。更具体地,ML模型(164A)被示出具有反馈(166A),ML模型(164B)被示出具有反馈(166B),并且ML模型(164N)被示出具有反馈(166N)。应当理解,在一个实施例中,ML模型(164A)-(164N)中的一个或多个ML模型可以不具有操作性地耦合的反馈。反馈管理器(158)利用反馈来进一步训练或使对应的ML模型(164A)-(164N)经受训练。因此,反馈管理器(158)利用与对应的ML模型相关联的反馈来进一步训练ML模型以用于在将来检测到应用工件改变时应用。
在一些说明性实施例中,服务器(110)可以是从纽约阿蒙克的国际商业机器公司可获得的IBM系统,其被增强有此后描述的说明性实施例的机构。图管理器(152)、ML管理器(154)、监视器(156)和反馈管理器(158)(下文中统称为AI工具)被示为包含或集成在服务器(110)的AI平台(150)内。在一个实施例中,AI工具可以在通过网络(105)连接到服务器(110)的单独的计算系统(例如,190)中被实现。无论在何处体现,AI工具用于支持基于通过学习依赖所标识的改变将处理规则自动编码到流水线中。
可以利用AI平台(150)的信息处理系统的类型的范围从诸如手持计算机/移动电话(180)的小型手持设备到诸如大型计算机(182)的大型系统。手持计算机(180)的例子包括个人数字助理(PDA)、个人娱乐设备,诸如MP4播放器、便携式电视和光盘播放器。信息处理系统的其它例子包括笔或平板计算机(184)、膝上型或笔记本计算机(186)、个人计算机系统(188)和服务器(190)。如图所示,各种信息处理系统可以使用计算机网络(105)联网在一起。可以用于互连各种信息处理系统的计算机网络(105)的类型包括局域网(LAN)、无线局域网(WLAN)、互联网、公共交换电话网(PSTN)、其他无线网络、以及可以用于互连信息处理系统的任何其他网络拓扑。许多信息处理系统包括非易失性数据存储器,诸如硬盘驱动器和/或非易失性存储器。一些信息处理系统可以使用单独的非易失性数据存储库(例如,服务器(190)使用非易失性数据存储库(190A),以及大型计算机(182)使用非易失性数据存储库(182a)。非易失性数据存储器(182A)可以是各种信息处理系统外部的组件,或者可以是信息处理系统之一内部的组件。
用于支持AI平台(150)的信息处理系统可以采取许多形式,其中一些在图1中示出,例如,信息处理系统可以采取台式机、服务器、便携式计算机、膝上型计算机、笔记本计算机或其它形式因素的计算机或数据处理系统的形式。此外,信息处理系统可以采用其他形式因素,诸如个人数字助理(PDA)、游戏设备、ATM机、便携式电话设备、通信设备、或者包括处理器和存储器的其他设备。此外,信息处理系统可以体现为北桥/南桥控制器架构,尽管将理解的是,也可以采用其他架构。
应用程序接口(API)在本领域中被理解为两个或更多应用之间的软件中介。关于图1中所示和所述的AI平台(150),一个或多个API可被利用来支持工具(152)、(154)、(156)和(158)中的一个或多个工具及其相关联的功能性。参考图2,提供了示出工具(152)、(154)、(156)和(158)及其相关联的API的框图(200)。如图所示,多个工具被嵌入在人工智能平台(205)内,其中工具包括与API0(212)相关联的图管理器(252)、与API1(222)相关联的ML管理器(254)、与API2(232)相关联的反馈管理器(256)以及与API3(242)相关联的监视器(258)。这些API中的每个API可以用一种或多种语言和接口规范来实现。
如图所示,API0(212)被配置为支持和启用由图管理器(252)表示的功能。API0(212)提供了基于两个或更多收集的应用工件生成一个或多个依赖图的功能支持;API1(222)提供了用于以下的功能支持:捕获依赖图和一个或多个收集的流水线工件之间的关系,以映射的形式标识检测到的应用变化对一个或多个流水线工件的影响,以及将与所标识的影响对应的映射的变化编码到流水线中;API2(232)提供了功能监视应用的改变的功能支持;以及API3(242)提供在主动学习方法中利用用户反馈来进一步训练ML模型以供将来过程使用的功能支持。如图所示,API(212)、(222)、(232)和(242)中的每个API都操作性地耦合到API协调器(260),或者称为协调层,其在本领域中被理解为用作将单独的API透明地串在一起的抽象层。在一个实施例中,可以结合或组合单独API的功能。这样,本文所示的API的配置不应被认为是限制性的。因此,如本文所示,工具的功能性可以由其相应的API来具体化或支持。
参考图3,提供了示出用于进行影响分析以确定应用工件和流水线工件之间的关系的过程的流程图(300)。如图所示,标识(302)两个或更多个应用工件。应用工件的示例包括但不限于应用源代码、测试代码、应用编程接口(API)规范、应用配置、部署脚本和变量。在应用工件标识之后,标识一个或多个流水线工件(304)。流水线工件的示例包括但不限于能力、过程和组件。针对所标识的应用工件生成依赖图(306)。每个依赖图描绘了应用的各部分之间的关系,并且更具体地,该图明确了应用改变的每个部分如何能够对应用或相关应用的一个或多个其他部分产生影响。例如,检测到的对应用之一的改变可以触发一个或多个相关应用的一个或多个API测试。因此,依赖图捕获应用工件的相互依赖关系。
在创建依赖图之后,在依赖图中反映的应用工件与一个或多个流水线工件之间的影响分析被执行(308)。在一个实施例中,利用关联规则学习算法来执行影响分析。在本领域中可以理解,应用工件可以与一个或多个流水线工件进行接口。该接口可以是应用工件和流水线工件之间的直接关系或间接关系。影响分析捕获直接和间接关系。更具体地,影响分析表示与(多个)不同流水线工件(如果存在的话)对应的应用工件的直接和间接关系。例如,映射可以提供检测到的对应用的改变将如何影响与流水线工件相关联的微服务的依赖信息。使用指示应用工件和流水线工件之间的关系的影响分析来训练一个或多个相关联的ML模型(310)。因此,此处所示的步骤表示应用工件的收集和流水线工件的收集,创建依赖图以捕获应用工件的直接和间接关系,以及执行影响分析来确定应用和流水线工件之间的关系以训练一个或多个ML模型。
如图1中所示和描述的,ML管理器(154)用于支持和使一个或多个ML模型(164A)-(164N)能够支持和使流水线优化。参考图4,提供了示出用于自动和选择性优化流水线的过程的流程图(400)。如图所示,监视流水线以标识一个或多个应用工件的将影响或引起微服务的重新部署的任何改变(402)。利用在图3中创建的一个或多个ML模型,做出确定以评估所标识的改变是否与一个或多个流水线工件相关(404)。对该确定的否定响应指示没有流水线工件受到所标识的改变影响,并且流水线被维持在其当前配置(406),随后返回到步骤(402)以继续监视。对步骤(404)处的确定的肯定响应指示所标识的改变影响一个或多个流水线工件,并且针对受影响的流水线工件创建规则(408)。更具体地,在步骤(408)处,创建针对调用每个受影响的流水线工件的子例程的规则。例如,(多个)规则可以指导特定受影响的流水线工件的部署或重新部署。如本文所示,除了创建一个或多个规则之外,本文还示出了将来自在步骤(404)做出的肯定确定的对应关系信息存储在知识库(410)中。在一个实施例中,步骤(408)处的规则更新和步骤(410)处的关系信息存储可以并行发生。因此,标识触发一个或多个微服务的重新部署的改变,并且进行评估以确定所标识的改变是否影响一个或多个流水线工件。
在步骤(408)之后,基于所创建的规则的反馈被收集并被应用于对应的ML模型(412)。在一个实施例中,在步骤(412)收集的反馈来自主题专家(SME)。类似地,在一个实施例中,所收集的反馈可以包括与受影响的管道工件的部署或重新部署相对应的实时数据。在一个实施例中,在步骤(412)处的反馈的应用是可选的。所创建的规则被编码到流水线(414)中。捕获与所创建的规则相关联的应用工件和流水线工件之间的所标识的关系(也称为依赖模式)以标识将来过程中的可重复模式(416),并且将所捕获的依赖模式存储在知识库中(418)作为对ML模型的反馈。在一个实施例中,数据处理可以用于标识与流水线工件相关的软件元素。所标识的模式的一个示例是与应用工件中的所监视或检测到的改变对应的一个或多个微服务的部署或重新部署。已经收集并结合到编码的规则中的任何用户反馈(420)也在此示出为被存储在知识库(418)中。在步骤(416)中捕获依赖模式之后,利用编码的规则来部署流水线(422)。利用编码的规则的流水线部署创建了优化的流水线,其中仅将受在步骤(402)处标识的改变影响的流水线工件编码到流水线中以供重新部署。优化的流水线创建了用于重新部署流水线同时维持一定水平的可靠性的高效过程。在步骤(422)之后,过程返回到步骤(402)以继续监视。因此,所创建的规则被编码到创建用于部署的优化流水线的流水线中。
分别关于图1和图2中所示的工具和API以及图3和图4中所示的过程来示出和描述基于通过学习依赖所标识的改变来自动地和选择性地优化流水线工件的方面。功能工具(152)、(154)、(156)和(158)以及其功能性可以体现在单个位置中的计算机系统/服务器中,或者在一个实施例中,可以被配置在共享计算资源的基于云的系统中。参考图5,提供了示出计算机系统/服务器(502)的示例的框图(500),该计算机系统/服务器在此之后被称为与基于云的支持系统通信以实现以上参考图3和图4描述的过程的主机(502)。主机(502)可与许多其它通用或专用计算系统环境或配置一起操作。适合与主机(502)一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、厚客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统、以及包括上述系统、设备及其等效物中的任一个的文件系统(例如,分布式存储环境和分布式云计算环境)。
主机(502)可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。主机(502)可以在分布式云计算环境(510)中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图5所示,主机(502)以通用计算设备的形式示出。主机(502)的组件可以包括但不限于一个或多个处理器或处理单元(504),例如硬件处理器、系统存储器(506)以及将包括系统存储器(506)的各种系统组件耦合到处理单元(504)的总线(508)。总线(508)表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任何一种的处理器或局部总线。作为示例而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线。主机(502)通常包括各种计算机系统可读介质。这样的介质可以是由主机(502)可访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。
存储器(506)可以包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)(530)和/或高速缓存存储器(532)。仅作为示例,存储系统(534)可被以提供用于从不可移除、非易失性磁介质(未示出,且通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,但是可以提供用于从可移除、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从诸如CD-ROM、DVD-ROM或其它光学介质等可移除、非易失性光盘读取或向其写入的光盘驱动器。在这种情况下,每个可以通过一个或多个数据介质接口连接到总线(508)。
具有一组(至少一个)程序模块(542)的程序/实用程序(540)以及操作系统、一个或多个应用、其它程序模块和程序数据可被存储在存储器(506)中,这是作为示例而非限制。操作系统、一个或多个应用、其它程序模块和程序数据或其某种组合中的每个可以包括联网环境的实现。程序模块(542)通常执行实施例的功能和/或方法以基于通过学习依赖所标识的改变来集成自动选择DevOps流水线工件。例如,该组程序模块(542)可以包括如图1中所述的工具(152)、(154)、(156)和(158)。
主机(502)还可以与一个或多个外部设备(514)通信,诸如键盘、指点设备等;显示器(524);使得用户能够与主机(502)交互的一个或多个设备;和/或使主机(502)能够与一个或多个其它计算设备通信的任何设备(例如,网卡、调制解调器等)。这样的通信可以经由(多个)输入/输出(I/O)接口(522)发生。此外,主机(502)可以经由网络适配器(520)与一个或多个网络通信,所述网络诸如局域网(LAN)、通用广域网(WAN)、和/或公共网络(例如,互联网)。如所描述的,网络适配器(520)经由总线(508)与主机(502)的其他组件通信。在一个实施例中,分布式文件系统(未示出)的多个节点经由I/O接口(522)或经由网络适配器(520)与主机(502)通信。应当理解,尽管未示出,但是可以结合主机(502)使用其他硬件和/或软件组件。示例包括但不限于:微码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据档案存储系统等。
在本文档中,术语“计算机程序介质”、“计算机可用介质”和“计算机可读介质”用于一般地指代诸如主存储器(506)的介质,包括RAM(530)、高速缓存(532)和存储系统(534),诸如可移除存储驱动器和安装在硬盘驱动器中的硬盘。
计算机程序(也称为计算机控制逻辑)被存储在存储器(506)中。计算机程序也可以经由通信接口(诸如网络适配器(520))被接收。当运行时,这样的计算机程序使计算机系统能够执行如本文所讨论的本实施例的特征。特别地,当运行时,计算机程序使处理单元(504)能够执行计算机系统的特征。因此,这样的计算机程序代表计算机系统的控制器。
在一个实施例中,主机(502)是云计算环境的节点。如本领域所公知的,云计算是一种服务交付模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池的方便、按需的网络访问,该可配置计算资源可以用最小的管理工作量或与服务提供方的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。这样的特性的示例如下:
按需自助服务:云消耗方可按需自动地单方面供应计算能力,诸如服务器时间和网络存储,而无需与服务的提供方的人类交互。
广泛的网络接入:能力通过网络可用并且通过标准机制被访问,该标准机制促进由异构的瘦或厚客户端平台(例如,移动电话、膝上型计算机和PDA)使用。
资源池化:提供方的计算资源被池化以使用多租户模型服务于多个消耗方,其中不同的物理和虚拟资源根据需要被动态地指派和重新指派。存在位置独立性的意义,因为消耗方通常对所提供资源的确切位置不具有控制或知识,但是可以能够在较高抽象层(例如,国家、州或数据中心)处指定位置。
快速弹性:可以快速且弹性地、在一些情况下自动地供应能力以快速缩小、并且快速释放以快速放大。对于消耗方,可用于供应的能力通常显得不受限制,并且可以在任何时间以任何数量购买。
测量的服务:云系统通过利用适于服务类型(例如,存储、处理、带宽和活动用户账户)的某个抽象层的计量能力来自动控制和优化资源使用。可以监视、控制和报告资源使用,从而为所利用的服务的提供方和消耗方两者提供透明度。
服务模型如下:
软件即服务(SaaS):提供给消耗方的能力是使用在云基础设施上运行的提供方的应用。应用通过诸如web浏览器(例如,基于web的电子邮件)的瘦客户端接口从不同客户端设备可访问。消耗方不管理或控制包括网络、服务器、操作系统、存储装置或甚至个体应用能力的底层云基础设施,可能的例外是有限的用户特定的应用配置设置。
平台即服务(PaaS):提供给消耗方的能力是将消耗方创建或获取的应用部署到云基础设施上,该应用是使用提供方所支持的编程语言和工具来创建的。消耗方不管理或控制包括网络、服务器、操作系统或存储装置的底层云基础设施,但是具有对所部署的应用以及可能的应用托管环境配置的控制。
基础设施即服务(IaaS):提供给消耗方的能力是供应消耗方能够部署和运行可以包括操作系统和应用的任意软件的处理、存储、网络和其他基本计算资源。消耗方不管理或控制底层云基础设施,但是具有对操作系统、存储装置、所部署的应用的控制,以及可能地对选择联网组件(例如,主机防火墙)的有限的控制。
部署模型如下:
私有云:云基础设施仅为组织被操作。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
社区云:云基础设施由若干组织共享并且支持具有共享的关注(例如,任务、安全性要求、策略和合规性考虑)的特定社区。它可由组织或第三方管理,并且可以存在于驻地或驻地外。
公共云:使云基础设施对公众或大型产业组可用并且由销售云服务的组织拥有。
混合云:云基础架构是两个或更多个云(私有、社区或公共的)的组合,这些云保持独特的实体,但是通过标准化或专有技术被绑定在一起,这些技术实现数据和应用可移植性(例如,用于云之间的负载平衡的云爆发)。
云计算环境是面向服务的,关注于无状态性、低耦合性、模块性和语义互操作性。云计算的核心是包括互连节点网络的基础设施。
现在参考图6,说明性云计算网络(600)。如图所示,云计算网络(600)包括具有一个或多个云计算节点(610)的云计算环境(650),云消耗方使用的本地计算设备可以与所述云计算节点通信。这些本地计算设备的示例包括但不限于个人数字助理(PDA)或蜂窝电话(654A)、台式计算机(654B)、膝上型计算机(654C)和/或汽车计算机系统(654N)。节点(610)内的个体节点还可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境(600)提供基础设施、平台和/或软件作为服务,云消耗方不需要为其维护本地计算设备上的资源。应当理解,图6中所示的计算设备(654A-N)的类型仅旨在说明,并且云计算环境(650)可以通过任何类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任何类型的计算机化设备通信。
现在参考图7,示出了由图6的云计算网络提供的一组功能抽象层(700)。应当预先理解,图7中所示的组件、层和功能仅旨在说明,并且实施例不限于此。如所描绘的,提供了以下层和对应的功能:硬件和软件层(710)、虚拟化层(720)、管理层(730)和工作负载层(740)。
硬件和软件层(710)包括硬件和软件组件。硬件组件的示例包括大型机,在一个示例中为系统;基于RISC(精简指令集计算机)架构的服务器,在一个示例中为IBM系统;IBM系统;IBM系统;存储设备;网络和联网组件。软件组件的示例包括网络应用服务器软件,在一个示例中为IBM应用服务器软件;以及数据库软件,在一个实例中为IBM数据库软件。(IBM、zSeries、pSeries、xSeries、BladeCerter、WebSphere和DB2是在全世界许多管辖区注册的国际商业机器公司的商标)。
虚拟化层(72)提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器;虚拟存储装置;虚拟网络,包括虚拟专用网络;虚拟应用和操作系统;以及虚拟客户端。
在一个示例中,管理层(730)可以提供以下功能:资源供应、计量和定价、用户门户、服务层管理、以及SLA规划和履行。资源供应提供了对被用来在云计算环境内执行任务的计算资源和其他资源的动态采购。计量和定价提供了在云计算环境中利用资源时的成本跟踪,以及针对这些资源的消耗开账单或开发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消耗方和任务提供身份验证,以及为数据和其他资源提供保护。用户门户为消耗方和系统管理员提供对云计算环境的访问。服务层管理提供云计算资源分配和管理,使得满足所需的服务层。服务层协议(SLA)规划和履行提供了云计算资源的预安排和采购,其中根据SLA来预计未来需求。
工作负载层(740)提供了可以利用云计算环境的功能性的示例。可以从该层提供的工作负载和功能的示例包括但不限于:地图绘制和导航;软件开发和生命周期管理;虚拟教室教育交付;数据分析处理;事务处理;以及流水线的自动和选择性优化。
尽管已经示出和描述了本实施例的具体实施例,但是对于本领域技术人员来说明显的是,基于本文教导,在不脱离本实施例及其更广泛方面的情况下,可以进行改变和修改。因此,所附权利要求将在其范围内涵盖在实施例的真实精神和范围内的所有这样的改变和修改。此外,应当理解,实施例仅由所附权利要求限定。本领域技术人员将理解,如果所引入的权利要求元素的具体数目是有意的,则这样的意图将在权利要求中明确地叙述,并且在没有这样的叙述的情况下,不存在这样的限制。对于非限制性示例,为了帮助理解,所附权利要求包含使用介绍性短语“至少一个”和“一个或多个”来介绍权利要求元素。然而,这种短语的使用不应被解释为暗示通过不定冠词“一”或“一个”引入权利要求元素将包含这种引入的权利要求元素的任何特定权利要求限制为仅包含一个这种元素的实施例,即使当同一权利要求包括引导性短语“一个或多个”或“至少一个”和不定冠词例如“一”或“一个”时;这同样适用于定冠词在权利要求中的使用。
本实施例可以是系统、方法和/或计算机程序产品。另外,本实施例的所选方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合软件和/或硬件方面的实施例的形式,这些实施例在本文中可以全部统称为“电路”、“模块”或“系统”。此外,本实施例的方面可以采取在计算机可读存储介质(或多个介质)中体现的计算机程序产品的形式,该计算机可读存储介质(或多个介质)上具有用于使处理器执行本实施例的方面的计算机可读程序指令。如此实施的所公开的系统、方法和/或计算机程序产品可操作用于改进AI平台的功能和操作,以基于通过学习依赖所标识的改变来自动地和选择性地优化DevOps流水线工件。
计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机盘,硬盘、动态或静态随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存),磁存储设备、便携式压缩盘只读存储器(CD-ROM),数字通用盘(DVD)、记忆棒、软盘、机械编码的设备(诸如穿孔卡片或者具有记录在其上的指令的凹槽中的凸起结构),以及前述各项的任何合适的组合。如本文中所使用的,计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
本文所述的计算机可读程序指令可以从计算机可读存储介质被下载到相应的计算/处理设备,或者经由网络(例如,互联网、局域网、广域网和/或无线网络)被下载到外部计算机或者外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并且转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本实施例的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据,或者以一种或多种编程语言的任何组合编写的源代码或目标代码,包括诸如Java、Smalltalk、C++等面向对象的编程语言,以及常规的过程式编程语言,诸如“C”编程语言或类似的编程语言。计算机可读程序指令可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器或服务器集群上执行。在后一种场景中,远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型的网络连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供方的互联网)。在一些实施例中,包括例如可编程逻辑电路装置、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路装置个性化,以便执行本实施例的方面。
本文中参考根据本施例的方法、装置(系统)和计算机程序产品的流程图说明和/或框图描述本实施例的方面。应当理解,流程图和/或框图的每个框以及流程图和/或框图中各个框的组合,都可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机的处理器,专用计算机或者其他可编程数据处理装置以产生机器,使得经由计算机的处理器或其他可编程数据处理装置执行的指令创建用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以被存储在可以引导计算机、可编程数据处理装置,和/或以特定方式起作用的其他设备的计算机可读存储介质中,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图中的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置、或者其他设备上,以使一系列操作步骤在计算机、其他可编程装置或者其他设备产生计算机实现的过程,使得在计算机、其他可编程装置或者其他设备上执行的指令实现流程图和/或框图中的一个或多个框中指定的功能/动作。
附图中的流程图和框图图示了根据本实施例的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能性和操作。对此,流程图或框图中的每个框可以标识模块、段或指令的一部分,其包括用于实现(多个)指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中所标注的功能可以不以图中所标注的顺序发生。例如,取决于所涉及的功能性,持续示出的两个框实际上可以基本同时执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,该基于专用硬件的系统执行指定的功能或动作或者执行专用硬件与计算机指令的组合。
应当理解,尽管为了说明的目的在此描述了具体实施例,但是在不脱离实施例的精神和范围的情况下可以进行各种修改。特别地,知识库可以是本地化的、远程的或跨多个系统分布的。因此,实施例的保护范围仅由所附权利要求及其等效物限定。
Claims (20)
1.一种计算机系统,包括:
处理单元,操作性地耦合到存储器;
人工智能(AI)平台,操作地耦合到所述处理单元,所述AI平台配置有一个或多个工具以支持用于软件开发和操作(DevOp)的持续集成和持续部署(CI/CD)流水线,所述一个或多个工具包括:
图管理器,用于基于两个或更多个应用工件来生成一个或多个依赖图;
机器学习(ML)管理器,操作性地耦合到所述图管理器,所述ML管理器利用ML模型来捕获一个或多个依赖图与一个或多个流水线工件之间的关系;
监视器,用于检测对所述应用工件中的所述一个或多个应用工件的改变,并且响应于所检测到的所述改变,所述ML管理器:
利用所捕获的所述关系来标识所检测到的所述改变对所述一个或多个流水线工件的影响;以及
响应于所标识的影响而选择性地优化所述流水线,
所述优化包括将与所标识的所述影响对应的映射的改变自动编码到所述流水线中;以及
所述处理单元用于执行经优化的所述流水线。
2.根据权利要求1所述的计算机系统,其中,标识所检测到的所述改变对一个或多个流水线工件的影响还包括:
所述ML管理器创建所述影响的度量,并且使用所述度量来预测所述流水线中的应用工件改变的后果。
3.根据权利要求1所述的计算机系统,还包括用于捕获经优化的所述流水线中的任何依赖模式的反馈管理器。
4.根据权利要求3所述的计算机系统,还包括所述反馈管理器采用主动学习方法来捕获实时数据和实时数据反馈,以及采用所捕获的数据来训练所述ML模型。
5.根据权利要求1所述的计算机系统,其中所述应用工件包括源代码、测试代码、应用编程接口(API)规范、配置、部署脚本、或者其组合。
6.根据权利要求1所述的计算机系统,其中所述一个或多个依赖图与一个或多个流水线工件之间的所捕获的所述关系表示所述应用工件与所述一个或多个流水线工件之间的影响依赖。
7.根据权利要求1所述的计算机系统,其中所述一个或多个流水线工件中的每个流水线工件具有对应的依赖图。
8.一种支持用于软件开发和操作(DevOp)的持续集成和持续部署(CI/CD)流水线的计算机程序产品,所述计算机程序产品包括具有随其体现的程序代码的计算机可读存储介质,所述程序代码由处理器可执行以:
基于两个或更多个应用工件来生成一个或多个依赖图;
采用机器学习(ML)模型来捕获所述一个或多个依赖图与一个或多个流水线工件之间的关系;
检测对所述一个或多个应用工件的改变,并且响应于所检测到的所述改变,所述ML模型:
利用所捕获的所述关系来标识所检测到的所述改变对所述一个或多个流水线工件的影响;以及
响应于所标识的所述影响而选择性地优化所述流水线,所述优化包括将与所标识的所述影响对应的映射的改变自动编码到所述流水线中;以及
执行经优化的所述流水线。
9.根据权利要求8所述的计算机程序产品,其中标识所检测到的所述改变对所述一个或多个流水线工件的所述影响还包括程序代码以:
创建所述影响的度量,并且使用所述度量来预测所述流水线中的应用工件改变的后果。
10.根据权利要求8所述的计算机程序产品,还包括用于捕获所述经优化的所述流水线中的任何依赖模式的程序代码。
11.根据权利要求10所述的计算机程序产品,还包括用与采用主动学习方法来捕获实时数据和实时数据反馈、以及采用所捕获的数据来训练所述ML模型的程序代码。
12.根据权利要求8所述的计算机程序产品,其中所述应用工件包括源代码、测试代码、应用编程接口(API)规范、配置、部署脚本、或者其组合。
13.根据权利要求8所述的计算机程序产品,其中所述应用工件包括源代码、测试代码、应用编程接口(API)规范、配置、部署脚本、或者其组合。
14.根据权利要求8所述的计算机程序产品,其中所述一个或多个依赖图与一个或多个流水线工件之间的所捕获的所述关系表示所述应用工件与所述一个或多个流水线工件之间的影响依赖。
15.根据权利要求8所述的计算机程序产品,其中所述一个或多个流水线工件中的每个流水线具有对应的依赖图。
16.一种方法,包括:
基于两个或更多个应用工件来生成一个或多个依赖图;
采用机器学习(ML)模型来捕获所述依赖图与一个或多个流水线工件之间的关系;
检测对所述应用工件中的一个或多个应用工件的改变,并且响应于所检测到的所述改变,所述ML模型:
利用所捕获的所述关系来标识所检测到的所述改变对所述一个或多个流水线工件的影响;以及
响应于所标识的所述影响而选择性地优化持续集成和持续部署(CI/CD)流水线,所述优化包括将与所标识的所述影响对应的映射的改变自动编码到所述流水线中;以及
执行经优化的所述流水线。
17.根据权利要求16所述的方法,其中标识所述检测到的所述改变对所述一个或多个流水线工件的影响还包括:所述ML模型创建所述影响的度量,并且使用所述度量来预测所述流水线中的应用工件改变的后果。
18.根据权利要求16所述的方法,还包括:捕获经优化的所述流水线中的任何依赖模式,以及采用主动学习方法来捕获实时数据和实时数据反馈,以及采用所捕获的数据来训练所述ML模型。
19.根据权利要求16所述的方法,其中所述应用工件包括源代码、测试代码、应用编程接口(API)规范、配置、部署脚本、或者其组合。
20.根据权利要求16所述的方法,其中所述一个或多个依赖图与一个或多个流水线工件之间的所捕获的所述关系表示所述应用工件与所述一个或多个流水线工件之间的影响依赖。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/877,599 US11144289B1 (en) | 2020-05-19 | 2020-05-19 | Dynamic automation of selection of pipeline artifacts |
US16/877,599 | 2020-05-19 | ||
PCT/CN2021/094329 WO2021233281A1 (en) | 2020-05-19 | 2021-05-18 | Dynamic automation of selection of pipeline artifacts |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115668129A true CN115668129A (zh) | 2023-01-31 |
Family
ID=78007786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180036221.2A Pending CN115668129A (zh) | 2020-05-19 | 2021-05-18 | 流水线工件选择的动态自动化 |
Country Status (10)
Country | Link |
---|---|
US (1) | US11144289B1 (zh) |
JP (1) | JP2023527700A (zh) |
KR (1) | KR20230002702A (zh) |
CN (1) | CN115668129A (zh) |
AU (1) | AU2021273796B2 (zh) |
CA (1) | CA3174819A1 (zh) |
DE (1) | DE112021002820T5 (zh) |
GB (1) | GB2610984A (zh) |
IL (1) | IL297210A (zh) |
WO (1) | WO2021233281A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11620454B2 (en) * | 2020-02-05 | 2023-04-04 | Hatha Systems, LLC | System and method for determining and representing a lineage of business terms and associated business rules within a software application |
US11915007B2 (en) * | 2021-06-08 | 2024-02-27 | Red Hat, Inc. | CI/CD pipeline to container conversion |
US12001327B2 (en) * | 2021-07-08 | 2024-06-04 | Red Hat, Inc. | Execution platform assignments in CI/CD systems |
US11645069B2 (en) * | 2021-08-26 | 2023-05-09 | International Business Machines Corporation | Synchronizing access controls for audited code development |
US11842188B2 (en) * | 2021-10-29 | 2023-12-12 | Red Hat, Inc. | Continuous integration and deployment pipeline selection based on dynamic mapping |
US20230379349A1 (en) * | 2022-05-17 | 2023-11-23 | Applied Research Associates, Inc. | Secure and repeatable deployment to an air-gapped system |
US11558254B1 (en) * | 2022-06-23 | 2023-01-17 | Kong Inc. | Configuration hash comparison |
US11758010B1 (en) * | 2022-09-14 | 2023-09-12 | International Business Machines Corporation | Transforming an application into a microservice architecture |
KR20240111068A (ko) | 2023-01-09 | 2024-07-16 | 주식회사 엘엑스세미콘 | 디스플레이 구동 장치 및 디스플레이 구동 방법 |
KR102688986B1 (ko) * | 2023-09-27 | 2024-07-26 | 주식회사 마키나락스 | 데이터 파이프-라인을 구성하는 방법 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070294364A1 (en) | 2006-06-15 | 2007-12-20 | International Business Machines Corporation | Management of composite software services |
US20130174124A1 (en) * | 2011-12-29 | 2013-07-04 | Christina Watters | Version numbering in single development and test environment |
US8745585B2 (en) * | 2011-12-29 | 2014-06-03 | Unisys Corporation | Meta-data for single development test environment |
EP2883143A4 (en) * | 2012-08-13 | 2016-05-11 | Hewlett Packard Development Co | PERFORMANCE TESTS IN A CONTINUOUS PIPE |
US9588876B2 (en) * | 2014-08-01 | 2017-03-07 | Microsoft Technology Licensing, Llc | Estimating likelihood of code changes introducing defects |
US9710258B2 (en) | 2015-05-27 | 2017-07-18 | International Business Machines Corporation | Identifying cause of incidents in the DevOps environment automatically |
US9612821B2 (en) | 2015-07-02 | 2017-04-04 | International Business Machines Corporation | Predicting the success of a continuous software deployment pipeline |
US10146673B2 (en) * | 2015-11-04 | 2018-12-04 | Sap Portals Israel Ltd. | Source code change resolver |
DE112016005867T5 (de) | 2015-12-21 | 2018-09-20 | Amazon Technologies, Inc. | Live-Pipeline-Vorlagen - Erstellung und Erweiterbarkeit der Vorlagen |
CN105631602A (zh) | 2016-01-11 | 2016-06-01 | 中国移动通信集团广东有限公司 | 一种基于DevOps的业务级运维平台 |
CN105976421B (zh) | 2016-04-21 | 2018-06-19 | 浙江大学 | 一种渲染程序的在线优化方法 |
US10120668B2 (en) | 2016-06-27 | 2018-11-06 | Vmware, Inc. | Optimizing resource usage and automating a development and operations deployment pipeline |
US20180032322A1 (en) | 2016-07-29 | 2018-02-01 | Hewlett Packard Enterprise Development Lp | Automated devops application deployment |
US10157052B2 (en) * | 2016-09-29 | 2018-12-18 | Sap Se | Software change management |
US20180130024A1 (en) | 2016-11-08 | 2018-05-10 | Facebook, Inc. | Systems and methods to identify resumes based on staged machine learning models |
CN106997297A (zh) | 2017-03-31 | 2017-08-01 | 广东亿迅科技有限公司 | 一种基于DevOps的软件开发管理平台及方法 |
US10977005B2 (en) | 2017-06-14 | 2021-04-13 | International Business Machines Corporation | Congnitive development of DevOps pipeline |
US10635566B1 (en) * | 2017-07-31 | 2020-04-28 | Cisco Technology, Inc. | Predicting code change impact within an integrated development environment |
US11449677B2 (en) | 2018-10-18 | 2022-09-20 | International Business Machines Corporation | Cognitive hierarchical content distribution |
CN109583839A (zh) | 2018-12-03 | 2019-04-05 | 广东鸭梨科技集团股份有限公司 | 一种基于DevOps的研发管理系统和方法 |
-
2020
- 2020-05-19 US US16/877,599 patent/US11144289B1/en active Active
-
2021
- 2021-05-18 JP JP2022568536A patent/JP2023527700A/ja active Pending
- 2021-05-18 IL IL297210A patent/IL297210A/en unknown
- 2021-05-18 DE DE112021002820.0T patent/DE112021002820T5/de active Pending
- 2021-05-18 AU AU2021273796A patent/AU2021273796B2/en active Active
- 2021-05-18 CA CA3174819A patent/CA3174819A1/en active Pending
- 2021-05-18 CN CN202180036221.2A patent/CN115668129A/zh active Pending
- 2021-05-18 KR KR1020227039671A patent/KR20230002702A/ko active Search and Examination
- 2021-05-18 GB GB2218625.8A patent/GB2610984A/en active Pending
- 2021-05-18 WO PCT/CN2021/094329 patent/WO2021233281A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
AU2021273796B2 (en) | 2023-07-20 |
CA3174819A1 (en) | 2021-11-25 |
US11144289B1 (en) | 2021-10-12 |
GB202218625D0 (en) | 2023-01-25 |
GB2610984A (en) | 2023-03-22 |
KR20230002702A (ko) | 2023-01-05 |
DE112021002820T5 (de) | 2023-04-20 |
JP2023527700A (ja) | 2023-06-30 |
WO2021233281A1 (en) | 2021-11-25 |
IL297210A (en) | 2022-12-01 |
AU2021273796A1 (en) | 2022-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2021273796B2 (en) | Dynamic automation of selection of pipeline artifacts | |
US11151024B2 (en) | Dynamic automation of DevOps pipeline vulnerability detecting and testing | |
US11386128B2 (en) | Automatic feature learning from a relational database for predictive modelling | |
US11915123B2 (en) | Fusing multimodal data using recurrent neural networks | |
US11176508B2 (en) | Minimizing compliance risk using machine learning techniques | |
US11429434B2 (en) | Elastic execution of machine learning workloads using application based profiling | |
US10671517B2 (en) | Generating mobile test sequences | |
US11100233B2 (en) | Optimizing operating system vulnerability analysis | |
US11568242B2 (en) | Optimization framework for real-time rendering of media using machine learning techniques | |
US11061739B2 (en) | Dynamic infrastructure management and processing | |
CN115427967A (zh) | 确定多变量时间序列数据依赖性 | |
US11972382B2 (en) | Root cause identification and analysis | |
US20230040564A1 (en) | Learning Causal Relationships | |
WO2021228036A1 (en) | Modification of codified infrastructure for orchestration in multi-cloud environment | |
JP2023036773A (ja) | データ処理方法、データ処理装置、電子機器、記憶媒体およびコンピュータプログラム | |
US11188317B2 (en) | Classical artificial intelligence (AI) and probability based code infusion | |
US20200410387A1 (en) | Minimizing Risk Using Machine Learning Techniques | |
US11614963B2 (en) | Machine learning based runtime optimization | |
US20230236922A1 (en) | Failure Prediction Using Informational Logs and Golden Signals | |
US20220122038A1 (en) | Process Version Control for Business Process Management | |
US11775655B2 (en) | Risk assessment of a container build | |
CN117716373A (zh) | 基于期望的度量值提供机器学习模型 | |
US11789774B2 (en) | Optimization of workload scheduling in a distributed shared resource environment | |
US20230177387A1 (en) | Metalearner for unsupervised automated machine learning | |
US20230169354A1 (en) | Annotation of a Machine Learning Pipeline with Operational Semantics to Support Distributed Lineage Tracking |
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 |