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

基于docker的持续集成方法、装置及存储介质与流程

2022-04-06 15:48:39 来源:中国专利 TAG:


1.本发明涉及持续集成技术领域,尤其涉及一种基于docker的持续集成方法、装置及存储介质。


背景技术:

2.如今软件开发普遍需要长期迭代,多人合作。随着时间的推进,代码复杂度,部署难度也会不断的提高,团队多个开发成员之间如何更好的协同配合,保证软件开发,部署,交付的质量成了大多数软件研发中不可回避的问题。加上近年来敏捷开发的理念越来越流行,如何响应快速变化的需求,稳定迭代出新功能也愈发重要。
3.持续集成正是针对于稳定迭代出新的最佳解,如图1所示,持续集成包括持续整合(ci)和持续部署(cd),关于持续整合(ci)和持续部署(cd)有如下解释:
4.1、持续整合(ci)的目的是针对软件系统每个变动,能持续性的进行验证并整合。所以在ci的阶段通常会执行整合代码、构建、测试工作;
5.2、持续部署即在在持续交付的阶段,代码通过质量的验证,最后会产生一个可以部署的成品,可能是一个执行文件或是docker image。这个成品将自动部署到正式环境。
6.持续集成确实很大程度上方便了开发人员部署项目,但其繁琐的配置,以及较为复杂的搭建是持续存在的问题。
7.以目前较为流行的drone ci持续集成平台为例。其广泛支持自动化软件构件和测试,通过配置文件,插件和大量的定制环境变量能很好的满足开发团队一般的持续集成需求,被越来越多的研发团队采用。
8.基于drone的持续集成方式由于每个项目中都需要一份drone.yml文件来描述整个发布流程,因此需要团队成员了解整个项目的发布过程,这需要相当一部分的学习成本,包括了解drone的配置写法,语义内容,了解项目部署方式,甚至需要自行开发drone插件来满足项目的发布。大大降低了开发人员完成项目接入可持续集成的效率。现有方案虽然解决了个人发布中,个人电脑环境不稳定,发布速度慢,容易出错等问题,但也要求使用者要能够掌握drone配置,插件相关技术、并且了解自身项目的完整发布流程才能书写出drone的配置和插件,这大大降低的研发的业务部署效率。


技术实现要素:

