一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

产品自动组包方法及系统与流程

2021-12-04 02:21:00 来源:中国专利 TAG:


1.本发明涉及分布式技术领域,尤其涉及一种产品自动组包方法及系统。


背景技术:

2.目前互联网行业(特别是小公司)普遍使用jenkins作为自动构建、部署的工具,部署的对象(粒度)通常是每个模块打出的jar包/war包。然而,在银行等大型企业中存在以下问题:
3.第一,在银行大型企业中,通常只在开发环境才允许使用轻量的开源工具jenkins作为部署工具,在生产环境需使用自研的自动部署平台,来满足复杂的权限管理以及自主可控的要求。自动部署平台的版本包输入是一个产品级的、包含产品下所有模块的“安装包”,因此仅靠maven等工具构建出来的包无法直接对接自动部署平台,需要在各个模块包的基础上进一步封装。
4.第二,大型企业通常有较为严格的版本管理要求,有专门的版本管理系统,该系统管理的对象也是以一个“产品”为单位出的版本包;同时,一般要求除第一次是全量版本外,之后版本采用增量方式出增量包。
5.在这种场景下,如何能快速、精准地组出一个符合自动化部署系统要求的全量/增量包,是需要解决的问题。传统的手工组包方式既繁琐又易出错,而且缺乏对软件包进行有效的质量把控(未通过代码质量扫描的也能组出软件包并出版本)。


技术实现要素:

