Параметр Дженкинса не существует при первом запуске (многоотраслевой)

#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} . Это скрыто в принятом ответе.