无法通过Jenkins声明性管道更改Docker容器内的目录

时间:2017-10-05 14:03:16

标签: docker jenkins jenkins-pipeline

我尝试使用此处列出的dir命令更改当前目录:https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/#code-dir-code-change-current-directory

我已经编辑了我的管道,就像这样:

pipeline {
    agent { dockerfile true } 
    stages { 
        stage('Change working directory...') { 
            steps {
                dir('/var/www/html/community-edition') {
                    sh 'pwd'
                }
            }
        }
    }
}

它根本不会更改目录,而是尝试在主机上创建目录,但失败并显示java.io.IOException: Failed to mkdirs: /var/www/html/community-edition

使用sh cd /var/www/html/community-edition似乎也无效。如何更改容器中的目录?其他人似乎有同样的问题,但不得不改变他的管道结构来改变目录,听起来不像是一个合理的修复。不是已经在容器中调用的步骤了吗? https://issues.jenkins-ci.org/browse/JENKINS-46636

2 个答案:

答案 0 :(得分:2)

昨天我遇到了同样的问题。似乎a bug导致dir()在容器内使用时不更改目录。我通过立即执行cdpwd命令让它工作,如下所示:

sh '(cd //var/www/html/community-edition && pwd)'

答案 1 :(得分:1)

我有同样的问题,当我在jenkinsfile管道中有“ ws”时,这对我有用:

   stage('prepare') {
        steps {
            ws('/var/jenkins_home/workspace/pipeline@script/desiredDir') {
              sh ''