
如何将Jenkins基础环境迁移到Docker?
Docker部署Jenkins
前往DockerHub下载Jenkins长期支持版本镜像。
查看官方的镜像历史(获取Jenkins相关信息)
启动Jenkins
安装向导
我想很多同学遇到过插件下载导致Jenkins安装失败的情况,为了解决这个问题我们可以通过配置插件源解决。
编辑 hudson.model.UpdateCenter.xml,这个文件是用于设置插件的更新源地址。只需要替换其中的URL。
默认的Jenkins证书是国外官方源证书,这里切换了新的源所以需要添加新的证书。接下来更改证书。从github中获取证书文件,保存到${JENKINS_HOME}/war/WEB-INF/update-center-rootCAs/ 目录中。注意文件命名要一致。
https://github.com/jenkins-zh/docker-zh/blob/master/mirror-adapter.crt
使用Docker命令重启Jenkins,重新配置安装向导。你会发现Jenkins插件安装的很快。
创建一个admin用户
静态环境(基于Docker静态slave配置)
首先我们在Jenkins的节点管理中,添加节点。输入节点的名称和类型。
配置节点信息:自定义目录 启动方式:java web 。
获取JNLP方式运行slave所需要的秘钥信息。
获取jnlp slave的docker镜像 https://hub.docker.com/r/jenkins/jnlp-slave
启动slave测试,出现以下日志表示成功连接。这个部分容易出现问题,原因很可能是因为网络权限导致的。
查看效果
动态构建环境(基于Docker配置动态Slave)
docker插件:https://plugins.jenkins.io/docker-plugin/
项目地址:https://github.com/jenkinsci/docker-plugin
对与Jenkins动态slave的配置,其实就是Jenkins调用Docker的接口完成的。我们需要开启Docker远程访问。我的机器是Mac遇到很多坑,顺便学习下Mac下docker的不同配置方式。哈哈~
docker 开启API远程访问 (mac) 参考文档:https://juejin.im/entry/5bdf04b06fb9a049e41223f1
如果你的docker环境是使用的centos系统,可以做如下配置。
编辑/usr/lib/systemd/system/docker.service
当我们把上面的配置完成后,可以通过Curl命令进行基本的测试API。出现一下信息表示成功开启。
我们需要安装插件 Docker plugin
方式1:启动镜像进行构建(无需连接master)
方式2:使用CLoud
配置云:系统设置 -> CLoud-> Docker
Docker Cloud details
Docker Host URI Docker主机信息(需要开启Docker配置)
- tcp://192.168.1.101:2376
- unix:///var/run/docker.sock
Connection Timeout 连接超时时间
Read Timeout 读操作超时时间 (调大些,容易出现超时的情况)
Enabled 是否启用?默认否
Error Duration 错误的持续时间 默认300 5分钟
Container Cap 容器数量 负值或零,或2147483647都意味着“无限制” ,默认值100。
Docker Agent templates
- Labels 节点标签
- Enabled 是否启动 默认否
- Name 节点名称
- Docker Image 镜像标签
- Remote File System Root 远程文件系统根目录
- 用法 自定义指定项目运行
- Connect method 连接方式
- User 运行用户
- Jenkins URL jenkins地址
- Idle timeout 空闲时间多少秒后杀死slave
- JNLP 推荐
- SSH
- Docker Container
- Pull strategy 镜像下载策略
- Pull timeout 镜像下载超时时间 单位秒
- Instance Capacity 实例数量
FAQ
Read timed out需要调整Docker Cloud details -> Read Timeout 时间。
本文转载自微信公众号「DevOps云学堂」
