在容器中运行 Jenkins pipeline 任务

前端之家收集整理的这篇文章主要介绍了在容器中运行 Jenkins pipeline 任务前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

插件实现了与 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

添加 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') } }

猜你在找的Docker相关文章