Jenkins远程docker构建方案
背景介绍
Jenkins,包括idea,有很多集成方案构建docker,但是因为网络结构、构建环境等客观原因,集成性的方案并不能满足需求。如:
- Jenkins权限限制;
- Jenkins已经是docker化部署,无法嵌套集成方案;
- 构建环境不唯一,需要多个docker环境分别构建;
- Jenkins端无私仓权限,无法把构建好的docker部署到指定位置。
这时,基于DinD的构建方案就非常方便了。
安装与部署DinD容器
容器的Dockerfile见这里:
https://github.com/ryangsun/centos7-dind
安装和部署介绍见
docker构建环境搭建
免密登录
1、将jenkins对应使用的私钥copy到dind容器的对应文件中:
1 | scp -P <DinD容器端口> <Jenkins私钥文件> <DinD容器>:/home/jenkinsbuild/.ssh/.... |
2、Jenkins创建新的远程主机连接
3、Jenkins SSH Publishers配置:
第一步:针对一般的java项目,需要将jenkins打包好的jar文件和对应的Dockerfile拷贝到DinD容器。上图中,我们开了两个Transer Set,一个拷贝了.jar文件,一个拷贝了项目对应的Dockerfile。
第二步:远程执行命令构建docker:
1 | #进入构建目录并构建Docker |
第三步:触发后续操作,如Rancher构建等。