#jenkins #multibranch-pipeline
#дженкинс #многоотраслевой конвейер
Вопрос:
У меня возникла проблема с многоотраслевым конвейером Jenkins, который параметризован. Все параметры объявлены в файле Jenkins.
Проблема в том, что эти параметры не существуют при самом первом запуске задания. Таким образом, самое первое выполнение завершится неудачей с groovy.lang.MissingPropertyException
. Любой последующий запуск теперь знает о параметрах и не завершится ошибкой.
Поскольку это многоотраслевой конвейер, это происходит для каждого нового запроса на извлечение или отслеживаемой ветви. Есть ли какое-либо обходное решение, чтобы избежать этой проблемы?
Я также попытался установить параметры в пользовательском интерфейсе, однако на странице конфигурации конвейера нет опции для установки параметров. Вероятно, потому, что это многоотраслевой конвейер?
Приветствия
Ответ №1:
Это известная проблема с параметрами в конвейерах. Чтобы узнать, какие параметры необходимы, Дженкинсу необходимо выполнить файл Дженкинса один раз. Например, параметры в графическом интерфейсе недоступны до окончания первого запуска конвейера.
Чтобы предотвратить ошибки, вы могли бы указать разумные значения по умолчанию следующим образом:
pipeline {
agent any
parameters {
string(name: 'Greeting', defaultValue: 'Hello', description: 'How should I greet the world?')
}
stages {
stage('Example') {
steps {
echo "${params.Greeting} World!"
}
}
}
}
Комментарии:
1. Хотя в моем случае это не было решением, поскольку я уже определил значения по умолчанию, это все равно привело меня к реальному решению моей проблемы. Я не знал, что к параметрам следует обращаться через
params
объект, и обращался к ним напрямую. Я все равно отмечу его как ответ. Спасибо!2. @xxSwordy могу я узнать, каким было ваше решение в конечном итоге?
3. @aeoluseros Вы должны использовать
${params.Foo}
вместо${Foo}
. Это скрыто в принятом ответе.