GMs*_*soF 3 groovy jenkins jenkins-pipeline
我遇到了cd无法在 Window 节点中工作的问题:
node("Window-node") {
stage('unstash'){
echo 'unstash..'
deleteDir()
unstash name: uat_stash
unstash name: prd_stash
bat "cd ${path}"
bat "mkdir ${params.tag_name}"
}
}
Run Code Online (Sandbox Code Playgroud)
问题发生在bat "cd ${path}",它并没有真正转到特定路径,因此mkdir失败。
这path是 jenkins 工作区之外的某个地方,当我在下面使用时,它工作正常:
dir("${path}") {
bat "mkdir ${params.tag_name}"
}
Run Code Online (Sandbox Code Playgroud)
我不太确定为什么,但我不喜欢使用,dir因为它会创建一个临时文件夹xxx@tmp,但在 Jenkins 工作完成后永远不会清理。
有谁知道为什么cd失败?或者,我可以在dir不创建 Jenkins 临时文件夹的情况下使用吗?
第一个命令bat "cd ${path}"执行您期望的操作。但是,bat第二步不在上一步的上下文中运行,因此它从工作程序节点根工作区目录开始。
您可以通过用bat单个多行脚本替换两个步骤来解决它,例如
node("Window-node") {
stage('unstash'){
echo 'unstash..'
deleteDir()
unstash name: uat_stash
unstash name: prd_stash
bat """
cd ${path}
mkdir ${params.tag_name}
""".stripIndent().trim()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4922 次 |
| 最近记录: |