9.本发明实施例提供一种基于docker的持续集成方法、装置及存储介质,通过插件的行驶解决当前droneci集成中配置繁多、效率低的问题,有效的提高了持续集成的效率。
10.本发明实施例的第一方面,提供一种基于docker的持续集成方法,包括:
11.获取持续集中场景中待封装的节点,基于所述持续集中场景中的节点构建基础插件镜像;
12.读取目标项目的基础配置信息,读取所述基础配置信息中所有维度的属性信息,基于所述属性信息进行持续集成;
13.读取基于drone.yml配置的节点信息;
14.以docker in docker的形式根据基础配置信息、节点信息构建相应节点镜像,运行所镜像的节点以实现节点相应的功能。
15.可选地,在第一方面的一种可能实现方式中,获取持续集中场景中待封装的节点,基于所述持续集中场景中的节点构建基础插件镜像包括:
16.接收选定数据,基于所述选定数据确定持续集中场景中待封装的节点;
17.其中,每个节点在运行时具有相对应的功能。
18.可选地,在第一方面的一种可能实现方式中,所述基础插件镜像包括git、http、nodejs、golang、docker in docker以及k8s中的任意一种或多种。
19.可选地,在第一方面的一种可能实现方式中,读取目标项目的基础配置信息,读取所述基础配置信息中所有维度的属性信息,基于所述属性信息进行持续集成包括:
20.所述属性信息包括日志位置、语言类型、发布方式、cpu、内存需求以及部署节点中的任意一种或多种;
21.根据所述属性信息生成对应的项目模板,所述项目模板包括持续集成时的必要数据。
22.可选地,在第一方面的一种可能实现方式中,读取基于drone.yml配置的节点信息包括:
23.其中,基于drone.yml配置的节点信息为项目之外配置给持续集成的信息,用于描述持续集成需要完成的行为;
24.其中节点信息为all、build以及notice中的任意一个或多个;
25.all为已经完成的持续集成;
26.build为只编译打包不发布的持续集成;
27.notice为发布消息的持续集成。
28.可选地,在第一方面的一种可能实现方式中,以docker in docker的形式根据基础配置信息、节点信息构建相应节点镜像,运行所镜像的节点以实现节点相应的功能包括:
29.基于所述基础配置信息和/或节点信息确定为需要对目标项目进行打包处理;
30.读取所述目标项目的dockerfile模板、基础配置信息和/或节点信息生成dockerfile;
31.响应于接收到的命令进行打包处理。
32.可选地,在第一方面的一种可能实现方式中,其中,所述dockerfile模板为预先设置的。
33.可选地,在第一方面的一种可能实现方式中,还包括:
34.获取持续集中场景中待封装的节点,基于所述持续集中场景中的节点构建基础插件镜像包括:
35.基于接收的插件配置数据对在多个节点中选择相应的待封装的节点。
36.本发明实施例的第二方面,提供一种基于docker的持续集成装置,包括:
37.插件镜像模块,用于获取持续集中场景中待封装的节点,基于所述持续集中场景中的节点构建基础插件镜像;
38.基础配置信息读取模块,用于读取目标项目的基础配置信息,读取所述基础配置
信息中所有维度的属性信息,基于所述属性信息进行持续集成;
39.节点信息读取模块,用于读取基于drone.yml配置的节点信息;
40.运行模块,用于以docker in docker的形式根据基础配置信息、节点信息构建相应节点镜像,运行所镜像的节点以实现节点相应的功能。
41.本发明实施例的第三方面,提供一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用于实现本发明第一方面及第一方面各种可能设计的所述方法。
42.本发明提供的一种基于docker的持续集成方法、装置及存储介质。通过集成插件处理的方式,解决了当前droneci集成中配置繁多,效率低的问题,并且,本发明中每个项目中的drone.yml只需要配置使用相应的插件即可,研发人员不需要再关注持续集成的过程中每一步需要如何配置,提高研发人员的专注度,提高了项目接入使用持续集成的效率。
43.在现有技术中,每个项目单独配置每个节点,若某一个环节需要调整,或者外部环境发生了改变,则所有项目的配置均需要重新改动,费时费力,而且容易疏漏。本发明提供的技术方案,通过集成插件的形式,只需要修改插件即可,一处改动,所有项目的持续集成均生效,效率高。
附图说明
44.图1为持续集成的示意图;
45.图2为基于docker的持续集成方法的第一种实施方式的流程图;
46.图3为基于docker的持续集成方法的第二种实施方式的流程图;
47.图4为基于docker的持续集成装置的第一种实施方式的结构图;
48.图5为基于docker的持续集成装置的第二种实施方式的结构图。
具体实施方式
49.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
50.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
51.应当理解,在本发明的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
52.应当理解,在本发明中,“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
53.应当理解,在本发明中,“多个”是指两个或两个以上。“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。“包含a、b和c”、“包含a、b、c”是指a、b、c三者都包含,“包含a、b或c”是指包含a、b、c三者之一,“包含a、b和/或c”是指包含a、b、c三者中任1个或任2个或3个。
54.应当理解,在本发明中,“与a对应的b”、“与a相对应的b”、“a与b相对应”或者“b与a相对应”,表示b与a相关联,根据a可以确定b。根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其他信息确定b。a与b的匹配,是a与b的相似度大于或等于预设的阈值。
55.取决于语境,如在此所使用的“若”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。
56.下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
57.在进行发明提供的技术方案之前,首先需要进行系统模块的搭建。系统模块的搭建包括以下几个要求:
58.1、安装docker,访问docker官网,安装下载对应系统版本;
59.2、安装git,访问git官网下载安装对应系统版本;
60.3、安装gogs,访问gogs官网安装下载具体对应版本(也可用gitlab或其他自助git服务平台代替)。
61.用户可以访问droneci官网,选择合适当前场景的方式部署。以下步骤以docker方式部署:
62.步骤1:下载drone docker,docker pull drone/drone:1.0.0-rc.6。
63.步骤2:启动drone server,
64.docker run\
‑‑
volume=/var/run/docker.sock:/var/run/docker.sock\
‑‑
volume=/var/lib/drone:/data\
65.env=drone_github_server=https://github.com\
66.env=drone_github_client_id={%your-github-client-id%}\
67.env=drone_github_client_secret={%your-github-client-secret%}\env=drone_runner_capacity=2\
‑‑
env=drone_server_host={%
68.your-drone-server-host%}\env=drone_server_proto={%your-drone-server-protocol%}\
69.env=drone_tls_autocert=true\
‑‑
publish=80:80\
‑‑
publish=443:443\
‑‑
restart=always\detach=true\
‑‑
name=drone\drone/drone:1.0.0-rc.6
70.步骤3:docker-compse启动,docker-compose up

