如何使用Jenkins管道构建docker映像?

如何使用Jenkins管道构建docker映像?,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,通过使用jenkins,我创建了一个“管道”类型的项。我将“Pipeline from SCM”设置为获取Jenkinsfile。您可以查看我的: 我想用詹金斯管道建立一个码头工人形象。以下是Jenkins文件: node { sh "docker build -t 192.168.59.224:5000/ubuntu-test ." } Dockerfile也非常简单: FROM ubuntu:14.04 RUN sudo apt-get update && sudo

通过使用jenkins,我创建了一个“管道”类型的项。我将“Pipeline from SCM”设置为获取
Jenkinsfile
。您可以查看我的:

我想用詹金斯管道建立一个码头工人形象。以下是Jenkins文件:

node {
   sh "docker build -t 192.168.59.224:5000/ubuntu-test ."
}
Dockerfile也非常简单:

FROM ubuntu:14.04

RUN sudo apt-get update && sudo apt-get install -y wget
当我运行项目时。我得到了以下错误:

unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /var/jenkins_home/workspace/test/Dockerfile: no such file or directory
下面是完整的控制台输出

Started by user kai
[Pipeline] node
Running on master in /var/jenkins_home/workspace/test
[Pipeline] {
[Pipeline] sh
[test] Running shell script
+ docker build -t 192.168.59.224:5000/ubuntu-test .
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /var/jenkins_home/workspace/test/Dockerfile: no such file or directory
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 1
Finished: FAILURE
我检查了工作区:

ls /var/jenkins_home/workspace/test/


ls /var/jenkins_home/workspace/test@script/
Dockerfile
Jenkinsfile
test目录中没有任何内容,但Jenkinsfile和Dockerfile都在test@script目录

Jenkins似乎只从存储库中获取Jenkins。当它执行Jenkins文件时,如果没有Dockerfile,它无法构建docker映像


我该如何解决这个问题?

你不是在指示Jenkins检查你的存储库。您可以通过在调用docker之前添加
签出scm
来完成此操作。像这样:

node {
  checkout scm
  sh "docker build -t 192.168.59.224:5000/ubuntu-test ."
}

变量
scm
由Jenkins在您使用“来自scm的管道”时设置,并指向Jenkins获取Jenkins文件的位置。

好的,请确保正确签出了
/var/Jenkins\u home/workspace/test/Dockerfile
。我还建议您编辑您的问题并添加完整日志。我已经检查了工作区并添加了完整日志。请查收,谢谢!很明显,Jenkins没有在工作区中签出源代码(而不是
test@script
,Jenkins仅用于检索Jenkins文件)。那么,这是我上面建议的管道脚本中的日志(使用
签出scm
)还是您的首字母?如果您有scm签出,您应该会在日志中看到类似于签出修订版的内容。。谢谢!我犯了一个错误:我没有正确更新git存储库!