jenkins作为当前市面上使用率最广泛的持续集成工具,功能强大、操作简单,大家都比较熟悉了。在使用jenkins的过程中,极少的情况下安装单机jenkins作为slave直接进行构建;比较常见的情形,是安装一台jenkins作为master,其他windows或者linux的机子作为slave连接到该master上,由master下发任务构建到不同的slave节点上,如此既可以降低master节点的负载,又似的slave的无限扩展成为可能,从而增强jenkins的执行能力。但是这个方法有个不足之处,就是当构建的任务很多的时候,现有的slave节点可能无法满足构建需求;而当构建任务不多的时候,slave节点的资源又存在浪费。而且,节点的管理都需要在master节点进行注册,也是一项不小的工作。那么,有没有办法既能减少slave节点的维护又能提高jenkins的弹性持续集成能力呢?答案是docker。此处,我们介绍一下单机docker的设置方法,其他基于k8s或者swarm的原理,大同小异。
配置docker服务开启远程访问
vim /etc/docker/daemon.json
然后修改文件内容,添加:
"hosts": ["tcp://192.168.10.34:2375","unix:///var/run/docker.sock"]
注意把ip换成本机ip。然后重启docker服务
service docker restart
如果上述方法无效,我们换用修改systemd方法:
vim /lib/systemd/system/docker.service
然后修改
把这一行改为:
ExecStart=/usr/bin/dockerd -H fd:// -H unix://var/run/docker.sock -H tcp://0.0.0.0:2375 --containerd=/run/containerd/containerd.sock
然后保存修改:
systemctl daemon-reload
重启服务:
service docker restart
docker pull jenkinsci/ssh-slave
配置jenkins
主要填入dockerhost的地址和enable这个docker host。如果我们在开启docker http远程访问的时候启用身份验证的话,就用Server credentials那个地方管理链接的用户名和密码。container cap那个地方,设置jenkins可以同时最大创建的容器个数。
重点说明几个配置:
labels这个字段:用于我们在配置构建任务时选择运行节点时使用
enabled:启用本agent template
name: jenkins创建container的时候其的名字的前缀,后面会跟一个创建时构造的唯一标识
docker image:就是我们上面pull的默认的jenkinsci/ssh-slave,如果大家自己封装了image,写上自己的即可
credentials:访问docker镜像仓库的用户名和密码
instance capacity和remote file system root,一般用不上
用法: 我们选择 只允许运行绑定到这台机器的job,这个配置就是和一般的slave配置一样了
connect method: 我们选择 attach docker container
remove volumes: 我们勾选上,不然删除container后依旧可能占用硬盘空间
pull strategy: 拉取镜像的策略,我们这里选never pull
另外一些构建时用的工具位置、环境变量等,我们在node properties里面配置。有一种方法,就是我们在宿主机上安装公用的工具,比如ant、maven这些,然后通过volume的方式挂载到container里面,这样我们的镜像就不需要安装这些工具了,如此,我们点击CONTAINER SETTINGS展开容器的配置信息,包括CPU、内存、volume等配置,大家根据需要自行设置。
验证
控制台输出里面也能看到相应的执行结果:
而在任务执行完成之后,该container也被jenkins删除,节点当中也看不到该容器。从而实现了有任务时创建容器并执行,任务完成之后删除容器的jenkins弹性持续集成。
创业/副业必备:
本站已持续更新1W+创业副业顶尖课程,涵盖多个领域。
点击查看详情
评论(0)