在Jenkinsfile中执行Dockerfile



我正在尝试在Jenkinsfile管道中运行Dockerfile。我有以下Dockerfile:

FROM ubuntu:latest
ENV VERSION=1.2.0
RUN apt-get update -y
RUN apt-get install -y python vim zip unzip
RUN mkdir -p /tmp
WORKDIR /tmp
COPY zip_job.py ./
RUN cat /etc/lsb-release
RUN uname -m
RUN ls -l /tmp

这是我的Jenkinsfile:

pipeline {
agent { dockerfile true }
stages { 
stage('Build') {
steps {
sh 'python zip_job.py'
}
}
stage('Publish') {
steps {
rtServer (
id: 'Artifactory-1',
url: 'https://aidock.jfrog.io/artifactory/devops-assignment/',
username: 'super-user'
password: 'Qw12856!'
)
rtUpload (
serverId: 'Artifactory-1',
spec: '''{
"files": [
{
"pattern": "tmp/*.zip",
"target": "binary-storage/1.2.0
}
]
}''',
)
}
}
stage('Report') {
steps {
echo 'Hello World'
}
}
stage('Cleanup') {
steps {
echo 'Hello World'
}
}
}

}

我在Docker中的工作目录应该是/tmp。当运行构建时,我得到以下错误:

Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/jenkins_home/workspace/My-Pipeline
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Agent Setup)
[Pipeline] isUnix
[Pipeline] readFile
[Pipeline] sh
+ docker build -t b96873ea12524b982ef8ce77660ade7f3744e812 -f Dockerfile .
/var/jenkins_home/workspace/My-Pipeline@tmp/durable-f53af459/script.sh: 1: /var/jenkins_home/workspace/My-Pipeline@tmp/durable-f53af459/script.sh: docker: not found
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 127
Finished: FAILURE

几乎尝试了书中的所有技巧,但都不起作用。安装Docker插件

谢谢你的帮助。谢谢!

使用从源存储库中包含的Dockerfile构建的容器执行管道或阶段。为了使用这个选项,必须从多分支管道或SCM的管道中加载Jenkinsfile。通常这是源存储库根目录下的Dockerfile: agent {Dockerfile true}。如果在其他目录中构建Dockerfile,则使用dir选项:agent {Dockerfile {dir 'someSubDir'}}。如果您的Dockerfile有其他名称,您可以使用filename选项指定文件名。你可以通过additionalBuildArgs选项向docker build…命令传递额外的参数,比如agent {dockerfile {additionalBuildArgs '——build-arg foo=bar'}}。例如,包含build/Dockerfile文件的存储库。构建,期望一个构建参数版本:

agent {
// Equivalent to "docker build -f Dockerfile.build --build-arg version=1.0.2 ./build/
dockerfile {
filename 'Dockerfile.build'
dir 'build'
label 'my-defined-label'
additionalBuildArgs  '--build-arg version=1.0.2'
args '-v /tmp:/tmp'
}
}

最新更新