Я пишу конвейер, который будет работать на двух отдельных серверах jenkins с разными агентами, но должен быть универсальным. Я определил метки для работника на верхнем уровне как
agent { label 'foonode||barnode' }
Но когда я хочу, чтобы какой-то этап выполнялся только на одном агенте, а следующий - на другом, рабочие области переключаются. Он прикрепляет 2@
к рабочему пространству. Пробовал с customWorkspace
опцией узла, но он изменил только имя рабочей области, и 2@
все еще обнаруживается с ошибками при вызове сценариев, которые отсутствуют в некоторых сценариях. Поэтому я применил громоздкий подход:
environment {
AGENTS="${env.NODE_LABELS}".tokenize()
}
stages {
stage('Foonode stage') {
when {
expression {
"${env.AGENTS}".contains('foonode')
}
}
steps {
//.....
}
}
И он работает следующим образом. Является ли это единственной возможностью предотвратить переключение рабочего пространства Jenkins? Параметр nodeReuse действителен только для docker агента, а не для простого Linux работника. Заранее спасибо.