插件实现了与 docker 的集成,所以这将是一段轻松愉快的旅程。
添加 linux 主机作为 build agent
- 用户 jenkins,密码为 123456
- 修改为 jenkins
#!/bin/ ./addsudouser.useradd -m jenkins -d /home/jenkins -s /bin/<span style="color: #000000">bash;
<span style="color: #0000ff">echo <span style="color: #800000">'<span style="color: #800000">jenkins:123456<span style="color: #800000">' | <span style="color: #0000ff">sudo<span style="color: #000000"> chpasswd
usermod -a -G <span style="color: #0000ff">sudo<span style="color: #000000"> jenkins;
usermod -a -<span style="color: #000000">G docker jenkins;
<span style="color: #0000ff">echo <span style="color: #800000">'<span style="color: #800000">jenkins ALL=(ALL:ALL) NOPASSWD: ALL<span style="color: #800000">' >> /etc/<span style="color: #000000">sudoers;
<span style="color: #0000ff">sudo <span style="color: #0000ff">mkdir /var/<span style="color: #000000">jenkins
<span style="color: #0000ff">sudo <span style="color: #0000ff">chown jenkins /var/<span style="color: #000000">jenkins
<span style="color: #0000ff">sudo apt-get -y <span style="color: #0000ff">install default-jre
<span style="color: #0000ff">echo <span style="color: #800000">'<span style="color: #800000">jenkins:123456<span style="color: #800000">' | <span style="color: #0000ff">sudo<span style="color: #000000"> chpasswd
usermod -a -G <span style="color: #0000ff">sudo<span style="color: #000000"> jenkins;
usermod -a -<span style="color: #000000">G docker jenkins;
<span style="color: #0000ff">echo <span style="color: #800000">'<span style="color: #800000">jenkins ALL=(ALL:ALL) NOPASSWD: ALL<span style="color: #800000">' >> /etc/<span style="color: #000000">sudoers;
<span style="color: #0000ff">sudo <span style="color: #0000ff">mkdir /var/<span style="color: #000000">jenkins
<span style="color: #0000ff">sudo <span style="color: #0000ff">chown jenkins /var/<span style="color: #000000">jenkins
<span style="color: #0000ff">sudo apt-get -y <span style="color: #0000ff">install default-jre
添加 node(build agent):
用户。
pipeline {
agent {
docker { image 'node:7-alpine' }
}
stages {
stage('Test') {
steps {
sh 'node --version'
}
}
}
}
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] sh
[myjob] Running shell script
+ node --version
v7.10.1
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
agent {
docker {
image 'node:7-alpine'
label 'xxxxxx'
}
}
pipeline {
agent none
stages {
stage('Back-end') {
agent {
docker { image 'appropriate/curl' }
}
steps {
sh 'curl www.google.com'
}
}
stage('Front-end') {
agent {
docker { image 'node:7-alpine' }
}
steps {
sh 'node --version'
}
}
}
}
文件,在 build agent 上直接构建容器镜像,然后生成容器并执行命令。下面的 demo 中我们通过 Dockerfile 创建一个包含 curl 工具的容器镜像,然后通过该镜像启动容器并执行 文件:Dockerfile 、entrypoint.sh 和 Jenkinsfile,大家可以直接从这里下载它们。先看一下 Dockerfile 文件的内容:
apk add --update curl && rm -rf /var/cache/apk/*
内容如下:
#!/bin/- ! type -- &> /dev/; -- curl
内容如下:
pipeline {
agent {
dockerfile {
filename 'Dockerfile'
dir 'curl'
label 'docker'
}
}
stages {
stage('Test') {
steps {
sh 'curl http://www.cnblogs.com/sparkdev/p/8795141.html'
}
}
}
}
文件中我们设置了 dir 为 curl 目录,这是因为此项目的 Dockerfile 文件不是在代码库的根目录下,所以需要指定其相对目录的路径。代码仓库的路径就可以了。代码后先通过 Dockerifle 文件构建了容器镜像:
curl http://www.cnblogs.com/sparkdev/p/8795141.html 命令。
生成的容器镜像推送到仓库中
生成了容器镜像,并且完成了相关的测试(通过 curl 请求了测试网页)。接下来就是把生成的容器镜像推送到镜像仓库中。下面将演示如何在 pipeline 中把构建的镜像推送的镜像仓库。首先在 Folder 的配置界面中添加访问 dockerhub.com 凭据如下:
添加下面的 Pipeline script:
node {
checkout([$class: 'GitSCM',branches: [[name: '*/master']],userRemoteConfigs: [[url: 'https://github.com/sparkdevo/ctools.git']]])
docker.withRegistry('','9e70c1eb-814c-4cf2-97e9-5bfc20461231') {
def customImage = docker.build("ljfpower/curl:${env.BUILD_ID}","./curl")
customImage.inside {
sh 'curl http://www.cnblogs.com/sparkdev/p/8795141.html'
}
customImage.push()
customImage.push('latest')
}
}