Я пытаюсь перенести наш процесс 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
Я пытался поиграть с каталогом ('/...'){...}, но, похоже, это не решило проблему... буду очень признателен за любую помощь или руководство!