基于jenkins的任务构建方法、系统和存储介质与流程

文档序号:29157555发布日期:2022-03-08 21:49阅读:137来源:国知局
基于jenkins的任务构建方法、系统和存储介质与流程

1.本技术涉及计算机技术领域,特别是涉及一种基于jenkins的任务构建方法、系统和存储介质。


背景技术:

2.jenkins是一个广泛用于持续构建的可视化web工具业的服务交付,就是各种项目的"自动化"编译、打包、分发部署。自动化部署有很多优点,比如降低成本,提高生产力,高可用,更可靠,性能优化等,使用流水线任务实现这一流程在k8s服务部署得到了广泛应用,从原始代码的克隆,构建最后到生成镜像,部署成可用应用。目前icks的jenkins任务运行模式采用agent对应的slave节点启动任务pod,由master节点调度pod跟随流水线任务存在,任务结束,无论成功或者失败,都会自动销毁。
3.在本地执行mavenbuild命令时候,代码需要的依赖文件默认会在~/.m2/repository文件下面缓存一份,下一次的依赖默认会优先在本地缓存中查找。如果在本地缓存找不到,才会去配置的私服的地址拉取,这样大大优化了构建流程;在jenkins执行maven构建任务时候,也会在执行任务节点的pod的容器~/.m2/repository路径下生成缓存,但是由于jenkins中的任务pod生命周期是伴随任务的,一条流水线任务结束后,不管任务成功还是失败,对应的pod便会被销毁,因此即使依赖被缓存下来也不会被下一次执行使用,而是随着此次任务结束的pod的消亡而消亡。再次执行任务,在拉取依赖过程中会消耗很多时间和资源,为了解决这个问题,考虑使用这些缓存,将pod中生成的缓存文件通过存储卷共享的形式挂载到slave主机节点上。这样不管使用哪个流水线的任务或者被执行几次,都可以使用挂载到节点的存储卷缓存到主机节点,在拉取依赖时候优先使用缓存。但是这样还会出现一个问题:存储卷挂载会覆盖整个文件,而不是像传统复制粘贴一样,保存已有的而增加新增的依赖。这种全局覆盖的方式也不能达到高效利用缓存的效果。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种基于jenkins的任务构建方法、系统、存储介质。
5.一方面,提供一种基于jenkins的任务构建方法,所述方法包括:
6.从节点从主节点获取任务构建所需的缓存依赖文件;
7.任务构建从节点利用所述缓存依赖文件构建流水线任务,其中所述任务构建从节点为从节点中的一个。
8.在其中一个实施例中,从节点从主节点获取任务构建所需的缓存依赖文件,包括:
9.主节点与至少一个从节点通信,并监听从节点pod是否生成构建依赖包;
10.若是,则将各从节点构建依赖包同步至主节点中,并构建依赖库;
11.从节点从主节点的依赖库中获取任务构建所需的缓存依赖文件。
12.在其中一个实施例中,从节点从主节点的依赖库中获取任务构建所需的缓存依赖
文件,包括:
13.主节点将依赖库同步至各从节点的依赖缓存路径;
14.从节点从自身依赖缓存路径获取任务构建所需的缓存依赖文件。
15.在其中一个实施例中,任务构建从节点利用所述缓存依赖文件构建流水线任务,包括:
16.配置流水线任务流程,包括缓存依赖文件拉取地址;
17.获取任务构建所需的缓存依赖文件;
18.利用所述缓存依赖文件按照流水线任务流程执行构建任务。
19.在其中一个实施例中,获取缓存依赖文件,包括:
20.从自身依赖缓存路径获取任务构建所需的缓存依赖文件;
21.若自身依赖缓存路径中不存在任务构建所需的缓存依赖文件,则从配置的缓存依赖文件拉取地址拉取所需的缓存依赖文件。
22.在其中一个实施例中,任务构建从节点利用所述缓存依赖文件构建流水线任务,还包括:
23.构建任务完成后,触发主节点同步机制,更新主节点依赖库。
24.在其中一个实施例中,所述更新主节点依赖库包括:
25.将任务构建从节点在构建流水线任务中生成的新的缓存依赖文件同步至所述依赖库。
26.在其中一个实施例中,所述更新主节点依赖库还包括:
27.将任务构建从节点从配置的缓存依赖文件拉取地址拉取所需的缓存依赖文件更新至主节点依赖库。
28.另一方面,提供了一种基于jenkins的任务构建系统,所述系统包括主节点和至少一个从节点,其中:
29.主节点,用于与至少一个从节点通信,并监听从节点pod是否生成构建依赖包并从各从节点获取所述构建依赖包以构建依赖库;
30.从节点从主节点获取任务构建所需的缓存依赖文件;
31.任务构建从节点利用所述缓存依赖文件构建流水线任务,其中所述任务构建从节点为从节点中的一个。
32.再一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
33.从节点从主节点获取任务构建所需的缓存依赖文件;
34.任务构建从节点利用所述缓存依赖文件构建流水线任务,其中所述任务构建从节点为从节点中的一个。
35.上述基于jenkins的任务构建方法、系统和存储介质,通过主节点统一管理依赖包,保证任务节点和主节点中的依赖包始终保持一致;同时在任务节点的pod也可以使用依赖包,以提高构建拉取依赖效率。
附图说明
36.图1为一个实施例中基于jenkins的任务构建方法的应用环境图;
37.图2为一个实施例中基于jenkins的任务构建方法的流程示意图;
38.图3为一个实施例中基于jenkins的任务构建系统的结构框图;
39.图4为一个实施例中计算机设备的内部结构图。
具体实施方式
40.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
41.本技术提供的基于jenkins的任务构建方法,可以应用于如图1所示的应用环境中。其中,主节点(master)node1与多个从节点(slave)node2、node3、node4、node5连接并进行通信。主节点node1使用一种同步拉取以及分发装置,保证在主节点node1和各个执行流水线任务的从节点node2、node3、node4、node5存在相同并且最新最全的依赖包。主节点node1与任务节点通信,监控节点上面进行的流水线中的构建任务,实时同步从节点的挂载在pod中的~/.m2/repository的依赖,并分发到其他节点,保证依赖使用缓存的高效性。
42.在一个实施例中,如图2所示,提供了一种基于jenkins的任务构建方法,包括以下步骤:
43.s1,从节点从主节点获取任务构建所需的缓存依赖文件。
44.在一个实施例中,步骤s1包括:
45.s11,主节点与至少一个从节点通信,并监听从节点pod是否生成构建依赖包;
46.s12,若是,则将各从节点构建依赖包同步至主节点中,并构建依赖库;
47.s13,从节点从主节点的依赖库中获取任务构建所需的缓存依赖文件。
48.在一个实施例中,步骤s13包括:
49.s131,主节点将依赖库同步至各从节点的依赖缓存路径;
50.s132,从节点从自身依赖缓存路径获取任务构建所需的缓存依赖文件。
51.具体的,为了解决jenkins流水线中构建任务使用本地缓存的依赖,并且保证新缓存下来的依赖可以通过pod中的挂载卷保存到任务节点,同时同步到master节点。本技术主要是利用了存储卷挂载技术以及k8s中的list&&watch监听同步以及推送技术。
52.master节点与slave节点通信,通过list&&watch监听在slave节点的各个pod生成的构建依赖包(默认的依赖包都会缓存在对应pod的/root/.m2/repository中),将pod中的文件同步到master节点对应的文件中。master节点中的依赖文件会被整理,只会新增依赖包,而不会被覆盖。这样依赖库就会越来越全面。
53.master节点会同步最新缓存包到各个slave节点的/root/.m2/repository目录,在此节点上执行构建任务时,利用存储卷方式将依赖包挂载到pod中,实现依赖缓存的使用过程。
54.生成的新的缓存依赖包又会被master节点监听,更新到master节点。
55.依次循环,这样就可以实现依赖包缓存的使用,这种流程适用于maven和go以及其他构件流程需要依赖包的情况。
56.s2,任务构建从节点利用所述缓存依赖文件构建流水线任务,其中所述任务构建从节点为从节点中的一个。
57.在一个实施例中,步骤s2包括:
58.s21,配置流水线任务流程,包括缓存依赖文件拉取地址;
59.s22,获取任务构建所需的缓存依赖文件;
60.在一个实施例中,步骤s22包括:
61.s221,从自身依赖缓存路径获取任务构建所需的缓存依赖文件;
62.s222,若自身依赖缓存路径中不存在任务构建所需的缓存依赖文件,则从配置的缓存依赖文件拉取地址拉取所需的缓存依赖文件。
63.s23,利用所述缓存依赖文件按照流水线任务流程执行构建任务。
64.在一个实施例中,步骤s2还包括:
65.s24,构建任务完成后,触发主节点同步机制,更新主节点依赖库。
66.在一个实施例中,更新主节点依赖库包括:将任务构建从节点在构建流水线任务中生成的新的缓存依赖文件同步至所述依赖库。
67.在一个实施例中,更新主节点依赖库还包括:将任务构建从节点从配置的缓存依赖文件拉取地址拉取所需的缓存依赖文件更新至主节点依赖库。
68.具体的,任务构建从节点利用所述缓存依赖文件构建流水线任务主要包括以下步骤:
69.1.配置流水线任务
70.在流水线任务中配置任务流程,包括拉取代码,构建,生成镜像并推送,根据镜像生成部署应用流程。
71.2构建前任务
72.master节点同步缓存依赖数据,保证各个任务节点的缓存依赖是最新最全面的
73.3.构建任务
74.jenkins任务构建以存储卷形式挂载pod到任务节点的依赖缓存路径/root/.m2/repository;在执行构建命令时候,例如maven build,默认会优先使用缓存,如果缓存中不存在,再使用配置的私服地址进行拉取。
75.4.构建后任务
76.构建后的任务会触发master节点的同步机制,使得在任务节点构建任务pod中拉取的新的缓存依赖可以同步到master节点中,master节点会保证此次同步的新的数据也会同步到各个任务节点中。
77.上述基于jenkins的任务构建方法,可以实现:
78.(1)master节点统一管理依赖包,保证任务节点和master节点中的依赖包始终保持一致;同时在任务节点的pod也可以使用依赖包,以提高构建拉取依赖效率
79.(2)master节点监听在slave节点运行的pod中的构建过程,将新拉取的依赖包及时更新到对应节点的路径中缓存起来。同时利用list&&watch机制,同步新的依赖包到各个节点路径。
80.应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行
完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
81.在一个实施例中,如图3所示,提供了一种基于jenkins的任务构建系统,包括主节点和至少一个从节点,其中:
82.主节点,用于与至少一个从节点通信,并监听从节点pod是否生成构建依赖包并从各从节点获取所述构建依赖包以构建依赖库;
83.从节点从主节点获取任务构建所需的缓存依赖文件;
84.任务构建从节点利用所述缓存依赖文件构建流水线任务,其中所述任务构建从节点为从节点中的一个。
85.在一个实施例中,主节点用于与至少一个从节点通信,并监听从节点pod是否生成构建依赖包;
86.若是,则将各从节点构建依赖包同步至主节点中,并构建依赖库。
87.在一个实施例中,主节点用于将依赖库同步至各从节点的依赖缓存路径;从节点用于从自身依赖缓存路径获取任务构建所需的缓存依赖文件。
88.在一个实施例中,任务构建从节点用于:
89.配置流水线任务流程,包括缓存依赖文件拉取地址;
90.获取任务构建所需的缓存依赖文件;
91.利用所述缓存依赖文件按照流水线任务流程执行构建任务。
92.在一个实施例中,任务构建从节点用于:
93.从自身依赖缓存路径获取任务构建所需的缓存依赖文件;
94.若自身依赖缓存路径中不存在任务构建所需的缓存依赖文件,则从配置的缓存依赖文件拉取地址拉取所需的缓存依赖文件。
95.在一个实施例中,任务构建从节点用于:
96.构建任务完成后,触发主节点同步机制,更新主节点依赖库。
97.在一个实施例中,任务构建从节点用于:
98.将在构建流水线任务中生成的新的缓存依赖文件同步至主节点依赖库。
99.在一个实施例中,任务构建从节点用于:
100.将在构建流水线任务中从配置的缓存依赖文件拉取地址拉取所需的缓存依赖文件同步至主节点依赖库。
101.关于基于jenkins的任务构建系统的具体限定可以参见上文中对于基于jenkins的任务构建方法的限定,在此不再赘述。上述基于jenkins的任务构建系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
102.在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算
机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于jenkins的任务构建方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
103.本领域技术人员可以理解,图4中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
104.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
105.从节点从主节点获取任务构建所需的缓存依赖文件;
106.任务构建从节点利用所述缓存依赖文件构建流水线任务,其中所述任务构建从节点为从节点中的一个。
107.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
108.主节点与至少一个从节点通信,并监听从节点pod是否生成构建依赖包;
109.若是,则将各从节点构建依赖包同步至主节点中,并构建依赖库;
110.从节点从主节点的依赖库中获取任务构建所需的缓存依赖文件。
111.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
112.主节点将依赖库同步至各从节点的依赖缓存路径;
113.从节点从自身依赖缓存路径获取任务构建所需的缓存依赖文件。
114.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
115.配置流水线任务流程,包括缓存依赖文件拉取地址;
116.获取任务构建所需的缓存依赖文件;
117.利用所述缓存依赖文件按照流水线任务流程执行构建任务。
118.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
119.从自身依赖缓存路径获取任务构建所需的缓存依赖文件;
120.若自身依赖缓存路径中不存在任务构建所需的缓存依赖文件,则从配置的缓存依赖文件拉取地址拉取所需的缓存依赖文件。
121.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
122.构建任务完成后,触发主节点同步机制,更新主节点依赖库。
123.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
124.将任务构建从节点在构建流水线任务中生成的新的缓存依赖文件同步至所述依赖库。
125.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
126.将任务构建从节点从配置的缓存依赖文件拉取地址拉取所需的缓存依赖文件更新至主节点依赖库。
127.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
128.从节点从主节点获取任务构建所需的缓存依赖文件;
129.任务构建从节点利用所述缓存依赖文件构建流水线任务,其中所述任务构建从节
点为从节点中的一个。
130.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
131.主节点与至少一个从节点通信,并监听从节点pod是否生成构建依赖包;
132.若是,则将各从节点构建依赖包同步至主节点中,并构建依赖库;
133.从节点从主节点的依赖库中获取任务构建所需的缓存依赖文件。
134.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
135.主节点将依赖库同步至各从节点的依赖缓存路径;
136.从节点从自身依赖缓存路径获取任务构建所需的缓存依赖文件。
137.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
138.配置流水线任务流程,包括缓存依赖文件拉取地址;
139.获取任务构建所需的缓存依赖文件;
140.利用所述缓存依赖文件按照流水线任务流程执行构建任务。
141.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
142.从自身依赖缓存路径获取任务构建所需的缓存依赖文件;
143.若自身依赖缓存路径中不存在任务构建所需的缓存依赖文件,则从配置的缓存依赖文件拉取地址拉取所需的缓存依赖文件。
144.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
145.构建任务完成后,触发主节点同步机制,更新主节点依赖库。
146.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
147.将任务构建从节点在构建流水线任务中生成的新的缓存依赖文件同步至所述依赖库。
148.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
149.将任务构建从节点从配置的缓存依赖文件拉取地址拉取所需的缓存依赖文件更新至主节点依赖库。
150.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
151.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
152.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来
说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1