首页 文章

Jenkins教程maven项目(使用Docker)在Build阶段失败

提问于
浏览
1

我正在使用Docker的当前Jenkins Maven项目教程:

https://jenkins.io/doc/tutorials/build-a-java-app-with-maven/

我在Build阶段不断收到此错误:

[simple-java-maven-app]运行shell脚本sh:无法创建/var/jenkins_home/workspace/simple-java-maven-app@tmp/durable-bae402a9/jenkins-log.txt:不存在的目录sh:无法创建/var/jenkins_home/workspace/simple-java-maven-app@tmp/durable-bae402a9/jenkins-result.txt:不存在的目录

我已尝试在列出的目录中使用 chmod -R 777chown -R nobodychown -R 1000 设置限制性最小的权限,但似乎没有任何效果 .

这是在Docker版本17.12.0-ce上的jenkins映像,在Windows 10 Professional上构建c97c6d6时发生的 .

正如Jenkins网站上的Maven项目教程所发生的那样,我想知道有多少人遇到过这个问题 .

3 回答

  • 0

    我在MacOSX上也有同样的问题 . 经过几个小时的研究,我终于找到了解决方案 .

    要解决这个问题,重要的是要了解Jenkins位于容器内部,当此容器内的docker代理与docker引擎通信时,它会提供在容器内部安装容量的路径 . 但是您的码头引擎是外部的 . 因此,要允许正确地工作路径,容器必须与主机中容器外部的相同路径匹配 .

    要使其正常工作,您需要更改两件事 .

    • docker运行参数

    • Jenkinsfile泊坞窗代理参数

    对于我自己的用法,我使用了这个

    docker run -d \
      --env "JENKINS_HOME=$HOME/Library/Jenkins" \
      --restart always \
      --name jenkins \
      -u root \
      -p 8080:8080 \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -v $HOME/Library/Jenkins:$HOME/Library/Jenkins \
      -v "$HOME":/home \
      jenkinsci/blueocean
    

    在Jenkins文件中

    更换代理部件

    agent {
      docker {
        image 'maven:3-alpine'
        args '-v /root/.m2:/root/.m2'
      }
    

    通过

    agent {
      docker {
        image 'maven:3-alpine'
        args '-v <host_home_path>/.m2:/root/.m2'
      }
    
  • 2

    这个问题很可能是由于最近Docker行为发生了变化,而Jenkins的Docker Pipeline插件不再正确处理 .

    在没有详细说明的情况下,问题导致Jenkins无法识别其运行的容器,从而导致您在使用这些教程时遇到的错误(上图) .

    昨天发布了Docker Pipeline插件的新版本(1.15)(https://plugins.jenkins.io/docker-workflow) .

    如果您在Jenkins(在Docker中)实例(通过 Manage Jenkins > Manage Plugins )升级此插件,您会发现这些教程应该重新开始工作(如文档所述) .

  • 1

    错误消息表示未创建目录 durable-bae402a9 .

    回过头来查看应该创建该目录的步骤,并进行必要的更改以确保成功 .

相关问题