d。
71.本发明提供一种基于docker的持续集成方法,结合图2和图3所示,包括:
72.步骤s110、获取持续集中场景中待封装的节点,基于所述持续集中场景中的节点构建基础插件镜像。
73.在一个可能的实施方式中,获取持续集中场景中待封装的节点,基于所述持续集中场景中的节点构建基础插件镜像包括:
74.接收选定数据,基于所述选定数据确定持续集中场景中待封装的节点;
75.其中,每个节点在运行时具有相对应的功能。
76.所述基础插件镜像包括git、http、nodejs、golang、docker in docker以及k8s中的任意一种或多种。
77.由于droneci的模式是基于docker in docker的模式,因此需要构建一个支持持续集成中各个节点所需的所有环境。本发明根据需要封装的节点情况,构建出满足的基础镜像。常见的比如git,http、nodejs、golang,docker in docker,k8s等等。
78.步骤s120、读取目标项目的基础配置信息,读取所述基础配置信息中所有维度的属性信息,基于所述属性信息进行持续集成。
79.在一个可能的实施方式中,读取目标项目的基础配置信息,读取所述基础配置信息中所有维度的属性信息,基于所述属性信息进行持续集成包括:
80.所述属性信息包括日志位置、语言类型、发布方式、cpu、内存需求以及部署节点中的任意一种或多种;
81.根据所述属性信息生成对应的项目模板,所述项目模板包括持续集成时的必要数据。
82.本发明进行步骤s120的前提是所有项目都有一份基础配置。方便插件能知道项目的名称、日志位置、语言类型、发布方式、cpu以及内存需求、部署节点等等。插件根据读取到的项目基础配置,生成相应的模板,支持后续完成项目打包,单元测试等所需要的信息。
83.步骤s130、读取基于drone.yml配置的节点信息。
84.在一个可能的实施方式中,读取基于drone.yml配置的节点信息包括:
85.其中,基于drone.yml配置的节点信息为项目之外配置给持续集成的信息,用于描述持续集成需要完成的行为;其中节点信息为all、build以及notice中的任意一个或多个;all为已经完成的持续集成;build为只编译打包不发布的持续集成;notice为发布消息的持续集成。
86.步骤s130所读取的信息是项目之外配置给持续集成的信息。用来描述持续集成要完成的任务。由于本发明提供的技术方案封装了大部分持续集成节点,因此本发明只以部分方式配置进行举例,比如all代表完成的持续集成,build代表只编译打包不发布,notice代表发布消息等等,以上的例子可以通过单选或多选的简单配置方式完成对整个项目持续集成的描述。
87.步骤s140、以docker in docker的形式根据基础配置信息、节点信息构建相应节点镜像,运行所镜像的节点以实现节点相应的功能。
88.在一个可能的实施方式中,以docker in docker的形式根据基础配置信息、节点信息构建相应节点镜像,运行所镜像的节点以实现节点相应的功能包括:
89.基于所述基础配置信息和/或节点信息确定为需要对目标项目进行打包处理;读取所述目标项目的dockerfile模板、基础配置信息和/或节点信息生成dockerfile;响应于接收到的命令进行打包处理。其中,所述dockerfile模板为预先设置的。
90.在一个可能的实施方式中,获取持续集中场景中待封装的节点,基于所述持续集中场景中的节点构建基础插件镜像包括:
91.基于接收的插件配置数据对在多个节点中选择相应的待封装的节点。
92.根据上述方案解析所读取拿到的配置信息,基于docker in docker的形式,开始
构建相关节点的镜像。然后运行相关镜像实现节点功能。以golang项目打包为例,根据前几部读到的配置得出是golang项目打包,读取公司golang项目的dockerfile模板,以及前两部得到的配置信息生成dockerfile,然后docker build-t xxxxxx/xx/xx。命令实现项目打包。例如,以k8s部署为例,根据读到的配置,生成deployment.yml、service.yml等文件,部署项目到k8s集群。
93.本发明提供的书方案,通过集成插件处理的方式,解决了当前droneci集成中配置繁多,效率低的问题,并且,本发明中每个项目中的drone.yml只需要配置使用相应的插件即可,研发人员不需要再关注持续集成的过程中每一步需要如何配置,提高研发人员的专注度,提高了项目接入使用持续集成的效率。
94.在现有技术中,每个项目单独配置每个节点,若某一个环节需要调整,或者外部环境发生了改变,则所有项目的配置均需要重新改动,费时费力,而且容易疏漏。本发明提供的技术方案,通过集成插件的形式,只需要修改插件即可,一处改动,所有项目的持续集成均生效,效率高。
95.本发明提供的技术方案还提供一种基于docker的持续集成装置,结合图4和图5所示,包括:
96.插件镜像模块,用于获取持续集中场景中待封装的节点,基于所述持续集中场景中的节点构建基础插件镜像;
97.基础配置信息读取模块,用于读取目标项目的基础配置信息,读取所述基础配置信息中所有维度的属性信息,基于所述属性信息进行持续集成;
98.节点信息读取模块,用于读取基于drone.yml配置的节点信息;
99.运行模块,用于以docker in docker的形式根据基础配置信息、节点信息构建相应节点镜像,运行所镜像的节点以实现节点相应的功能。
100.其中,可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(application specific integrated circuits,简称:asic)中。另外,该asic可以位于用户设备中。当然,处理器和可读存储介质也可以作为分立组件存在于通信设备中。可读存储介质可以是只读存储器(rom)、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
101.本发明还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得设备实施上述的各种实施方式提供的方法。
102.在上述终端或者服务器的实施例中,应理解,处理器可以是中央处理单元(英文:central processing unit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digital signal processor,简称:dsp)、专用集成电路(英文:application specific integrated circuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
103.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
再多了解一些

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

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

相关文献