首页 文章

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

提问于
浏览
1

通过使用jenkins,我创建了一个"Pipeline"类型的项目 . 我设置"Pipeline from SCM"得到 Jenkinsfile . 你可以查看我的GitHub repository

我想使用Jenkins管道来构建一个docker镜像 . 这是Jenkinsfile:

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 . 当它执行Jenkinsfile时,它无法在没有Dockerfile的情况下构建docker镜像 .

我该如何解决这个问题?

1 回答

  • 3

    你没有指示Jenkins检查你的存储库 . 您可以在调用docker之前添加 checkout scm 来执行此操作 . 像这样:

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

    当您使用"Pipeline from SCM"并指向Jenkins从中获取Jenkinsfile的位置时,变量 scm 由Jenkins设置 .

相关问题