我正在尝试将我们的 CI 流程从 JobDSL 迁移到多分支管道设置。作为第一步,我决定将管道委托回现有作业(传递所需的参数)我的管道如下所示(伪代码)
stage('setup')
node('cotroller') {
...
}
stage('test') {
parallel {
'web' : {build job 'web-test' ..params...},
'API' : {build job 'api-test' ..params...}
}
}
stage('build') {
parallel {
'web' : {build job 'web-build' ..params...},
'API' : {build job 'api-build' ..params...}
}
}
stage('publish') {
node('controller'){
sh './gradlew publishArtifacts'
}
}
但是,我在最后一个“发布”阶段遇到了问题。当它启动 gradle 目标时,它正确地重用了“设置”阶段的工作区,但似乎在原始结帐的“持久”子文件夹中执行(即,设置阶段的过去执行/mnt/jenkins/workspace/<branchname>/<random_hash>/
但最后一个 gradle 目标执行在诸如/mnt/jenkins/workspace/<branchname>/<random_hash>@tmp/durable-<hash>/script.sh
) 的文件夹中,这会导致 gradlew not found 错误
我尝试过使用 directory('/...'){...} ,但这似乎并没有解决问题...任何帮助或指导将不胜感激!