Переменная services
здесь, скорее всего, является либо строкой с символами новой строки (services = "choice a/nchoice b"
), либо списком (services = ["choice a", "choice b"
]. Оба работают в эти дни.
Я думаю, вы можете установитьпеременная в директиве environment
, а затем использовать ее в parameters
[на самом деле версия environment
не работает] или (возможно, зло) вне pipeline
:
List<String> CHOICES = ["a", "b", "c"]
pipeline {
agent any
options {
timestamps()
}
parameters {
choice(name: 'CHOICE', choices: CHOICES, description: 'Who to greet?')
}
stages {
stage("test") {
steps {
echo params.CHOICE
}
}
}
}
Я однажды использовал это, чтобы получить все метки образов Docker в нашем реестре, чтобы выбрать, какой из них должен быть развернут. Есть несколько проблем с этим:
- Это AFAIK, полностью недокументированный, поэтомуможет просто со временем перестать работать.
- Код выполняется каждый раз, когда читается Jenkinsfile. Он настраивает задание, поэтому параметры меняются для следующей сборки . Так что в моем случае яполучил только метки, которые существовали во время последней сборки, а не существующие в настоящее время.