Ваш трубопровод, скорее всего, выглядит следующим образом:
node {
stage('build') {
// sh "make"
}
// ...
stage('trigger-project-c') {
def job = build job: 'project-c', parameters: [[$class: 'StringParameterValue', name: 'MY_PARAM', value: 'somevalue']]
}
}
По оборачивать все внутри node
закрытия, работа по потоку project-c
срабатывает рядную, без задания перед быть приостановлено/выпускает исполнитель.
Следовательно, вещи, которые по существу ничего не делают в течение длительного времени, не должны быть обернуты в шаге node
, чтобы не блокировать исполнителя. Очень похожий случай, когда using the input
step to wait for user feedback.
Вместо этого ваш трубопровод должен выглядеть, например. как следует, что - так сказать - лучшая практика (как вы не блокировать ваш исполнитель):
stage('build') {
node {
// sh "make"
}
}
// or
node {
stage('build') {
// sh "make"
}
stage('unit') {
// sh "make"
}
} // node
// note: the following code is _not_ wrapped inside a `node` step
stage('trigger-project-c') {
def job = build job: 'project-c', parameters: [[$class: 'StringParameterValue', name: 'MY_PARAM', value: 'somevalue']]
}
Там нет необходимости, чтобы обернуть build
шаг в node
, т.е. блокировать исполнителя для Это. Для других шагов (например, sh
) выполнение конвейера вызовет ошибку и напомнит вам, что он не может быть запущен за пределами выделения node
.
Спасибо за объяснение, теперь имеет смысл! –