tam*_*gal 3 jenkins docker dockerfile jenkins-pipeline
这让我抓狂:我尝试使用脚本化 Jenkins Pipeline 从存储库的特定文件夹中的 Dockerfile 构建 Docker 映像,但它没有获得正确的路径。
这是以下行Jenkinsfile:
def customImage = docker.build("km3pipe:${env.BUILD_ID}",
"-f ${dockerfile} ${DOCKER_FILES_DIR}")
Run Code Online (Sandbox Code Playgroud)
正如您在下面的 Jenkinslog 中看到的,变量已正确解析(我还仔细检查了工作区,一切都很好),但它似乎忽略了第二个参数.dockerfiles:
[py365] + docker build -t km3pipe:13 -f py365 ./dockerfiles
[py365] unable to prepare context: unable to evaluate symlinks in Dockerfile path:
lstat /var/lib/jenkins/workspace/f-docker-image-names-for-ci-2DCL5RJ7AMH7K
IB6OCBTD57EC5DUGYZTQE5EQ6KGOSPXMUOVJP6Q/py365: no such file or directory
Run Code Online (Sandbox Code Playgroud)
根据文档(https://jenkins.io/doc/book/pipeline/docker/),这应该有效:
可以通过将其他参数添加到方法的第二个参数来将其他参数传递给 docker build
build()。以这种方式传递参数时,该字符串中的最后一个值必须是 docker 文件的路径。
Dockerfile此示例通过传递 -f 标志来覆盖默认值:Run Code Online (Sandbox Code Playgroud)node { checkout scm def dockerfile = 'Dockerfile.test' def customImage = docker.build("my-image:${env.BUILD_ID}", "-f ${dockerfile} ./dockerfiles") }
my-image:${env.BUILD_ID}从Dockerfile在 处找到的内容构建./dockerfiles/Dockerfile.test。
意思是这个文件夹中没有名为 py365 的文件。你是对的,docker.build 步骤没有使用路径来运行构建。
该文档忽略了您必须在 dockerfile 语句中包含该目录:
def customImage = docker.build("km3pipe:${env.BUILD_ID}",
"-f ${DOCKER_FILES_DIR}/${dockerfile} ${DOCKER_FILES_DIR}")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7018 次 |
| 最近记录: |