在 Jenkinsfile 中执行 Dockerfile
Executing Dockerfile in Jenkinsfile
我正在尝试 运行 DockerJenkinsfile 管道中的文件。
我有以下 Docker 文件:
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
这是我的 Jenkins 文件:
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.build 的存储库,期望构建参数版本:
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'
}
}
我正在尝试 运行 DockerJenkinsfile 管道中的文件。 我有以下 Docker 文件:
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
这是我的 Jenkins 文件:
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.build 的存储库,期望构建参数版本:
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'
}
}