В моем Jenkinsfile у меня есть 2 этапа: Pre Live и Live. Я спрашиваю пользователя для ввода на этапе Pre Live, чтобы узнать, нужно ли выполнять развертывание в предварительно живой среде, а затем на этапе Live, я снова спрашиваю пользователя для ввода, чтобы знать, делать ли развертывание в живой среде или нет .
Мне удалось это реализовать. Вот как выглядит код:
stage("Pre Live") {
input {
message 'Deploy to Pre Live?'
parameters {
booleanParam(name: 'RELEASE_PRE_LIVE', defaultValue: false)
}
}
when {
beforeInput false
expression {
return RELEASE_PRE_LIVE.toBoolean()
}
}
steps {
// ...
}
}
stage("Live") {
input {
message 'Deploy to Live?'
parameters {
booleanParam(name: 'RELEASE_LIVE', defaultValue: false)
}
}
when {
beforeInput false
expression {
return RELEASE_LIVE.toBoolean()
}
}
steps {
// ...
}
}
Что я не могу сделать, однако, это слишком сохранить все эти логи c, но также запрашивать ввод на этапе Live, если предыдущий этап (Pre Live) был выполнен. Обычно это можно сделать с помощью директивы when
на этапе Live, но проблема в том, что мне нужна моя директива when
на этом этапе для оценки после input
, потому что мне нужно знать значение input
если пользователь хочет развернуть, чтобы жить или нет, но я также не хочу без необходимости ждать input
на этом этапе, если Pre Live никогда не запускался, потому что это не имеет смысла.