无法通过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看起来已经修复了。我将再次尝试升级和测试。