一种软件构建发布装置的设计和实现方法、系统及终端与流程
未命名
09-22
阅读:104
评论:0
1.本发明属于devops技术领域,尤其涉及一种软件构建发布装置的设计和实现方法、系统及终端。
背景技术:
2.devops(development和operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(qa)部门之间的沟通、协作与整合。随着devops的发展,大多数企业采用devops理念通过ci/cd工具实现软件构建发布一体化,提高软件研发效率。
3.现有的ci/cd工具需要用户定义软件构建发布的整个流程,管理项目之间的依赖关系和发布顺序,同时需要编写编译指令、镜像构建指令和发布指令,难度较大。而大中型项目往往包含多个子项目,项目之间的依赖复杂,因依赖不满足导致编译失败或因指令编写错误导致镜像构建失败等问题时有出现,影响了项目的发布进度。
4.现在大部分企业采用ci/cd工具进行软件的构建和发布,采用ci/cd工具进行软件构建发布的一般流程是:1、拉取代码,根据代码库的url、代码分支、用户等信息拉取项目源代码。
5.2、编译构建,生成构建包,比如java项目会生成jar包或war包,编译过程所需的依赖包从依赖库获取。
6.3、构建镜像,将镜像上传到镜像库。
7.4、软件发布,将镜像进行容器化部署。
8.用户需要按照ci/cd工具的要求将每个步骤定义成任务,由ci/cd工具通过任务的编排完成项目的构建发布。目前被广泛使用的ci/cd工具包括jenkins、tekton等。jenkins提供jenkinsfile脚本文件和可视化界面2种方式定义构建发布流程。tekton不提供可视化界面,只能编写yaml文件完成流程定义。
9.这两种工具需要用户定义构建发布流程的每一个步骤,包括定义代码拉取任务、定义编译任务、定义镜像构建任务、定义部署任务等,定义内容包含任务执行的容器、指令等信息。对于包含多个子项目的情况,需要用户管理子项目的构建顺序,按顺序编写构建脚本,并管理依赖关系,确保被依赖的子项目可以从依赖库获取包。对于流程的审批,jenkins只提供了邮件审批功能,并且只是对整个构建流程是否通过的审批,tekton不支持流程审批功能,需要用户自行实现。
10.而且,以jenkins、tekton等为代表的传统的ci/cd工具存在以下一些缺点:1、需要用户维护子项目之间的依赖关系,确定构建顺序,增加了构建发布的复杂度。
11.2、需要用户编写构建命令和发布指令,增加了构建发布的难度。
12.3、发布的过程缺少审核或者审核粒度太粗。
技术实现要素:
13.本发明提供一种软件构建发布装置的设计和实现方法,方法可以自动分析项目依赖,根据依赖关系自动生成项目构建发布流程,用户只需要配置代码源、依赖库、镜像库、发布环境等信息即可完成软件的构建发布,无需手工定义构建发布流程,降低了软件构建发布的复杂度和难度。
14.软件构建发布装置的设计和实现方法包括:步骤1、根据用户配置的代码库解析各项目之间的依赖关系,生成依赖关系图,确定项目的构建顺序;步骤2、解析依赖解析模块生成的依赖关系图,并构建结果入依赖库和镜像库;步骤3、开启对发布流程的审批,针对开发、测试、生产不同的发布环境配置相应的审批流程;步骤4、在预设的环境进行部署。
15.进一步需要说明的是,步骤1还包括:用户配置的代码库拉取项目源代码进行解析,识别项目名称、程序语言及版本、使用的依赖管理模块信息;根据依赖配置文件,识别子项目及其依赖关系,并标识子项目是否可运行。
16.进一步需要说明的是,步骤1中,如用户配置多个代码库,则逐个进行解析项目间依赖,最后生成依赖关系图。
17.进一步需要说明的是,步骤1中,依赖关系图采用dag图的形式展示。
18.进一步需要说明的是,步骤2还包括:步骤21:获取dag图中入度为0的节点;步骤22:对所有入度为0的节点并行执行构建进程;步骤23:判断dag图中所有节点是否全部构建完毕,如果是则流程结束,否则执行步骤24;步骤24:获取待构建节点列表;步骤25:判断待构建节点列表是否为空,列表为空则说明全部节点构建完毕,流程结束,否则执行步骤26;步骤26:从待构建节点列表中取出一个节点,判断是否满足构建条件,满足构建条件则执行构建,否则回到步骤25;如无依赖或者依赖已经全部构建完成的节点被视为满足构建条件。
19.进一步需要说明的是,步骤3中,构建流程生成发布清单,发布清单包括:发布环境和待发布项目列表;待发布项目列表包括:项目名称、发布版本号、源码分支以及镜像名。
20.本发明还提供一种软件构建发布装置的设计和实现系统,系统包括:依赖解析模块、构建模块、发布审批模块和部署模块;依赖解析模块用于根据用户配置的代码库解析各项目之间的依赖关系,生成依赖关系图,确定项目的构建顺序;构建模块用于解析依赖解析模块生成的依赖关系图,并执行构建过程,构建结果入依赖库和镜像库;发布审批模块用于开启对发布流程的审批,针对开发、测试、生产不同的发布环境配置相应的审批流程;
部署模块用于在预设的环境进行部署。
21.进一步需要说明的是,部署模块内置有版本号规则,其中,部署模块根据版本号规则生成发布的版本号,部署模块还支持用户自定义版本号生成规则,通过发布清单对项目发布的版本进行管理和追溯。
22.本发明还提供一种终端,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,处理器执行所述程序时实现软件构建发布装置的设计和实现方法的步骤。
23.从以上技术方案可以看出,本发明具有以下优点:本发明提供的软件构建发布装置的设计和实现方法,自动分析项目依赖,根据依赖关系自动生成项目构建发布流程,用户只需要配置代码源、依赖库、镜像库、发布环境等信息即可完成软件的构建发布,无需手工定义构建发布流程,降低了软件构建发布的复杂度和难度。
24.本发明的方法通过发布清单可以对项目发布版本进行管理,便于问题追溯。通过发布流程审批可以对发布过程进行细粒度控制,使项目发布更灵活。
附图说明
25.为了更清楚地说明本发明的技术方案,下面将对描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
26.图1为软件构建发布装置的设计和实现方法流程图;图2为依赖关系图;图3为基于项目关系解析生成的dag图;图4为解析构建流程图;图5为执行构建流程图;图6为软件构建发布装置的设计和实现系统示意图。
具体实施方式
27.本发明提供的软件构建发布装置的设计和实现方法主要是为了解决以jenkins、tekton等为代表的传统的ci/cd工具在进行设计和实现过程中,需要用户维护子项目之间的依赖关系,确定构建顺序,增加了构建发布的复杂度的问题。还解决需要用户编写构建命令和发布指令,增加了构建发布的难度的问题。
28.基于上述问题本发明根据用户配置的代码库获取项目代码。分析项目之间的依赖关系,生成依赖关系图。再根据依赖关系图执行项目构建,并生成待发布清单。最后,按照发布审批配置进行发布审批,根据审批结果进行项目发布。
29.这样,自动分析项目依赖,根据依赖关系自动生成项目构建发布流程,用户只需要配置代码源、依赖库、镜像库、发布环境等信息即可完成软件的构建发布,无需手工定义构建发布流程,降低了软件构建发布的复杂度和难度。
30.对于本发明中的相关术语解释:devops:是一种重视“软件开发人员(dev)”和“it运维技术人员(ops)”之间沟通合
作的文化、运动或惯例,是一组过程、方法与系统的统称。
31.ci/cd:continuous integration/continuous delivery,持续集成/持续交付,将软件以快速、自动化和可重复的方式从源代码生成发布版本。
32.jenkins:基于java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。
33.tekton:一个基于kubernetes的云原生ci/cd框架,允许开发者跨多云环境进行构建、测试和发布应用。
34.yaml:是一个可读性高,用来表达数据序列化的格式。
35.dag:directed acyclic graph,即有向无环图,由有限个顶点和有向边组成,每条有向边都从一个顶点指向另一个顶点;从任意一个顶点出发都不能通过这些有向边回到原来的顶点。
36.入度:有向图中,顶点的入度表示有多少条边指向该顶点。
37.出度:有向图中,顶点的出度表示有多少条边是以这个顶点为起点指向其他顶点。
38.如图1示出了本发明的软件构建发布装置的设计和实现方法的较佳实施例的流程图。软件构建发布装置的设计和实现方法应用于一个或者多个终端中,所述终端是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(application specificintegratedcircuit,asic)、可编程门阵列(field-programmablegate array,fpga)、数字处理器(digitalsignalprocessor,dsp)、嵌入式设备等。
39.终端可以是任何一种可与用户进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(personaldigitalassistant,pda)、交互式网络电视(internetprotocoltelevision,iptv)、智能式穿戴式设备等。
40.终端还可以包括网络设备和/或用户设备。其中,所述网络设备包括,但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(cloudcomputing)的由大量主机或网络服务器构成的云。
41.终端所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络(virtualprivatenetwork,vpn)等。
42.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
43.请参阅图1至5所示是一具体实施例中软件构建发布装置的设计和实现方法的流程图,方法包括:s101、根据用户配置的代码库解析各项目之间的依赖关系,生成依赖关系图,确定项目的构建顺序;在一个示例性实施例中,如图2所示,根据用户配置的代码库拉取项目源代码进行解析,识别项目名称、程序语言及版本、使用的依赖管理模块等信息,然后根据依赖配置文件,识别子项目及其依赖关系,并标识子项目是否可运行。
44.可选地,如果用户配置了多个代码库,则进一步解析项目间依赖,最后生成完整的
依赖关系图。
45.如图3所示,本实施例中的依赖关系图采用dag图的形式定义,图中的节点表示项目,图中的边表示项目之间的依赖关系。
46.具体的讲,假设用户配置了2个代码库:项目1和项目2,其中,项目2包含子项目1、子项目2、子项目3和子项目4,其中子项目1是基础服务,子项目2、子项目3和子项目4都依赖于子项目1;项目1包含子项目a、子项目b,子项目c和子项目d,其中子项目a是基础服务,子项目b、子项目c和子项目d都依赖于子项目a,同时子项目d还依赖于子项目c和项目2的子项目2。依赖解析模块根据上述项目关系解析生成的dag图2所示的逻辑关系。
47.s102、解析依赖解析模块生成的依赖关系图,并构建结果入依赖库和镜像库。
48.如图4和图5所示,本实施例中,解析dag图,完成项目构建。具体解析构建流程如下所示。
49.s1021、获取dag图中入度为0的节点,入度为0说明不依赖其他子项目。
50.s1022、对所有入度为0的节点并行执行构建。
51.s1023、判断dag图中所有节点是否全部构建完毕,如果是则流程结束,否则执行步骤s1024。
52.s1024、获取待构建节点列表。
53.s1025、判断待构建节点列表是否为空,列表为空则说明全部节点构建完毕,流程结束,否则执行步骤s1026。
54.s1026、从待构建节点列表中取出一个节点,判断是否满足构建条件,满足构建条件则执行构建,否则回到步骤s1025。没有依赖或者依赖已经全部构建完成的节点被视为满足构建条件。
55.根据本技术的实施例,基于上述解析dag图,完成项目构建中,还涉及执行构建流程,具体执行步骤如下所示。
56.(1)、判断节点出度是否大于0,如果大于0,则编译项目并将编译包存入依赖库,否则执行步骤(2)。出度大于0说明该节点被其他节点依赖。
57.(2)、判断节点是否是可独立运行项目,如果是,执行步骤(3),否则流程结束。可独立运行项目是发布的最小单元。
58.(3)、构建镜像并存入镜像库。
59.s103、开启对发布流程的审批,针对开发、测试、生产不同的发布环境配置相应的审批流程;s104、在预设的环境进行部署。
60.基于上述软件构建发布装置的设计和实现方法,使得无需用户创建构建发布流程,简化软件构建发布过程。而且哈可以自动识别程序语言及版本,无需用户配置构建命令和编写镜像构建文件,降低了软件构建发布难度。本发明的方法通过发布清单可以对项目发布版本进行管理,便于问题追溯。通过发布流程审批可以对发布过程进行细粒度控制,使项目发布更灵活。
61.以下是本公开实施例提供的软件构建发布装置的设计和实现系统的实施例,该系统与上述各实施例的软件构建发布装置的设计和实现方法属于同一个发明构思,在软件构建发布装置的设计和实现系统的实施例中未详尽描述的细节内容,可以参考上述软件构建
发布装置的设计和实现方法的实施例。
62.如图6所示,系统包括:依赖解析模块、构建模块、发布审批模块和部署模块;依赖解析模块用于根据用户配置的代码库解析各项目之间的依赖关系,生成依赖关系图,确定项目的构建顺序;构建模块用于解析依赖解析模块生成的依赖关系图,并执行构建过程,构建结果入依赖库和镜像库;发布审批模块用于开启对发布流程的审批,针对开发、测试、生产不同的发布环境配置相应的审批流程;部署模块用于在预设的环境进行部署。
63.在一个示例性实施例中,部署模块根据构建流程生成发布清单,发布清单包括发布环境和待发布项目列表,待发布项目列表包括项目名称、发布版本号、源码分支、镜像名等内容。部署模块内置版本号规则,发布版本号由部署模块根据规则自动生成,支持用户自定义版本号生成规则。通过发布清单可以对项目的发布版本进行管理和追溯。
64.部署模块还可以配置发布流程是否开启发布审批,发布审批模块支持根据不同的发布环境配置不同的审批流程,包括审批环节、审批角色、审批人等信息,支持非全量发布即只发布部分子项目。
65.本发明的系统可以进行软件构建并通过界面配置代码库、依赖库、镜像库、发布环境信息;如果需要开启发布审批,通过界面配置审批流程;再通过界面点击构建发布。这样,用户只需配置代码库、依赖库、镜像库和运行环境,无需定义构建发布流程即可完成项目构建发布。系统还支持父子项目及多项目间的依赖管理和自动构建。并通过dag图的方式实现依赖管理,控制构建执行顺序。自动识别项目程序语言及版本,自动编译和构建镜像。通过发布清单对版本进行管理和追溯。系统可以针对不同发布环境配置发布审批流程,包括审批环节、审批角色、审批人等,并可选择发布项目。
66.本发明提供的软件构建发布装置的设计和实现方法中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
67.软件构建发布装置的设计和实现方法的流程图和框图,图示了按照本公开各种实施例的设备、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。示例性的讲,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
68.在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以
通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
69.在本发明的软件构建发布装置的设计和实现方法中,可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。
70.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
技术特征:
1.一种软件构建发布装置的设计和实现方法,其特征在于,方法包括:步骤1、根据用户配置的代码库解析各项目之间的依赖关系,生成依赖关系图,确定项目的构建顺序;步骤2、解析依赖解析模块生成的依赖关系图,并构建结果入依赖库和镜像库;步骤3、开启对发布流程的审批,针对开发、测试、生产不同的发布环境配置相应的审批流程;步骤4、在预设的环境进行部署。2.根据权利要求1所述的软件构建发布装置的设计和实现方法,其特征在于,步骤1还包括:用户配置的代码库拉取项目源代码进行解析,识别项目名称、程序语言及版本、使用的依赖管理模块信息;根据依赖配置文件,识别子项目及其依赖关系,并标识子项目是否可运行。3.根据权利要求2所述的软件构建发布装置的设计和实现方法,其特征在于,步骤1中,如用户配置多个代码库,则逐个进行解析项目间依赖,最后生成依赖关系图。4.根据权利要求3所述的软件构建发布装置的设计和实现方法,其特征在于,步骤1中,依赖关系图采用dag图的形式展示。5.根据权利要求4所述的软件构建发布装置的设计和实现方法,其特征在于,步骤2还包括:步骤21:获取dag图中入度为0的节点;步骤22:对所有入度为0的节点并行执行构建进程;步骤23:判断dag图中所有节点是否全部构建完毕,如果是则流程结束,否则执行步骤24;步骤24:获取待构建节点列表;步骤25:判断待构建节点列表是否为空,列表为空则说明全部节点构建完毕,流程结束,否则执行步骤26;步骤26:从待构建节点列表中取出一个节点,判断是否满足构建条件,满足构建条件则执行构建,否则回到步骤25;如无依赖或者依赖已经全部构建完成的节点被视为满足构建条件。6.根据权利要求1所述的软件构建发布装置的设计和实现方法,其特征在于,步骤3中,构建流程生成发布清单,发布清单包括:发布环境和待发布项目列表;待发布项目列表包括:项目名称、发布版本号、源码分支以及镜像名。7.一种软件构建发布装置的设计和实现系统,其特征在于,系统采用如权利要求1至6任意一项所述的软件构建发布装置的设计和实现方法;系统包括:依赖解析模块、构建模块、发布审批模块和部署模块;依赖解析模块用于根据用户配置的代码库解析各项目之间的依赖关系,生成依赖关系图,确定项目的构建顺序;构建模块用于解析依赖解析模块生成的依赖关系图,并执行构建过程,构建结果入依赖库和镜像库;发布审批模块用于开启对发布流程的审批,针对开发、测试、生产不同的发布环境配置相应的审批流程;
部署模块用于在预设的环境进行部署。8.根据权利要求7所述的软件构建发布装置的设计和实现系统,其特征在于,部署模块内置有版本号规则,其中,部署模块根据版本号规则生成发布的版本号,部署模块还支持用户自定义版本号生成规则,通过发布清单对项目发布的版本进行管理和追溯。9.一种终端,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述软件构建发布装置的设计和实现方法的步骤。
技术总结
本发明提供一种软件构建发布装置的设计和实现方法、系统及终端,属于DevOps技术领域,根据用户配置的代码库解析各项目之间的依赖关系,生成依赖关系图,确定项目的构建顺序;解析依赖解析模块生成的依赖关系图,并构建结果入依赖库和镜像库;开启对发布流程的审批,针对开发、测试、生产不同的发布环境配置相应的审批流程;在预设的环境进行部署。系统自动分析项目依赖生成项目构建发布流程,用户只需要配置代码库、依赖库、镜像库、发布环境等信息即可完成软件的构建发布,降低了软件构建发布的复杂度和难度。复杂度和难度。复杂度和难度。
技术研发人员:张晶 刘泽三 刘歆一 王琰洁 陈刚 赵武博文 詹克兴 张攀 高莹 孙璐 李杉 王颖
受保护的技术使用者:国网辽宁省电力有限公司本溪供电公司
技术研发日:2023.08.23
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
