Я перестраиваю существующий конвейер сборки как декларативный конвейер jenkins (multi-branch-конвейер) и имеет проблемы с обработкой сборки.
После упаковки и хранения всех соответствующих файлов конвейер должен ждать ввода пользователем для запуска развертывания.
Если я просто добавлю шаг ввода, блокируется текущий build- node. Поскольку этот исполнитель довольно тяжелый, я бы хотел переместить этот шаг на более легкую машину.
Сначала я выполнил задание как сценарий и только создал два разных блока node('label')
. есть ли способ сделать что-то подобное с декларативным синтаксисом?
node('spine') {
stage('builder') {
sh 'mvn clean compile'
stash name: 'artifact', includes: 'target/*.war'
}
}
node('lightweight') {
stage('wait') {
timeout(time:5, unit:'DAYS') {
input message:'Approve deployment?'
}
}
// add deployment stages
}
Я уже пробовал пару вещей:
настройка агента на верхнем уровне и добавление дополнительной конфигурации агента на шаг распространения, но тогда у меня есть две исполнители, блокирующие, так как не установленная конструкция верхнего уровня node не останавливается.
Настройка agent none
на верхнем уровне и настройка агентов на каждый шаг. то проверка git отсутствует на первом node.
РЕДАКТИРОВАТЬ 1
i переконфигурировал мой конвейер после вашего совета, в настоящее время он выглядит следующим образом:
pipeline {
agent none
tools {
maven 'M3'
}
stages {
stage('Build') {
agent { label 'spine' }
steps {
checkout scm // needed, otherwise the workspace on the first step is empty
sh "mvn clean compile"
}
}
stage('Test') {
agent { label 'spine' }
steps {
sh "mvn verify" // fails because the workspace is empty aggain
junit '**/target/surefire-reports/TEST-*.xml'
}
}
}
}
эта сборка завершится неудачно, потому что рабочее пространство не переносится между шагами, поскольку они не запускаются на одном и том же исполнителе.
РЕДАКТИРОВАТЬ 2
по-видимому, иногда шаги выполняются на одном и том же исполнителе, а иногда нет. (мы создаем рабочую рабочую станцию на нашем кластере mesos/dcos по требованию, поэтому смена исполнительной средней сборки будет проблемой)
Я ожидал, что jenkins просто запустится с текущим исполнителем до тех пор, пока метка в определении агента не изменится.