Хобрук: Ваш путь к мастерству в программировании

Jenkinsfile не берет параметр задания сборки из задания

Я не понимаю, почему Jenkinsfile не берет параметризованное значение из задания. У меня этот параметр $BUILD_UI.

введите здесь описание изображения

Дженкинсфайл:

stages {
        stage("Prepare") {
            when {
                expression { return $BUILD_UI == 'true' }
            }
            steps {
                checkout([$class: 'GitSCM',
                            branches: [[name: '$UI_BRANCH_NAME' ]],
                            extensions: [[$class: 'CleanCheckout'],
                                            [$class: 'SubmoduleOption',
                                            disableSubmodules: false,
                                            parentCredentials: true,
                                            recursiveSubmodules: true,
                                            reference: '',
                                            trackingSubmodules: false],
                                            [$class: 'RelativeTargetDirectory',
                                            relativeTargetDir: 'defender-ui/']],
                            userRemoteConfigs: [[
                                url: '[email protected]:xxx/xxxxx.git',
                                credentialsId: 'xxxxxx-xxxxx-xxxx-xxxx'
                            ]]
                        ])
                
            }
        }

Но я продолжаю получать эту ошибку. Это не работает return $BUILD_UI == 'true' :

groovy.lang.MissingPropertyException: No such property: $BUILD_UI for class: groovy.lang.Binding
    at groovy.lang.Binding.getVariable(Binding.java:63)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:270)
    at org.kohsuke.groovy.sandbox.impl.Checker$6.call(Checker.java:291)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:295)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:271)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:271)
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:271)
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:29)
    at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
    at WorkflowScript.run(WorkflowScript:13) 

Ответы:


1

Вы должны удалить $ из имени переменной, чтобы оно выглядело так:

return BUILD_UI == 'true' 

Это связано с тем, что вы обращаетесь к переменной непосредственно в groovy, без необходимости ее расширения.

15.09.2020

2

Все параметры пайплайна в Jenkins Pipeline хранятся на карте params. Чтобы получить доступ к значению вашего параметра в условном выражении when, вам необходимо получить доступ к значению, присвоенному ключу, связанному с вашим параметром, то есть params.BUILD_UI. Кроме того, вы должны опустить синтаксис $, так как вы не интерполируете эту переменную внутри строки. В этом случае ваш код будет обновлен следующим образом:

expression { return params.BUILD_UI == 'true' }

Однако это параметр логического типа, и в настоящее время вы проверяете условное выражение со строкой, поэтому вам также потребуется исправить оператор равенства, чтобы он проверял логическое значение true, а не строку true:

expression { return params.BUILD_UI == true }

или упрощенно с правдивостью:

expression { return params.BUILD_UI }
15.09.2020
Новые материалы

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

стройный-i18следующий
Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..

Обзор 20 основных и современных методов работы с массивами в JavaScript
Вы знаете их всех? В этом коротком посте я покажу сводку методов, доступных в JavaScript для работы с массивами. Я надеюсь, что вы найдете это полезным! В конце поста вы найдете ссылку на..

Да, но я чувствую необходимость указать, что это или не единственные два.
Да, но я чувствую необходимость указать, что это или не единственные два. Обучение с подкреплением (в качестве примера) также является важным.

Получение стоковых обновлений с помощью Python
Для начинающего финансового аналитика Введение Описание: Этот проект Python создает скрипт для получения текущих обновлений акций с финансового веб-сайта Yahoo. Для этого проекта мы..