Jenkins Pipeline определяет и устанавливает переменные - PullRequest
0 голосов
/ 13 сентября 2018

Я использую имя ветви для передачи его в скрипт сборки.$ (Env.BRANCH_NAME).

Я бы хотел манипулировать значением перед его использованием.Например, в случае, когда мы строим из транка, я хочу, чтобы суффикс для вывода сборки был пустым, но в случае ветвления я хочу, чтобы это было имя -branch.

В настоящее время я делаю это, определяя раздел среды.

environment {
    OUTPUT_NAME_SUFFIX = ($(env.BRANCH_NAME) == 'trunk') ? '': $(env.BRANCH_NAME)
}

Я получаю эту ошибку:

WorkflowScript: 4: Environment variable values must either be single quoted, double quoted, or function calls. @ line 4, column 62.
   (env.BRANCH_NAME) == 'trunk') ? '': $(en
                                 ^

Какой лучший способ определить переменные и оценить их значения в области конвейера.

TIA

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Я решил это, добавив следующий код. До сих пор не было проблем с пустыми строками.

stage('Set Environmnet'){
            steps {
                script {        
                    if(BRANCH_NAME == 'trunk'){
                        env.OUTPUT_NAME_SUFFIX = ''
                    }else if (BRANCH_NAME.startsWith("branches")){
                        env.OUTPUT_NAME_SUFFIX = "-" + BRANCH_NAME.substring(BRANCH_NAME.lastIndexOf("/")+1)
                    }else{
                        env.OUTPUT_NAME_SUFFIX = ''
                    }
                }
            }

        }
0 голосов
/ 13 сентября 2018

Вы можете использовать строковую интерполяцию для вычисления выражения:

environment {
    OUTPUT_NAME_SUFFIX = "${env.BRANCH_NAME == 'trunk' ? '': env.BRANCH_NAME}"
}

Это исправит полученную ошибку, однако конвейер не позволяет иметь переменные окружения, имеющие длину 0, или пустую строку ( JENKINS-43632 ).

Это означает, что установка OUTPUT_NAME_SUFFIX в '' подобна его отмене. Возможно, вы захотите предварительно рассчитать полное имя вашего вывода, чтобы ваша переменная env никогда не была пустой строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...