讲过如何使用docker搭建Jenkins环境,并使用其docker的语法去在容器中运行流水线。传统的Jenkins配置中需要配置Jenkins slave。这样就可以有更多的资源去处理流水线的操作。
之前运行jenkins的时候已经暴露的其slave添加的端口50000。用户可以用传统的方式将jenkins slave加入到jenkins master节点。但是既然使用了docker,我们就可以用一种更为灵活的方式去使用jenkins slave的功能,可以动态的根据需求添加jenkins slave到节点之上。
这里我们要用到Jenkins中的一个插件 - Docker plugin
这里我们先安装Docker plugin, 在jenkins界面中点击 “系统管理” -> “插件管理”,点击“可选插件” Tab页, 搜索
选中后直接安装即可。
我们可以在官网上直接查看其介绍和说明。可以看到该插件是利用docker,来动态生成Jenkins slave节点并通过该检点运行流水线的。
安装之后我们正式开始我们的配置。需要在运行jenkins agent的机器上配置好docker, 分为以下两种情况。
一、jenkins agent同jenkins master在同一台机器上
二、Jenkins agent所运行的机器同jenkinsmaster 在不同的机器上
对于第一种无须做任何设置,但是第二种情况,需要远程连接docker的daemon socket,那么我们就需要在其docker上做一些额外的配置。 暴露其socket到tcp端口之上
配置完成后,我们需要到jenkins中点击 “系统管理” -> “系统配置”, 滑到最下面 “Cloud”
点击 ”a separate configuration page“ 进入到配置页面。
注意,这个配置内容在以前版本的jenkins中是直接显示的,但是在新版本的jenkins做了单独一个页面去配置。
我们需要 ”Add a new cloud“, 点击后添加”Docker“ --> “Docker Cloud Detail”
添加相应的Docker Host URI, 本地docker的情况使用unix://var/run/docker.sock
点击测试”test connetion“,显示连接成功,显示docker的版本号。
这时我们可以添加模板了
点击Docker Agent Template - > Add Docker Template 添加如下基本信息
红框中添加了最基本的信息,可以运行jenkins最基本的功能。但是实际使用中我们可能会对该模板添加更多的配置。例如挂载volume,添加更多的传入的container参数,大家可以探索其中的配置,其中Container setings中有更多的关于镜像本身的配置。
至此,我们基本环境都已经配置完毕。下面尝试运行一个简单实例。
我们创建一个简单的流水线,修改pipeline脚本如下, label即为我们之前设置的docker template中的lable。流水线sleep 30s是为了让我们看到创建的docker jenkins slave 节点。
如何创建流水线请参见我的上一篇文章,本文只是基于上篇文章的例子进行流水线脚本的修改。
这时我们手动触发构建,如下所示,新的节点被创建出来,运行我们配置的流水线。
该节点正在通过docker生成一个容器,并注册到master之中,运行docker 命令我们可以看到容器正在运行,而且是我们指定的镜像jenkins/jnlp-slave:latest
在Jenkins 的节点列表中,我们也能看到新的节点也已经注册进来。
节点关联的dockers container同我们docker ps命令中看到的相同。
我们看流水线的日志:
运行结束后,该容器节点就会被自动销毁,在需要的时候去自动创建。
至此,一个简单的示例完成。
这种基于docker环境的jenkins slave管理方式,更为节省资源,并且可以横向扩展更多的资源去运行我们的流水线任务。我们也可以自己去build更多的工具到节点的环境中,实现更多定制化的需求。 关于docker方式运行jenkins的方法就介绍到这里。以后会为大家分享使用kuberntes环境使用jenkins的最佳实践。