agent放入Docker
目前我们所有的构建都执行在机器(物理机器或虚拟机器)上。接下来介绍如何让构建执行在Docker容器中。关于Docker是什么,以及它所带来的好处,市面上介绍的文章已经足够多,本书就不做介绍了。
Jenkins master要将构建任务分配给Docker,就必须在Jenkinsagent上安装Docker。建议给这些agent打上docker的标签。
关于Docker 的具体安装过程就不细表了。但是需要注意,要将Jenkins agent 的用户加入Docker的用户组中,这样Jenkins agent不需要加sudo就能执行docker命令。如果不生效,则可能需要重启Jenkins agent。
使用Docker
pipeline插件从2.5版本开始就内置了Docker插件(docker-plugin)。所以,安装pipeline插件后,就可以直接在pipeline的agent部分指定使用什么Docker镜像进行构建了。
pipeline {
agent {
docker {
label 'docker'
image 'maven:3-alpine'
-
}
stages {
stage('build')
{
steps {
sh 'mvn clean compile'
-
}
-
}
-
}
-
}
}
与之前不同的,在agent部分我们将node换成了docker。下面分别解释docker的常用选项。
- label(可选):字符串类型,与node的label的作用一样。
- image:字符串类型,指定构建时使用的Docker镜像。
- args(可选):字符串类型,Jenkins执行docker run命令时所带的参数,如args’-v/tmp : /tmp’
- alwaysPull(可选):布尔类型,强制每次执行docker pull命令时都重新拉取镜像。
配置Docker私有仓库
进入Manage Jenkins-》Configure System页面,找到“Pipeline Model Definition”部分
- Docker Label:当pipeline中的agent部分没有指定label选项时,就会使用此配置。如docker{image’maven : 3-alpine’}。
- Docker registry URL:Docker私有仓库地址
- Registry credentials:登陆Docker私有仓库的凭证。