Jenkins Pipeline лучший способ использовать параметр выбора для проверки условий - PullRequest
0 голосов
/ 01 ноября 2018

Трубопровод выполняет два задания: задание X и задание Y. У конвейера есть параметр выбора, который требуется заданием Y. Варианты выбора параметров: A, B и C.

Задание Y имеет 3 условия: если Выбор == A, то выполнить задание 1 иначе, если Выбор == B, тогда выполните задачу 2 еще сделать задание 3

Застревание при объявлении условий выбора на ЭТАПЕ Задания Y.

p.s. попробовал параметр Active Choice, не могу работать через него.

Кто-нибудь может помочь с логикой для этой проблемы?

1 Ответ

0 голосов
/ 02 ноября 2018

Я предполагаю, что задание Y вызывается из вашего конвейера как задание нижестоящего уровня. Таким образом, где-то (вероятно, конец вашего конвейера) у вас будет:

build job: 'CloudbeeFolder1/Path/To/JobY', propagate: false, wait: false, parameters: [[$class: 'StringParameterValue', name: 'MY_PARAM', value: "${env.SOME_VALUE}"]]

Тогда в JobY на «другой стороне» у вас есть:

environment {
    PARAM_FROM_PIPELINE = "${params.MY_PARAM}"
}

Получает значение вашего параметра в переменную окружения в JobY.

В зависимости от того, какие задачи вы можете выполнять в пакетном (или sh) файле, передавая PARAM_FROM_PIPELINE примерно так:

stages {
    stage("Do Tasks") {
        steps {
            bat "mybatchfile.bat ${env.PARAM_FROM_PIPELINE}"
        }
    }
}

Наконец, в mybatchfile.bat вы можете прочитать значение ${env.PARAM_FROM_PIPELINE} примерно так:

@ECHO OFF

SET PARAM_VAL=%1
ECHO PARAM VALUE IS: %PARAM_VAL%

IF %PARAM_VAL% = "A" (
  REM DO TASK1
) ELSE (
    IF %PARAM_VAL% = "B" (
        REM DO TASK2
    ) ELSE (
        REM DO TASK3
    )
)

Если вы не хотите инкапсулировать логику if-else в командный файл, вы можете использовать блок script {...} в вашем Jenkinsfile, чтобы использовать сценарий конвейера.

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