6.本发明实施例提出一种产品自动组包方法,用以实现对产品进行自动组包,准确度高且效率高,该方法包括:
7.拉取目标产品的每个模块的源代码;
8.对每个模块的源代码进行编译和打包,形成多个模块级制品包;
9.执行自动组包脚本,获得目标产品的安装包,所述自动组包脚本在执行时,将多个模块级制品包解压汇总为新全量包,将所述新全量包与基准包进行比对,获得目标产品的安装包。
10.本发明实施例提出一种产品自动组包系统,用以实现对产品进行自动组包,准确度高且效率高,该系统包括:
11.源代码获取模块,用于拉取目标产品的每个模块的源代码;
12.模块级制品包获得模块,用于对每个模块的源代码进行编译和打包,形成多个模块级制品包;
13.自动组包脚本执行模块,用于执行自动组包脚本,获得目标产品的安装包,所述自动组包脚本在执行时,将多个模块级制品包解压汇总为新全量包,将所述新全量包与基准包进行比对,获得目标产品的安装包。
14.本发明实施例还提出了一种计算机设备,包括存储器、处理器及存储在存储器上
并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述产品自动组包方法。
15.本发明实施例还提出了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述产品自动组包方法的计算机程序。
16.在本发明实施例中,拉取目标产品的每个模块的源代码;对每个模块的源代码进行编译和打包,形成多个模块级制品包;执行自动组包脚本,获得目标产品的安装包,所述自动组包脚本在执行时,将多个模块级制品包解压汇总为新全量包,将所述新全量包与基准包进行比对,获得目标产品的安装包。在上述过程中,可实现自动组包,效率高,另外减少了手工组包导致的可能环境因素、操作因素引起的产品问题,准确度高。
附图说明
17.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
18.图1为本发明实施例中产品自动组包方法的流程图;
19.图2为本发明实施例中自动组包流水线的示意图;
20.图3为本发明实施例中流水线上各个步骤调用关系示意图;
21.图4为本发明实施例中自动组包的流程图;
22.图5为本发明实施例中将新增量包与所述基准包进行比对的原理图;
23.图6为本发明实施例中将新增量包与所述基准包进行比对的示意图;
24.图7为本发明实施例中模块md5比对的流程示意图;
25.图8为本发明实施例中产品自动组包系统的示意图;
26.图9为本发明实施例中产品自动组包系统的另一示意图;
27.图10为本发明实施例中产品自动组包系统的另一示意图;
28.图11为本发明实施例中计算机设备的示意图。
具体实施方式
29.为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
30.在本说明书的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本技术的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
31.首先,对本发明实施例中涉及到的术语进行解释。
32.安装包:指包含项目应用的bin码、sql脚本、挡板程序和相关文档等的集合,一般以压缩包的形式存在和管理,有唯一的版本号。安装包是自动部署系统的输入单元,一个安装包下可包含多个模块。
33.模块:模块是安装包内部的最小独立部署单元,也是自动部署系统对应操作的最小单位,一般以*.zip或*.war的形式存在。
34.产品:可独立对外提供功能或服务的一个系统。一个产品通常包含多个模块,出版本时,一个产品对应出一个安装包。
35.自动组包:本发明所提到的组包,指将产品下的多个模块分别构建的产物汇总打包组出一个产品级的“安装包”的过程,该过程可根据是否存在基线,决定组出的包是全量包/增量包。自动组包即上述过程的自动化实现。
36.基准包:组增量包时,对比增量文件依据的全量包。基准包由用户在界面中通过“标记基线”功能来指定。
37.新全量包:jenkins构建产生的多个模块包组成的全量包,用于和基准包对比产生增量包。
38.增量包:通过新全量包和基准包比对产生的增量包。注:全量包和增量包都是安装包的一种,是自动部署系统的输入单元。
39.自动化部署系统(sadp,software automatic deploy platform):企业自研的自动化部署平台,输入是安装包、服务器(组)、安装包内模块和部署服务器的对应关系,平台能根据这些输入自动将安装包内的各个模块部署到指定的一台或多台服务器上,并完成参数客户化。
40.制品库:用于存放构建产物的统一仓库,本发明中指jfrog artifactory。(在未使用制品库之前,使用ftp来存放构建产物)
41.质量门:各产品根据实际情况对各项代码质量指标(如单元测试成功率、覆盖率等)设置的阈值,当不达标时让流水线失败或触发通知提醒。
42.流水线(jenkins pipeline):是jenkins中的一组插件,通过pipeline可以定义一个流程,包含多个stage,每个stage完成一件事情,从而实现一套自动化ci/cd流程。
43.图1为本发明实施例中产品自动组包方法的流程图,如图1所示,包括:
44.步骤101,拉取目标产品的每个模块的源代码;
45.步骤102,对每个模块的源代码进行编译和打包,形成多个模块级制品包;
46.步骤103,执行自动组包脚本,获得目标产品的安装包,所述自动组包脚本在执行时,将多个模块级制品包解压汇总为新全量包,将所述新全量包与基准包进行比对,获得目标产品的安装包。
47.具体实施时,本发明实施例提出的方法可在自动组包流水线上进行。图2为本发明实施例中自动组包流水线的示意图。可通过编写jenkins file来定义jenkins中的一条流水线(jenkins pipeline),该流水线可实现多个模块的并行进行,流水线的环节(stage)包括多个,图2给出了3个模块并行进行流水的示意图。jenkins负责统一调度,在jenkins pipeline的各步骤分别调用不同的工具完成相应功能,图3为本发明实施例中流水线上各个步骤调用关系示意图。其中,步骤101对应图2中的拉取源码。可调用源代码管理仓库。其中,tgit是一个企业级源代码管理仓库。
48.在一实施例中,拉取目标产品的每个模块的源代码,包括:
49.根据用户配置的仓库地址和分支,从源代码管理仓库拉取目标产品的每个模块的源代码。
50.图1中的步骤102对应图2中的构建,在图3中,可调用maven/npm/ant等构建工具,具体使用哪个构建工具,可根据用户的选择来定,制品包通常为war包或jar包。
51.在一实施例中,在执行自动组包脚本之前,还包括:
52.对多个模块级制品包进行代码质量检查,获得质量检查结果;
53.执行自动组包脚本,包括:
54.在所述质量检查结果未超过质量阈值时,执行自动组包脚本。
55.在一实施例中,对多个模块级制品包进行代码质量检查,获得质量检查结果,包括:
56.对多个模块级制品包进行代码质量扫描,获得质量数据;
57.对质量数据进行质量门判断,获得质量检查结果。
58.在一实施例中,对多个模块级制品包进行代码质量扫描,获得质量数据,包括:
59.调用sonarqube代码扫描工具对多个模块级制品包进行代码质量扫描,获得质量数据,并存入sonar数据库。
60.上述实施例中的对多个模块级制品包进行代码质量扫描,获得质量数据的步骤对应图2中的代码质量扫描检查,其中,质量数据包括单元测试覆盖率、成功率,代码重复度、复杂度等;在图3中示出了可调用sonarqube代码扫描工具,sonarqube是开源的代码质量检查工具,并将结果存入sonar数据库。
61.对质量数据进行质量门判断,获得质量检查结果的步骤对应图2中的质量门判断,质量门判断是将质量数据与预先配置的质量阈值比对,若未达标则流水线中断,确保组出的包符合最低质量要求。图3示出了可调用质量门配置中心,质量门配置中心是企业自研devops平台中的配置中心模块。
62.在一实施例中,在执行自动组包脚本之前,还包括:若模块级制品包采用容器化构建方式,将所述模块级制品包上传到制品库;
63.自动组包脚本在执行时,将多个模块级制品包解压汇总为新全量包,包括:
64.若模块级制品包采用容器化构建方式,从制品库将所有模块级制品包拉取下来,并解压汇总为新增量包;
65.若模块级制品包采用非容器化构建方式,直接对多个模块级制品包进行解压汇总为新增量包。
66.在上述实施例中,上传制品库的步骤对应图2中的制品归档,图3示出了可调用artifactory,artifactory是企业统一的制品仓库,流水线中制品归档环节将调用artifactory接口将模块构建的制品包上传到制品库。需要说明的是,若模块级制品包采用容器化构建方式,将所述模块级制品包上传到制品库,是因为,若jenkins构建运行在docker容器中,则无法在同一个slave节点上持久化多个模块的构建产物,需统一上传到制品库的同一目录下保存,供自动组包时下载。若直接在一个虚拟机slave节点上构建产品的所有模块,则可省略这一步,组包时直接从jenkins的target目录下获取各模块的构建包。
67.图1中的步骤103对应图2中的自动组包,图3示出了可调用自动组包工具,该自动
组包工具执行自动组包脚本,最后形成的安装包可能是增量包也可能是全量包,上传至制品包。
68.在一实施例中,将所述新全量包与基准包进行比对,获得目标产品的安装包,包括:
69.若基准包不存在,将新增量包作为全量包,所述全量包为目标产品的安装包;
70.若基准包存在,将新增量包与所述基准包进行比对,获得增量包,所述增量包为目标产品的安装包。
71.图4为本发明实施例中自动组包的流程图,如图4所示,包括:
72.步骤401,创建新增量包、增量包、基准包存放路径;
73.步骤402,判断模块级制品包构建方式,若采用容器化构建方式,进入步骤403,否则进入步骤404;
74.步骤403,从制品库下载模块级制品包并解压,转至步骤405;
75.步骤404,从jenkins构建目录下查找所有模块级制品包并解压,转至步骤405;
76.步骤405,根据解压后模块下systemrequiredparameters.txt文件里定义的模块类型,创建模块目标,并将模块放入新全量包;
77.步骤406,判断是否有基准包,若否,进入步骤407;若是,进入步骤408;
78.步骤407,将新增量包作为全量包;
79.步骤408,基准包存放路径下载基准包,将新增量包与所述基准包进行比对,获得增量包。
80.其中,步骤401,创建新增量包、增量包、基准包存放路径是为了方便管理各个制品,在用到基准包的地方去对应地址下载即可。图5为本发明实施例中将新增量包与所述基准包进行比对的原理图,假设基准包中包含模块a、b、c,新全量包中包含模块a、b、d(模块b有变化,模块d为新增模块),则最终产生的增量包应包含b的增量和模块d。
81.图6为本发明实施例中将新增量包与所述基准包进行比对的示意图,获得增量包的示意图,在一实施例中,将新增量包与所述基准包进行比对,获得增量包,包括:
82.对比基准包和新全量包内的所有模块;
83.若新全量包中存在基准包中没有的模块,将该基准包中没有的模块纳入增量包;
84.若基准包中存在新全量包中没有的模块,忽略该新全量包中没有的模块;
85.若基准包和新全量包中均存在同一标识的模块,对基准包和新全量包中均存在的同一标识的模块进行md5比对,将得到的增量部分纳入增量包。
86.图7为本发明实施例中模块md5比对的流程示意图,在一实施例中,对基准包和新全量包中均存在的同一标识的模块进行md5比对,包括:
87.标记基准包中的模块的第一模块b_old,新增量包中的模块为第二模块b_new;
88.若第一模块b_old中存在第二模块b_new中没有的文件,将该第二模块b_new中没有的文件写入删除清单del_list.txt;
89.若第二模块中存在第一模块b_old中没有的文件,将该第一模块b_old中没有的文件纳入第二模块b_new的增量;
90.若第一模块b_old和第二模块中均存在同一标识的文件,分别计算第一模块b_old和第二模块b_new中两个同一标识的文件的md5值;若两个文件的md5值相同,不做处理;若
两个文件的md5值不同,将文件的标识写入结果列表result.txt中。
91.通过上述步骤,最终同一标识的模块的增量包括根据结果列表获取的改变了的文件(通过result.txt标记)、新增的文件以及一个删除清单。
92.综上所述,本发明实施例提出的方法具有以下有益效果:
93.第一,提高组包效率,减少手工组包导致的可能环境因素、操作因素引起的产品问题。
94.第二,提高组包质量,确保只有通过了质量门检查的包才能组出产品级安装包。
95.第三,自动组包组出的包完全符合企业级自动化部署系统的规范要求(规范比如:需要将待客户化的参数通过占位符写在txt文件中放到包的某目录下、需要在txt中标明包是全量包还是增量包等等),可以直接导入部署系统进行部署。
96.本发明还提出一种产品自动组包系统,其原理与产品自动组包方法相同,这里不再赘述。
97.图8为本发明实施例中产品自动组包系统的示意图,如图8所示,包括:
98.源代码获取模块801,用于拉取目标产品的每个模块的源代码;
99.模块级制品包获得模块802,用于对每个模块的源代码进行编译和打包,形成多个模块级制品包;
100.自动组包脚本执行模块803,用于执行自动组包脚本,获得目标产品的安装包,所述自动组包脚本在执行时,将多个模块级制品包解压汇总为新全量包,将所述新全量包与基准包进行比对,获得目标产品的安装包。
101.在一实施例中,源代码获取模块具体用于:
102.根据用户配置的仓库地址和分支,从源代码管理仓库拉取目标产品的每个模块的源代码。
103.图9为本发明实施例中产品自动组包系统的另一示意图,如图9所示,所述系统还包括质量检查模块901,用于:
104.对多个模块级制品包进行代码质量检查,获得质量检查结果;
105.自动组包脚本执行模块具体用于:
106.在所述质量检查结果未超过质量阈值时,执行自动组包脚本。
107.在一实施例中,质量检查模块具体用于:
108.对多个模块级制品包进行代码质量扫描,获得质量数据;
109.对质量数据进行质量门判断,获得质量检查结果。
110.在一实施例中,质量检查模块具体用于:
111.调用sonarqube代码扫描工具对多个模块级制品包进行代码质量扫描,获得质量数据,并存入sonar数据库。
112.图10为本发明实施例中产品自动组包系统的另一示意图,如图10所示,在一实施例中,还包括制品库1001和传输模块1002;
113.所述传输模块1002,用于若模块级制品包采用容器化构建方式,将所述模块级制品包上传到制品库;
114.自动组包脚本执行模块具体用于:若模块级制品包采用容器化构建方式,调用传输模块从制品库将所有模块级制品包拉取下来,并解压汇总为新增量包。
115.在一实施例中,自动组包脚本执行模块具体用于:
116.若基准包不存在,将新增量包作为全量包,所述全量包为目标产品的安装包;
117.若基准包存在,将新增量包与所述基准包进行比对,获得增量包,所述增量包为目标产品的安装包。
118.在一实施例中,自动组包脚本执行模块具体用于:
119.对比基准包和新全量包内的所有模块;
120.若新全量包中存在基准包中没有的模块,将该基准包中没有的模块纳入增量包;
121.若基准包中存在新全量包中没有的模块,忽略该新全量包中没有的模块;
122.若基准包和新全量包中均存在同一标识的模块,对基准包和新全量包中均存在的同一标识的模块进行md5比对,将得到的增量部分纳入增量包。
123.在一实施例中,自动组包脚本执行模块具体用于:
124.标记基准包中的模块的第一模块,新增量包中的模块为第二模块;
125.若第一模块中存在第二模块中没有的文件,将该第二模块中没有的文件写入删除清单;
126.若第二模块中存在第一模块中没有的文件,将该第一模块中没有的文件纳入第二模块的增量;
127.若第一模块和第二模块中均存在同一标识的文件,分别计算第一模块和第二模块中两个同一标识的文件的md5值;若两个文件的md5值相同,不做处理;若两个文件的md5值不同,将文件的标识写入结果列表中。
128.本发明的实施例还提供一种计算机设备,图11为本发明实施例中计算机设备的示意图,该计算机设备能够实现上述实施例中的产品自动组包方法中全部步骤,所述计算机设备具体包括如下内容:
129.处理器(processor)1101、存储器(memory)1102、通信接口(communications interface)1103和通信总线1104;
130.其中,所述处理器1101、存储器1102、通信接口1103通过所述通信总线1104完成相互间的通信;所述通信接口1103用于实现服务器端设备、检测设备以及用户端设备等相关设备之间的信息传输;
131.所述处理器1101用于调用所述存储器1102中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的产品自动组包方法中的全部步骤。
132.本发明的实施例还提供一种计算机可读存储介质,能够实现上述实施例中的产品自动组包方法中全部步骤,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的产品自动组包方法的全部步骤。
133.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
134.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流
程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
135.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
136.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
137.以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献