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

无法通过Jenkins声明性管道更改Docker容器内的目录,docker,jenkins,jenkins-pipeline,Docker,Jenkins,Jenkins Pipeline,我正在尝试使用此处概述的dir命令更改当前目录: 我对管道进行了如下编辑: pipeline { agent { dockerfile true } stages { stage('Change working directory...') { steps { dir('/var/www/html/community-edition') { sh 'pwd'

我正在尝试使用此处概述的
dir
命令更改当前目录:

我对管道进行了如下编辑:

pipeline {
    agent { dockerfile true } 
    stages { 
        stage('Change working directory...') { 
            steps {
                dir('/var/www/html/community-edition') {
                    sh 'pwd'
                }
            }
        }
    }
}
sh '(cd //var/www/html/community-edition && pwd)'
它根本不更改目录,而是尝试在主机上创建一个目录,失败原因是
java.io.IOException:Failed to mkdirs:/var/www/html/community edition


使用
shcd/var/www/html/communityedition
似乎也不起作用。如何更改容器中的目录?其他人似乎也有同样的问题,但不得不改变他的管道结构来改变目录,这听起来不是一个合理的解决方案。容器中是否已经调用了该步骤

我昨天也有同样的问题。这似乎会导致
dir()
在容器中使用时不更改目录。我通过立即执行
cd
pwd
命令使其工作,如下所示:

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

我也有同样的问题,当我在jenkinsfile管道中使用“ws”时,这对我来说是有效的:

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

我在使用
ws()
dir()
时也遇到了同样的问题。这个丑陋的解决方案对我来说很有效。如果您使用的是17.12之后的docker版本,那么这个bug看起来已经修复了。我将再次尝试升级和测试。