Actuellement, j'ai un travail de pipeline qui a différents paramètres où l'un de ces paramètres est un paramètre Choice. Voici la sortie config.xml de ce paramètre de travail:
<hudson.model.ChoiceParameterDefinition>
<choices class="Java.util.Arrays$ArrayList">
<a class="string-array">
<string>f1</string>
<string>f2</string>
<string>f3</string>
<string>f4</string>
</a>
</choices>
<name>WHERE</name>
<description>Something</description>
</hudson.model.ChoiceParameterDefinition>
Maintenant, je peux appeler ce travail à partir d'un pipeline via en passant un paramètre de chaîne:
build job: "NameOfTheJob"", parameters:
[
[$class: 'StringParameterValue', name: 'BRANCH', value: "${BRANCH}"],
]
Mais je n'ai pas réussi à définir les paramètres d'un paramètre de choix:
J'ai essayé ce qui suit:
build job: "NameOfTheJob"", parameters:
[
[$class: 'StringParameterValue', name: 'BRANCH', value: "${BRANCH}"],
[$class: 'ChoiceParameterValue', name: 'WHERE', value: 'F3'],
]
Mais cela a échoué avec l'erreur suivante:
Java.lang.UnsupportedOperationException: no known implementation of class hudson.model.ParameterValue is named ChoiceParameterValue
La question est donc la suivante: comment définir les paramètres de choix lors de l'appel d'un autre travail de pipeline:
build job: "NameOfTheJob"", parameters:
[
[$class: 'StringParameterValue', name: 'BRANCH', value: "${BRANCH}"],
[$class: '??????', ????],
]
Quelqu'un a-t-il un exemple d'une telle chose?
J'ai vu un exemple de travail qui utilise la syntaxe ci-dessous:
build job:'NameOfTheJob', parameters: [
string(name: 'FirstOption', value: "test"),
string(name: 'AnotherOption', value: "test12")
]
Fondamentalement, ne traitez pas les paramètres de choix d'une manière spéciale, traitez-les simplement comme des paramètres de chaîne réguliers.
En mode script, vous pouvez également le faire comme ceci, au moment où il est buggé et il attend les paramètres de choix comme une chaîne délimitée par une nouvelle ligne au lieu d'un tableau. Lorsque vous utilisez le Pipeline et JenkinsFile en mode script, vous pouvez effectuer une correction rapide comme suit:
properties(
[parameters([choice(choices: ["A", "B", "C"].join("\n"),
description: 'Some choice parameter',
name: 'SOME_CHOICE')])])
Vous pouvez mettre cela avant votre première instruction de noeud pour ajouter des paramètres à vos builds.
Mise à jour: exemple de sélection multiple avec plug-in de paramètre de choix étendu dans le fichier de pipeline Jenkins:
com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition extendedChoiceParameterDefinition = new com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition(
"OPTION_NAME", // name
"PT_CHECKBOX", // type
"option1,option2,option3", // values
null, // projectName
null, // propertyFile
null, // groovyScript
null, // groovyScriptFile
null, // bindings
null, // groovyClasspath
null, // propertyKey
"option1,option2", // defaultValue
null, // defaultPropertyFile
null, // defaultGroovyScript
null, // defaultGroovyScriptFile
null, // defaultBindings
null, // defaultGroovyClasspath
null, // defaultPropertyKey
null, // descriptionPropertyValue
null, // descriptionPropertyFile
null, // descriptionGroovyScript
null, // descriptionGroovyScriptFile
null, // descriptionBindings
null, // descriptionGroovyClasspath
null, // descriptionPropertyKey
null, // javascriptFile
null, // javascript
false, // saveJSONParameterToFile
false, // quoteValue
10, // visible item count
"Select your options", // description
"," //multiSelectDelimiter
)
normalChoiceOptions = ["option1","option2"]
properties([
parameters([
choice(choices: normalChoiceOptions.join("\n"), description: 'Single select option', name: 'SOME_OPTION'),
extendedChoiceParameterDefinition
])
])
Sur la base de la pointe de c3st7n, j'ai testé les éléments suivants:
build job: "NameOfTheJob"", parameters:
[
[$class: 'StringParameterValue', name: 'BRANCH', value: "${BRANCH}"],
[$class: 'StringParameterValue', name: 'WHERE', value: "F3"],
]
Cela marche.