基于jenkins实时任务动态创建docker容器节点执行任务的方法技术

技术编号:25834129 阅读:21 留言:0更新日期:2020-10-02 14:15
本发明专利技术涉及基于jenkins实时任务动态创建docker容器节点执行任务的方法,包括:A.开发一种定制化生成dockerfile的脚本,动态生成dockerfile格式文件从而生成容器镜像;B.定制化开发jenkins插件,实时获取jenkins job排队队列信息,并进行动态启动容器镜像,注册为jenkins slave节点,完成jenkins job任务;C.jenkins插件实时统计正在运行中的jenkins job的数量,并且将该数量和设定的最大并行数进行比较,如果少于最大并行数,则从保存实时jenkins job排队队列信息的数据库中获取job信息,并根据job信息,启动容器作为jenkins slave,执行jenkins job设定的任务。本发明专利技术不需要长期占用资源,在有大量并发任务的场景中,通过自动销毁容器节点,能够节约大量资源,并可以根据实际情况,动态调整最大jenkins job数量,满足业务要求,提高资源使用率。

【技术实现步骤摘要】
基于jenkins实时任务动态创建docker容器节点执行任务的方法
本专利技术涉及软件开发和软件测试
,尤其涉及一种基于jenkins实时任务动态创建docker容器节点执行任务的方法。
技术介绍
Jenkins是一种开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Docker是一种开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。Jenkinsslave节点:同jenkins主节点进行交互,接受jenkins主节点分发的jenkinsjob,在子节点上完成jenkinsjob设定的任务。目前Jenkins的slave节点都是预先准备好的长期保留的虚拟机或者物理机,然后该节点通过SSH或者jnlp方式,主动连接到jenkinsmaster节点,将自己注册成为Jenkins的一个slave节点。但是该模式意味着slave节点需要一直存在,有jenkinsjob的时候,才能立刻执行job。如果jenkins在某一个时候,有大批量的任务需要执行的时候,需要长期保持大批量的slave节点,才能满足及时响应需求。该种方式在没有jenkins任务的时候,大量的slave节点处于闲置状态,资源使用率不高。
技术实现思路
为解决现有技术方案中资源使用率不高的问题,本专利技术提供一种基于jenkins实时任务动态创建docker容器节点执行任务的方法,动态创建jenkinsslave节点,不需要长期占用,在有大量并发任务的场景中,通过自动销毁容器节点,能够节约大量资源,并可以根据实际情况,动态调整最大jenkinsjob数量,满足业务要求。本专利技术基于jenkins实时任务动态创建docker容器节点执行任务的方法,包括:A.开发一种定制化生成dockerfile的脚本,针对dockerfile中包含的关键字进行预定义,根据传入的参数获取预定义值,动态生成dockerfile格式文件,生成容器镜像;B.定制化开发jenkins插件,实时获取jenkinsjob排队队列信息,并进行动态启动容器镜像,注册为jenkinsslave节点,完成jenkinsjob任务;C.jenkins插件实时统计正在运行中的jenkinsjob的数量,并且将该数量和设定的最大并行数进行比较,如果少于最大并行数,则从保存实时jenkinsjob排队队列信息的数据库中获取job信息,并根据job信息,启动容器作为jenkinsslave,执行jenkinsjob设定的任务。本专利技术动态创建dockerfile,并生成容器镜像,只需创建一次,后续可以直接使用并且动态创建jenkinsslave节点,不需要长期占用,在有大量并发任务的场景中,通过自动销毁容器节点,能够节约大量资源,并可以根据实际情况,动态调整最大jenkinsjob数量,满足业务要求。进一步的,步骤A包括:A1.根据linux的版本不同,定制化脚本通过接收到的linxu的版本参数,对dockerfile的关键字FROM进行赋值,生成符合dockerfile格式的文本;A2.根据程序语言编译版本不同,定制化脚本通过接收到的编译语言参数,对dockerfile的关键字COPY、RUN和ENV进行组合赋值,生成符合dockerfile格式的文本;使dockerfile在经过编译过后,生成的镜像能够支持传入参数的语言编译环境。A3.根据git和svn版本管理环境不同,定制化脚本通过接收到的版本控制软件参数,对dockerfile的关键字COPY和RUN进行赋值,生成符合dockerfile格式的文本;使dockerfile在经过编译过后,生成的镜像能够支持传入参数的制定版本控制环境。A4.根据A1、A2和A3步骤,生成由各种linxu版本参数、编译语言参数和版本控制软件参数组合成的dockerfile文件,并通过dockerbuild生成容器镜像,该容器镜像以linxu版本、编译语言版本和版本控制软件的信息组合命名,并且保存到镜像仓库中。进一步的,步骤B包括:B1.定制化开发jenkins插件,并设置jenkins的最大动态并行job数以及linux版本、编程语言和版本管理的参数;B2.根据实时的jenkinsjob队列信息,将所有实时的jenkinsjob排队队列信息写入数据库;B3.根据设置的jenkins的最大动态并行job数,从保存jenkinsjob排队队列信息的数据库中读取出指定数量的jenkinsjob;B4.定制化的jenkins插件获取jenkinsjob包含的版本控制软件信息、语言编译版本信息和linux版本信息,并且根据linxu版本、语言编译版本和版本控制软件的信息组合命名的方法得到容器镜像名,在镜像仓库中查询是否有相同容器镜像名的镜像;如果有相同容器镜像名的镜像则直接启动该镜像,并通过JNPL方式主动将该镜像注册为jenkinsslave节点,执行jenkinsjob设定的任务;如果没有符合要求的镜像,则根据jenkinsjob的版本控制软件信息、语言编译版本信息和linux版本信息生成一个dockerfile文件,并通过dockerbuild生成容器镜像,并保存到镜像仓库中,再次启动该新建的容器镜像,并通过JNPL方式主动将该镜像注册为jenkinsslave节点,执行jenkinsjob设定的任务。动态创建dockerfile,并生成容器镜像,只需创建一次,后续可以直接使用。进一步的,步骤C包括:C1.获取设定的最大动态并行job数,和实时运行的jenkinsjob数进行比较,如果设定的最大动态并行job数大于实时运行的jenkinsjob数则从数据库中获取jenkinsjob信息,根据步骤B4执行jenkinsjob;C2.循环执行C1步骤工作,直至保存jenkinsjob排队队列信息的数据库中的数据为空;C3.完成jenkinsjob设定的任务后,自动注销运行该jenkinsjob的jenkinsslave节点从而释放资源。本专利技术基于jenkins实时任务动态创建docker容器节点执行任务的方法,动态创建dockerfile,并生成容器镜像后动态创建jenkinsslave节点不需要长期占用,在有大量并发任务的场景中,通过自动销毁容器节点,能够节约大量资源,并可以根据实际情况,动态调整最大jenkinsjob数量,满足业务要求。附图说明图1为本专利技术基于jenkins实时任务动态创建docker容器节点执行任务的方法的流程图。具体实施方式以下结合实施例的具体实施方式,对本专利技术的上述内容再作进一步的详细说明。但不应将此理解为本专利技术上述主题的范围仅限于以下的实例。在本文档来自技高网...

