我尝试使用此处列出的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
答案 0 :(得分:2)
昨天我遇到了同样的问题。似乎a bug导致dir()
在容器内使用时不更改目录。我通过立即执行cd
和pwd
命令让它工作,如下所示:
sh '(cd //var/www/html/community-edition && pwd)'
答案 1 :(得分:1)
我有同样的问题,当我在jenkinsfile管道中有“ ws”时,这对我有用:
stage('prepare') {
steps {
ws('/var/jenkins_home/workspace/pipeline@script/desiredDir') {
sh ''