CN112099815B - 持续集成环境构建方法及装置 - Google Patents

持续集成环境构建方法及装置 Download PDF

Info

Publication number
CN112099815B
CN112099815B CN202011036301.1A CN202011036301A CN112099815B CN 112099815 B CN112099815 B CN 112099815B CN 202011036301 A CN202011036301 A CN 202011036301A CN 112099815 B CN112099815 B CN 112099815B
Authority
CN
China
Prior art keywords
server
slave
dock
cloud host
mirror image
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.)
Active
Application number
CN202011036301.1A
Other languages
English (en)
Other versions
CN112099815A (zh
Inventor
尹充
田济榕
高倩
张博
韩琪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bank of China Ltd
Original Assignee
Bank of China Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Bank of China Ltd filed Critical Bank of China Ltd
Priority to CN202011036301.1A priority Critical patent/CN112099815B/zh
Publication of CN112099815A publication Critical patent/CN112099815A/zh
Application granted granted Critical
Publication of CN112099815B publication Critical patent/CN112099815B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种持续集成环境构建方法及装置,其中该方法包括:在第一服务器上启动封装master节点的第一docker镜像并挂载目录映射,根据第一工具调用逻辑将存储在第一服务器上的工具存储至第一指定目录下;确定用于挂载slave节点的指定master节点以及slave云宿主机;根据slave云宿主机的配置信息生成groovy脚本,推送groovy脚本到slave云宿主机,调用Jenkins接口将slave云宿主机挂载到指定master节点上,在slave云宿主机上启动封装指定构建环境第二docker镜像,形成持续集成环境。本发明可以减少在搭建持续集成环境时投入的成本,实现工具链版本的标准化。

Description

持续集成环境构建方法及装置
技术领域
本发明涉及软件开发技术领域,尤其涉及一种持续集成环境构建方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
持续集成是一种软件开发实践,即团队开发人员频繁地集成各自的工作内容,通过自动化构建来验证工作内容的准确性,从而快速发现集成错误,在软件开发过程中得到广泛应用。
目前企业多数使用Jenkins作为持续集成工具,Jenkins是一个开源的、提供操作界面的持续集成工具,主要用于持续、自动化地构建、测试软件项目,还用于监控外部任务的运行。在银行等大型企业中,考虑到Jenkins的性能瓶颈,通常每个部门/团队会单独搭建属于自己的Jenkins,每次搭建都需要经过手动申请服务器资源、安装部署Jenkins master节点、安装Jenkins插件、挂载slave节点、安装常用构建工具、配置环境变量等多个步骤,不仅重复投入了大量成本,且不利于工具链版本的标准化。
发明内容
本发明实施例提供一种持续集成环境构建方法,用以减少在构建持续集成环境时投入的成本,实现工具链版本的标准化,该方法包括:
拉取封装master节点的第一docker镜像到第一服务器,其中,第一docker镜像中封装有master节点基础镜像和第一工具调用逻辑;
在第一服务器上启动第一docker镜像并挂载目录映射,根据第一工具调用逻辑将存储在第一服务器上的工具存储至第一指定目录下,完成master节点的构建;
确定用于挂载slave节点的指定master节点以及slave节点运行的slave云宿主机;
根据用户输入的slave云宿主机的配置信息,动态生成groovy脚本,将生成的groovy脚本推送到slave云宿主机;
拉取封装指定构建环境的第二docker镜像到slave云宿主机;
基于groovy脚本,调用Jenkins接口将slave云宿主机挂载到指定master节点上,在slave云宿主机上启动第二docker镜像,形成持续集成环境;
所述第二docker镜像中还封装有第二工具调用逻辑,在slave云宿主机上启动第二docker镜像之后,所述方法还包括:
根据第二工具调用逻辑,将存储在slave云宿主机上的工具存储至第二指定目录下。
本发明实施例还提供一种持续集成环境构建装置,用以减少在构建持续集成环境时投入的成本,实现工具链版本的标准化,该装置包括:
镜像拉取模块,用于拉取封装master节点的第一docker镜像到第一服务器,其中,第一docker镜像中封装有master节点基础镜像和第一工具调用逻辑;
镜像启动模块,用于在第一服务器上启动第一docker镜像并挂载目录映射,根据第一工具调用逻辑将存储在第一服务器上的工具存储至第一指定目录下,完成master节点的构建;
确定模块,用于确定用于挂载slave节点的指定master节点以及slave节点运行的slave云宿主机;
脚本生成模块,用于根据用户输入的slave云宿主机的配置信息,动态生成groovy脚本,将生成的groovy脚本推送到slave云宿主机;
镜像拉取模块,还用于拉取封装指定构建环境的第二docker镜像到slave云宿主机;
镜像启动模块,还用于基于groovy脚本,调用Jenkins接口将slave云宿主机挂载到指定master节点上,在slave云宿主机上启动第二docker镜像,形成持续集成环境;
所述第二docker镜像中还封装有第二工具调用逻辑,镜像启动模块,还用于:
根据第二工具调用逻辑,将存储在slave云宿主机上的工具存储至第二指定目录下。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述持续集成环境构建方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述持续集成环境构建方法的计算机程序。
本发明实施例中,将master节点和slave节点及工具调用逻辑预先封装在docker镜像中,当构建持续集成环境时,可以直接拉取docker镜像完成master节点的构建、slave节点的构建,以及工具的目录映射等,在上述过程中,用户仅进行了简单的参数配置过程,即可完成持续环境的构建,与现有技术中每次配置时都手动申请服务器资源、安装部署Jenkins master节点、安装Jenkins插件及挂载slave节点等的技术方案相比,本发明实施例实现了工具链版本的标准化,有利于企业各部门实现工具链版本的统一,为后续平台化奠定基础,同时减少了在构建持续集成环境时投入的成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中一种持续集成环境构建方法的流程图;
图2为本发明实施例中一种master节点的构建方法的流程图;
图3为本发明实施例中一种slave节点的构建方法的流程图;
图4为本发明实施例中一种构建的持续集成环境的示意图;
图5为本发明实施例中一种持续集成环境构建装置的结构示意图;
图6为本发明实施例中一种计算机设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
为了便于理解,下面先对本发明实施例中涉及的技术术语进行解释。
持续集成:一种软件开发实践,即团队开发成员频繁地集成他们的工作,通过自动化构建来验证,从而尽快发现集成错误。
Jenkins:一个开源的、提供操作界面的持续集成工具,主要用于持续、自动化地构建、测试软件项目,监控外部任务的运行。
docker:一个开源的应用容器引擎,让开发者可以打包他们的应用及依赖包到一个可移植的容器中,然后发布到任何流行的linux或windows机器上。
harbor:一个用于存储和分发docker镜像的企业级docker镜像仓库。
持续集成环境:在本发明实施例中指Jenkins及Jenkins调度的各种构建工具、代码质量检查工具、部署工具等一整套工具链,该环境可支撑产品在其上创建并运行DevOps流水线,实现业务价值的快速可靠交付。
为了解决现有技术中构建持续集成环境时重复投入大量成本的问题,本发明实施例中提供了一种持续集成环境构建方法,该方法采用容器化技术,对jenkins master节点和slave节点进行标准化镜像封装,让用户在一个可视化界面中通过简单信息输入及点选,即可一键完成包括服务器创建、Jenkins master节点构建、常用插件的安装及配置、Jenkins slave节点的挂载、maven等常用构建工具的安装及配置等一系列过程,实现一套完整持续集成环境“开箱即用”的效果。
如图1所示,该方法包括步骤101至步骤106:
步骤101、拉取封装master节点的第一docker镜像到第一服务器。
其中,第一docker镜像中封装有master节点基础镜像和第一工具调用逻辑。其中,工具包括持续集成(Continuous Integration,CI)、持续交付(Continuous Delivery,)过程中将会用到的插件及一些自研工具脚本,如jenkins docker插件、sonar-scanner插件、artifactory插件等。
其中,根据用户输入的第一服务器信息,确定master节点运行的第一服务器。具体的,如果用户输入的第一服务器信息为服务器IP、用户名及密码,则将服务器IP对应的服务器作为第一服务器;如果用户输入的第一服务器信息为对于服务器的规格需求信息,则按照规格需求信息创建服务器,将创建的服务器作为第一服务器,其中,规格需求信息包括服务器运行的操作系统、CPU和内存大小。也就是说,如果用户自己准备了第一服务器,则输入服务器IP等信息,以便于将用户指定的该服务器作为master节点运行的服务器;如果用户没有第一服务器,则填写对于第一服务器的需求,装置会调用云平台自动为用户申请并创建服务器。
为了满足docker镜像对于运行环境的需求,在拉取封装master节点的第一docker镜像到第一服务器之前,还检测第一服务器是否安装docker;如果第一服务器没有安装docker,则在第一服务器上安装docker并配置harbor镜像仓库地址;后续过程中,从harbor镜像仓库中拉取封装master节点的第一docker镜像到第一服务器。
需要说明的是,除了配置harbor镜像仓库地址以外,还需要进行一些其他docker相关配置,如安全策略、开放端口等,该些配置为docker常用配置,关于该些配置,此处仅为例举。
当然,为了在使用时可以获取到所需的docker镜像,在拉取封装master节点的第一docker镜像到第一服务器之前,还将master节点封装为第一docker镜像,存放在harbor镜像仓库中。在具体实现时,通过编写dockerfile,生成满足用户需求的与持续集成环境的构建相关的镜像。
步骤102、在第一服务器上启动第一docker镜像并挂载目录映射,根据第一工具调用逻辑将存储在第一服务器上的工具存储至第一指定目录下,完成master节点的构建。
考虑到第一服务器为新建的服务器或者用户提供的服务器中不具备常用构建工具等,在根据第一工具调用逻辑将存储在第一服务器上的工具存储至第一指定目录下之前,还可以将打包好的master节点上需要的脚本和配置文件(如master.tar)等所需工具从公共服务器上下发到第一服务器,以便于运行第一工具调用逻辑时顺利将存储在第一服务器上的工具存储至第一指定目录下。
需要说明的是,第一指定目录是构建master节点后生成的目录。
步骤103、确定用于挂载slave节点的指定master节点以及slave节点运行的slave云宿主机。
其中,根据用户输入的第二服务器信息,确定slave节点运行的slave云宿主机。与第一服务器的确定方法类似,如果用户输入的第二服务器信息为服务器IP、用户名及密码,则将服务器IP对应的服务器作为slave云宿主机;如果用户输入的第二服务器信息为对于服务器的规格需求信息,则按照规格需求信息创建服务器,将创建的服务器作为第二服务器信息,其中,规格需求信息包括服务器运行的操作系统、CPU和内存大小。
需要说明的是,用户输入的第一服务器的规格需求信息和第二服务器的规格需求信息可能相同,也可能不同。
指定master节点由用户配置。
步骤104、根据用户输入的slave云宿主机的配置信息,动态生成groovy脚本,将生成的groovy脚本推送到slave云宿主机。
动态生成groovy脚本的过程为本领域的常用技术手段,在此不做赘述。
用户输入的slave云宿主机的配置信息包括slave云宿主机上添加的模板信息、slave云宿主机上最大运行的容器数等。其中,每个模板对应一个第二docker镜像。
步骤105、拉取封装指定构建环境的第二docker镜像到slave云宿主机。
每种第二docker镜像对应一个可用的构建环境,例如:jdk1.7-maven3.6镜像,jdk1.8-maven3.6镜像等,同一个slave云宿主机上可以添加多个模板,每个模板配置一个对应的第二docker镜像,每个第二docker镜像启动后形成一个容器,也就是说,一个slave云宿主机上可以同时运行多个容器,构建多个持续集成环境。
同样,与拉取封装master节点的第一docker镜像到第一服务器之前执行的步骤类型,在执行步骤105之前,还需要检测slave云宿主机是否安装docker;如果slave云宿主机没有安装docker,则在slave云宿主机上安装docker并配置harbor镜像仓库地址;在后续过程中,从harbor镜像仓库中拉取封装指定构建环境的第二docker镜像到slave云宿主机。
在拉取封装指定构建环境的第二docker镜像到slave云宿主机之前,还将指定构建环境封装成第二docker镜像,存放在harbor镜像仓库中,以方便后续过程中的取用。
步骤106、基于groovy脚本,调用Jenkins接口将slave云宿主机挂载到指定master节点上,在slave云宿主机上启动第二docker镜像,形成持续集成环境。
此外,第二docker镜像中还封装有第二工具调用逻辑,在slave云宿主机上启动第二docker镜像之后,还根据第二工具调用逻辑,将存储在slave云宿主机上的工具存储至第二指定目录下。其中,第二指定目录是构建master节点后生成的目录,第二工具调用逻辑定义了存放每种工具的目录。
存储在slave云宿主机上的工具包括docker环境安装脚本、slave初始化脚本等、自研的自动组包脚本、maven等工具的配置文件等,该些工具是持续交付流水线中可能用到的。考虑到slave云宿主机为新建或用户自有的,其中可能没有上述工具,可以从公共服务器上将上述工具以slave.tar的形式打包下发到slave云宿主机。
本发明实施例中,将master节点和slave节点及工具调用逻辑预先封装在docker镜像中,当构建持续集成环境时,可以直接拉取docker镜像完成master节点的构建、slave节点的构建,以及工具的目录映射等,在上述过程中,用户仅进行了简单的参数配置过程,即可完成持续环境的构建,与现有技术中每次配置时都手动申请服务器资源、安装部署Jenkins master节点、安装Jenkins插件及挂载slave节点等的技术方案相比,本发明实施例实现了工具链版本的标准化,有利于企业各部门实现工具链版本的统一,为后续平台化奠定基础,同时减少了在构建持续集成环境时投入的成本。
结合上述实施例可以看出本发明实施例中的持续集成环境构建方法主要分为两部分,其一为master节点的构建,其二为slave节点的构建及挂载。下面将分别简要介绍上述两部分的实现方式。
1、新建master节点的处理流程
该处理流程可以参见图2。
步骤1:将Jenkins master节点封装成docker镜像,存放于harbor镜像仓库中,封装的docker镜像中包含第一工具调用逻辑。
步骤2:用户在界面中点击“新建master节点”:若用户已自己准备了服务器,则在界面中填写服务器IP、用户名及密码等信息;若用户无服务器,则填写对服务器的规格需求信息(操作系统、CPU、内存大小等),系统会调用云平台自动为用户申请并创建服务器。
步骤3:服务器具备后,将打包好的master节点上所需的工具(以master.tar的形式)从保存该些工具的公共服务器上下发到该用于搭建master节点的第一服务器。
步骤4:判断服务器上是否具备docker环境,若没有,则安装docker,并完成docker的相关配置(harbor镜像仓库地址、安全策略及开放端口等)。
步骤5:从harbor镜像仓库中拉取jenkins master镜像。
步骤6:启动master镜像并挂载目录映射,按照第一工具调用逻辑将服务器上存储的工具存入相应目录下。
2、新建slave节点的处理流程
该处理流程可以参见图3。
步骤1:slave节点的镜像封装,按用户构建需求封装多种第二docker镜像,每种镜像对应一个可用的构建环境,例如:jdk1.7-maven3.6镜像,jdk1.8-maven3.6镜像等,且其中包含第二工具调用逻辑。
步骤2:用户在界面中进入某一个master节点,在该master下“新建slave节点”。
新建slave节点需填写两部分信息:
①、slave云宿主机使用的服务器信息。
若用户已自己准备了服务器,则在界面中填写服务器IP、用户名及密码等信息;若用户无服务器,则填写对服务器的规格需求信息(操作系统、CPU、内存大小等),系统会调用云平台自动为用户申请并创建服务器。
该服务器即可作为一个slave云宿主机,用于运行构建job启动的容器。其中,每个宿主机上可同时运行多个容器。
②、slave云宿主机配置信息。
Slave云宿主机的配置信息具体包括:
a、slave模版信息,即在slave云宿主机上添加的模板。每个slave云宿主机可添加多个模版,每个模版需配置一个对应的docker镜像;
b、slave云宿主机的构建配置,例如最大运行的容器数等。
步骤3:将slave节点可能用到的工具从存储该些工具的公共服务器上打包下发到slave云宿主机(以slave.tar的形式下发),其中包括:docker环境安装脚本、slave初始化脚本等、自研的自动组包脚本、maven等工具的配置文件等。
步骤4:判断服务器上是否具备docker环境,若没有,则安装docker,并完成docker的相关配置(harbor镜像仓库地址、安全策略及开放端口等)。
步骤5:根据用户填写的slave云宿主机配置信息,动态生成groovy脚本,并推送到slave云宿主机。
步骤6:基于groovy脚本,调用Jenkins接口配置jenkins的docker插件,将slave云宿主机挂载到master上。
需要补充说明的是,上述过程完成了新建master节点和挂载slave云宿主机的功能,真正的slave节点是构建时动态生成的、运行在容器中的。当构建启动时,会根据用户选择的构建环境需求(如jdk1.8、maven3.6),自动从具备此构建环境模板的slave云宿主机中选择一台,在该宿主机上拉取模版对应的docker镜像,启动容器来构建,并根据第二工具调用逻辑将步骤3中下发到slave云宿主机中的工具存储至相应目录下,构建结束后容器实时销毁,资源释放。
本发明实施例中还提供了一种构建的持续集成环境的原理示意图。具体的,如图4所示,上图中的“harbor镜像仓库”用于存放开发人员事先封装好的master节点和slave节点镜像,其中slave节点镜像对应不同的构建环境,如图4中示出了Java构建镜像、web构建镜像。
镜像启动后,则形成了图中右侧的一个部门的构建环境,包括Jenkins master集群和master上挂载的多个slave云宿主机。每台slave云宿主机上定义了多个镜像模板(如图中JDK7&Maven3就是一个镜像模板,每种模板对应着一种构建环境);
执行构建job时,会根据用户选择的构建环境需求(如jdk版本、maven版本),从Jenkins slave云宿主机中选择一台具备此镜像模板的云宿主机,在其上启动相应的docker镜像,形成构建可用的环境。构建结束后,容器自动销毁,环境资源释放。
本发明实施例中还提供了一种持续集成环境构建装置,如下面的实施例所述。由于该装置解决问题的原理与持续集成环境构建方法相似,因此该装置的实施可以参见持续集成环境构建方法的实施,重复之处不再赘述。
如图5所示,该装置500包括镜像拉取模块501、镜像启动模块502、确定模块503、脚本生成模块504。
镜像拉取模块501,用于拉取封装master节点的第一docker镜像到第一服务器,其中,第一docker镜像中封装有master节点基础镜像和第一工具调用逻辑;
镜像启动模块502,用于在第一服务器上启动第一docker镜像并挂载目录映射,根据第一工具调用逻辑将存储在第一服务器上的工具存储至第一指定目录下,完成master节点的构建;
确定模块503,用于确定用于挂载slave节点的指定master节点以及slave节点运行的slave云宿主机;
脚本生成模块504,用于根据用户输入的slave云宿主机的配置信息,动态生成groovy脚本,将生成的groovy脚本推送到slave云宿主机;
镜像拉取模块501,还用于拉取封装指定构建环境的第二docker镜像到slave云宿主机;
镜像启动模块502,还用于基于groovy脚本,调用Jenkins接口将slave云宿主机挂载到指定master节点上,在slave云宿主机上启动第二docker镜像,形成持续集成环境。
在本发明实施例的一种实现方式中,确定模块503,还用于:
根据用户输入的第一服务器信息,确定master节点运行的第一服务器;以及
根据用户输入的第二服务器信息,确定slave节点运行的slave云宿主机。
在本发明实施例的一种实现方式中,确定模块503,用于:
如果用户输入的第一服务器信息/第二服务器信息为服务器IP、用户名及密码,则将服务器IP对应的服务器作为第一服务器/slave云宿主机;
如果用户输入的第一服务器信息/第二服务器信息为对于服务器的规格需求信息,则按照规格需求信息创建服务器,将创建的服务器作为第一服务器/第二服务器信息,其中,规格需求信息包括服务器运行的操作系统、CPU和内存大小。
在本发明实施例的一种实现方式中,装置500还包括:
检测模块505,用于检测第一服务器/slave云宿主机是否安装docker;
docker安装模块506,用于当第一服务器/slave云宿主机没有安装docker时,在第一服务器/slave云宿主机上安装docker并配置harbor镜像仓库地址;
镜像拉取模块501,用于:
从harbor镜像仓库中拉取封装master节点/指定构建环境的第一docker镜像/第二docker镜像到第一服务器/slave云宿主机。
在本发明实施例的一种实现方式中,装置500还包括:
镜像封装模块507,用于将master节点/指定构建环境封装成第一docker镜像/第二docker镜像,存放在harbor镜像仓库中。
在本发明实施例的一种实现方式中,第二docker镜像中还封装有第二工具调用逻辑,镜像启动模块502,还用于:
根据第二工具调用逻辑,将存储在slave云宿主机上的工具存储至第二指定目录下。
本发明实施例中,将master节点和slave节点及工具调用逻辑预先封装在docker镜像中,当构建持续集成环境时,可以直接拉取docker镜像完成master节点的构建、slave节点的构建,以及工具的目录映射等,在上述过程中,用户仅进行了简单的参数配置过程,即可完成持续环境的构建,与现有技术中每次配置时都手动申请服务器资源、安装部署Jenkins master节点、安装Jenkins插件及挂载slave节点等的技术方案相比,本发明实施例实现了工具链版本的标准化,有利于企业各部门实现工具链版本的统一,为后续平台化奠定基础,同时减少了在构建持续集成环境时投入的成本。
本发明实施例还提供一种计算机设备,图6为本发明实施例中计算机设备的示意图,该计算机设备能够实现上述实施例中的持续集成环境构建方法中全部步骤,该计算机设备具体包括如下内容:
处理器(processor)601、存储器(memory)602、通信接口(CommunicationsInterface)603和通信总线604;
其中,所述处理器601、存储器602、通信接口603通过所述通信总线604完成相互间的通信;所述通信接口603用于实现相关设备之间的信息传输;
所述处理器601用于调用所述存储器602中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的持续集成环境构建方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述持续集成环境构建方法的计算机程序。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种持续集成环境构建方法,其特征在于,所述方法包括:
拉取封装master节点的第一docker镜像到第一服务器,其中,第一docker镜像中封装有master节点基础镜像和第一工具调用逻辑;
在第一服务器上启动第一docker镜像并挂载目录映射,根据第一工具调用逻辑将存储在第一服务器上的工具存储至第一指定目录下,完成master节点的构建;
确定用于挂载slave节点的指定master节点以及slave节点运行的slave云宿主机;
根据用户输入的slave云宿主机的配置信息,动态生成groovy脚本,将生成的groovy脚本推送到slave云宿主机;
拉取封装指定构建环境的第二docker镜像到slave云宿主机;
基于groovy脚本,调用Jenkins接口将slave云宿主机挂载到指定master节点上,在slave云宿主机上启动第二docker镜像,形成持续集成环境;
所述第二docker镜像中还封装有第二工具调用逻辑,在slave云宿主机上启动第二docker镜像之后,所述方法还包括:
根据第二工具调用逻辑,将存储在slave云宿主机上的工具存储至第二指定目录下。
2.根据权利要求1所述的方法,其特征在于,
根据用户输入的第一服务器信息,确定master节点运行的第一服务器;以及
根据用户输入的第二服务器信息,确定slave节点运行的slave云宿主机。
3.根据权利要求2所述的方法,其特征在于,根据用户输入的第一服务器信息/第二服务器信息,确定master节点/slave节点运行的第一服务器/slave云宿主机,包括:
如果用户输入的第一服务器信息/第二服务器信息为服务器IP、用户名及密码,则将服务器IP对应的服务器作为第一服务器/slave云宿主机;
如果用户输入的第一服务器信息/第二服务器信息为对于服务器的规格需求信息,则按照所述规格需求信息创建服务器,将创建的服务器作为第一服务器/slave云宿主机,其中,规格需求信息包括服务器运行的操作系统、CPU和内存大小。
4.根据权利要求1所述的方法,其特征在于,在拉取封装master节点/指定构建环境的第一docker镜像/第二docker镜像到第一服务器/slave云宿主机之前,所述方法还包括:
检测第一服务器/slave云宿主机是否安装docker;
如果第一服务器/slave云宿主机没有安装docker,则在第一服务器/slave云宿主机上安装docker并配置harbor镜像仓库地址;
拉取封装master节点/指定构建环境的第一docker镜像/第二docker镜像到第一服务器/slave云宿主机,包括:
从harbor镜像仓库中拉取封装master节点/指定构建环境的第一docker镜像/第二docker镜像到第一服务器/slave云宿主机。
5.根据权利要求4所述的方法,其特征在于,在拉取封装master节点/指定构建环境的第一docker镜像/第二docker镜像到第一服务器/slave云宿主机之前,所述方法还包括:
将master节点/指定构建环境封装成第一docker镜像/第二docker镜像,存放在harbor镜像仓库中。
6.一种持续集成环境构建装置,其特征在于,所述装置包括:
镜像拉取模块,用于拉取封装master节点的第一docker镜像到第一服务器,其中,第一docker镜像中封装有master节点基础镜像和第一工具调用逻辑;
镜像启动模块,用于在第一服务器上启动第一docker镜像并挂载目录映射,根据第一工具调用逻辑将存储在第一服务器上的工具存储至第一指定目录下,完成master节点的构建;
确定模块,用于确定用于挂载slave节点的指定master节点以及slave节点运行的slave云宿主机;
脚本生成模块,用于根据用户输入的slave云宿主机的配置信息,动态生成groovy脚本,将生成的groovy脚本推送到slave云宿主机;
镜像拉取模块,还用于拉取封装指定构建环境的第二docker镜像到slave云宿主机;
镜像启动模块,还用于基于groovy脚本,调用Jenkins接口将slave云宿主机挂载到指定master节点上,在slave云宿主机上启动第二docker镜像,形成持续集成环境;
所述第二docker镜像中还封装有第二工具调用逻辑,镜像启动模块,还用于:
根据第二工具调用逻辑,将存储在slave云宿主机上的工具存储至第二指定目录下。
7.根据权利要求6所述的装置,其特征在于,确定模块,还用于:
根据用户输入的第一服务器信息,确定master节点运行的第一服务器;以及
根据用户输入的第二服务器信息,确定slave节点运行的slave云宿主机。
8.根据权利要求7所述的装置,其特征在于,确定模块,用于:
如果用户输入的第一服务器信息/第二服务器信息为服务器IP、用户名及密码,则将服务器IP对应的服务器作为第一服务器/slave云宿主机;
如果用户输入的第一服务器信息/第二服务器信息为对于服务器的规格需求信息,则按照所述规格需求信息创建服务器,将创建的服务器作为第一服务器/slave云宿主机,其中,规格需求信息包括服务器运行的操作系统、CPU和内存大小。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
检测模块,用于检测第一服务器/slave云宿主机是否安装docker;
Docker安装模块,用于当第一服务器/slave云宿主机没有安装docker时,在第一服务器/slave云宿主机上安装docker并配置harbor镜像仓库地址;
镜像拉取模块,用于:
从harbor镜像仓库中拉取封装master节点/指定构建环境的第一docker镜像/第二docker镜像到第一服务器/slave云宿主机。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
镜像封装模块,用于将master节点/指定构建环境封装成第一docker镜像/第二docker镜像,存放在harbor镜像仓库中。
11.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5任一所述方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至5任一所述方法的计算机程序。
CN202011036301.1A 2020-09-27 2020-09-27 持续集成环境构建方法及装置 Active CN112099815B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011036301.1A CN112099815B (zh) 2020-09-27 2020-09-27 持续集成环境构建方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011036301.1A CN112099815B (zh) 2020-09-27 2020-09-27 持续集成环境构建方法及装置

Publications (2)

Publication Number Publication Date
CN112099815A CN112099815A (zh) 2020-12-18
CN112099815B true CN112099815B (zh) 2023-09-19

Family

ID=73782707

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011036301.1A Active CN112099815B (zh) 2020-09-27 2020-09-27 持续集成环境构建方法及装置

Country Status (1)

Country Link
CN (1) CN112099815B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113515293B (zh) * 2021-04-29 2022-09-09 上海安畅网络科技股份有限公司 一种管理DevOps工具链的方法和系统
CN114172904B (zh) * 2021-12-02 2024-02-13 上海众源网络有限公司 一种Jenkins信息处理方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105630488A (zh) * 2015-12-18 2016-06-01 上海爱数信息技术股份有限公司 一种基于docker容器技术的持续集成实现方法
CN109814879A (zh) * 2019-01-16 2019-05-28 福建省天奕网络科技有限公司 自动化ci/cd项目部署方法、存储介质
CN111414234A (zh) * 2020-03-20 2020-07-14 深圳市网心科技有限公司 镜像容器创建方法及装置、计算机装置及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105630488A (zh) * 2015-12-18 2016-06-01 上海爱数信息技术股份有限公司 一种基于docker容器技术的持续集成实现方法
CN109814879A (zh) * 2019-01-16 2019-05-28 福建省天奕网络科技有限公司 自动化ci/cd项目部署方法、存储介质
CN111414234A (zh) * 2020-03-20 2020-07-14 深圳市网心科技有限公司 镜像容器创建方法及装置、计算机装置及存储介质

Also Published As

Publication number Publication date
CN112099815A (zh) 2020-12-18

Similar Documents

Publication Publication Date Title
CN111858370B (zh) DevOps的实现方法、装置、计算机可读介质
US10387199B2 (en) Container chaining for automated process completion
US8762986B2 (en) Advanced packaging and deployment of virtual appliances
US20190303187A1 (en) Methods, devices, and systems for distributing software to and deploying software in a target environment
CN111142879B (zh) 软件集成发布方法及自动运维平台
US9280335B2 (en) Semantically rich composable software image bundles
US10191733B2 (en) Software change process orchestration in a runtime environment
US9760359B2 (en) Healthcare as a service—downloadable enterprise application
CN108733553B (zh) 基于docker的测试装置的配置方法、装置和系统
CN112822272B (zh) 微服务灰度发布方法及装置、计算机设备及存储介质
US11816464B1 (en) Cloud computing platform architecture
US20150067404A1 (en) Flexible and modular load testing and monitoring of workloads
CN107704238B (zh) 一种对项目进行打包的方法及装置
CN112099815B (zh) 持续集成环境构建方法及装置
EP4066110B1 (en) Automated management of machine images
CN113885849B (zh) 基于工业互联网平台的应用开发方法、装置及终端设备
US20150074646A1 (en) Adopting an existing automation script to a new framework
US11650810B1 (en) Annotation based automated containerization
CN112379969B (zh) 一种基于容器化应用的持续集成交付方法及相关设备
CN117111960A (zh) 工业现场设备监测系统
US20220357954A1 (en) Compliance enforcement via service discovery analytics
CN111562942B (zh) 基于Gitlab的移动APP持续集成装置和方法
Becker et al. A safety-certified vehicle OS to enable software-defined vehicles
CN115185644B (zh) 基于容器交互式应用的检测方法、系统、设备及存储介质
Solayman et al. Seamless Integration of DevOps Tools for Provisioning Automation of the IoT Application on Multi-Infrastructures

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
GR01 Patent grant
GR01 Patent grant