【技术保护点】
1.基于jenkins实时任务动态创建docker容器节点执行任务的方法,其特征在于,包括:/nA.开发一种定制化生成dockerfile的脚本,针对dockerfile中包含的关键字进行预定义,根据传入的参数获取预定义值,动态生成dockerfile格式文件后通过docker build生成容器镜像;/nB.定制化开发jenkins插件,实时获取jenkins job排队队列信息,并进行动态启动容器镜像,注册为jenkins slave节点,完成jenkins job任务;/nC.jenkins插件实时统计正在运行中的jenkins job的数量,并且将该数量和设定的最大并行数进行比较,如果少于最大并行数,则从保存实时jenkins job排队队列信息的数据库中获取job信息,并根据job信息,启动容器作为jenkins slave,执行jenkins job设定的任务。/n

【技术特征摘要】
1.基于jenkins实时任务动态创建docker容器节点执行任务的方法,其特征在于,包括:
A.开发一种定制化生成dockerfile的脚本,针对dockerfile中包含的关键字进行预定义,根据传入的参数获取预定义值,动态生成dockerfile格式文件后通过dockerbuild生成容器镜像;
B.定制化开发jenkins插件,实时获取jenkinsjob排队队列信息,并进行动态启动容器镜像,注册为jenkinsslave节点,完成jenkinsjob任务;
C.jenkins插件实时统计正在运行中的jenkinsjob的数量,并且将该数量和设定的最大并行数进行比较,如果少于最大并行数,则从保存实时jenkinsjob排队队列信息的数据库中获取job信息,并根据job信息,启动容器作为jenkinsslave,执行jenkinsjob设定的任务。


2.如权利要求1所述的基于jenkins实时任务动态创建docker容器节点执行任务的方法,其特征在于,步骤A包括:
A1.根据linux的版本不同,定制化脚本通过接收到的linxu的版本参数,对dockerfile的关键字FROM进行赋值,生成符合dockerfile格式的文本;
A2.根据程序语言编译版本不同,定制化脚本通过接收到的编译语言版本参数,对dockerfile的关键字COPY、RUN和ENV进行组合赋值,生成符合dockerfile格式的文本;
A3.根据git和svn版本管理环境不同,定制化脚本通过接收到的版本控制软件参数,对dockerfile的关键字COPY和RUN进行赋值,生成符合dockerfile格式的文本;
A4.根据A1、A2和A3步骤,生成由各种linxu版本参数、编译语言版本参数和版本控制软件参数组合成的dockerfile文件,并通过dockerbuild生成容器镜像,该容器镜像以linxu版本、编译语言版本和版本控制软件的信息组合命名,并且保存到镜像仓库中。


3.如权利要求1所述的基于jenkins实时任务动态...

【专利技术属性】
技术研发人员:毛航熊阳黄勇梁骏黄凯
申请(专利权)人:四川新网银行股份有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1