Декларативный конвейер Jenkins: оператор if-else внутри директивы параметров - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь отобразить параметр выбора, если у меня есть варианты выбора, или отображать вводимый текст, что-то вроде этого (что не работает):

pipeline {
    agent any

    parameters {
       if (someOptions) {
          choice(name: 'FIELD_NAME', choices: "$someOptions", description: 'Field description')
       } else {
          string(name: 'FIELD_NAME', defaultValue: '', description: 'Field description')
       }
    }

    environment {
      // environment params
    }

    stages {
      // stages
    }
}

Есть ли способ делать это?

1 Ответ

0 голосов
/ 05 марта 2020

Чтобы расширить комментарий @Matt Schuchard, вот как это может выглядеть:

def my_param = []

if (someOptions) {
     my_param = [$class: 'ChoiceParameter',
            name: 'FIELD_NAME',
            choiceType: 'PT_SINGLE_SELECT',
            description: 'Choose the desired option',
            script:
                [$class: 'GroovyScript',
                  fallbackScript:
                    [classpath: [], sandbox: false, script: 'return ""'],
                  script:
                    [classpath: [], sandbox: false, script: "return $someOptions"]
                ]
            ]
} else {
    my_param = [$class: 'StringParameterDefinition',
            name: 'FIELD_NAME',
            defaultValue: false,
            description: '']
}

properties([
    parameters([my_param,
          // other parameters

Не забудьте одобрить Groovy сценарии в консоли утверждения сценариев.

...