Шаг ввода с логическим параметром всегда выполняется в конвейере Дженкинса - PullRequest
0 голосов
/ 17 апреля 2020

Я добавил шаг ввода в свой конвейер Jenkins с логическим параметром. Однако независимо от того, установлен ли я флажок или снят флажок при запуске конвейера, вывод консоли всегда показывает «ДА».

Что мне здесь не хватает? Насколько я понимаю, если пользователь снимает флажок с этого параметра, сценарий должен ввести оператор else.

stage('Dockerize') {                
    input {
        message 'Build Docker image'
        parameters {
            booleanParam(name: 'BUILD_DOCKER_IMAGE', defaultValue: true, description: 'Uncheck to skip creation of Docker image.')
        }
    }
    steps {
        script {
            if (BUILD_DOCKER_IMAGE) {
                echo "YEAH"
            } else {
                echo "NAY"
            }
        }                    
    }
}

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

Тип операторов PARAMETERNAME и env.PARAMETERNAME всегда равен String, независимо от фактического типа параметра. Это потому, что они передаются как переменные окружения, которые могут быть только строками.

Для сохранения исходного типа используйте params.PARAMETERNAME:

if (params.BUILD_DOCKER_IMAGE) {
  // Do stuff here...
}

Более чистый и более безопасный для типов, чем BUILD_DOCKER_IMAGE.toBoolean().

0 голосов
/ 17 апреля 2020

Я обнаружил, что мне нужно проанализировать переменную как логическое значение:

if (BUILD_DOCKER_IMAGE.toBoolean()) {
  // Do stuff here...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...