web-dev-qa-db-fra.com

Comment définir un choix par défaut dans le pipeline jenkins?

assez frustrant, je ne trouve pas d’exemple. Comment définir le choix par défaut?

parameters {
    choice(
        defaultValue: 'bbb',
        name: 'param1',
        choices: 'aaa\nbbb\nccc',
        description: 'lkdsjflksjlsjdf'
    )
}

defaultValue n'est pas valide ici. Je souhaite que le choix soit facultatif et qu'une valeur par défaut soit définie si le pipeline est exécuté de manière non manuelle (via une validation).

17
red888

Vous ne pouvez pas spécifier de valeur par défaut dans l'option. Selon la documentation de l'entrée choice, la première option sera l'option par défaut.

Les choix potentiels, un par ligne. La valeur sur la première ligne sera la valeur par défaut.

Vous pouvez voir cela dans le source de la documentation , et aussi comment il est appelé dans le code source .

return new StringParameterValue(
  getName(), 
  defaultValue == null ? choices.get(0) : defaultValue, getDescription()
);
26
mkobit

Comme indiqué par mkobit, cela ne semble pas possible avec le paramètre defaultValue, mais j'ai réorganisé la liste des choix en fonction du choix précédent.

defaultChoices = ["foo", "bar", "baz"]
choices = createChoicesWithPreviousChoice(defaultChoices, "${params.CHOICE}")

properties([
    parameters([
        choice(name: "CHOICE", choices: choices.join("\n"))
    ])   
])


node {
    stage('stuff') {
        sh("echo ${params.CHOICE}")
    }
}

List createChoicesWithPreviousChoice(List defaultChoices, String previousChoice) {
    if (previousChoice == null) {
       return defaultChoices
    }
    choices = defaultChoices.minus(previousChoice)
    choices.add(0, previousChoice)
    return choices
}
2
Chris Tompkinson