Paramètres de passage du Pipeline aux travaux en aval
J'utilise Jenkins v2.1 avec la fonction de pipeline de livraison intégrée (https://jenkins.io/solutions/pipeline/) pour orchestrer deux constructions existantes (construire et déployer).
dans ma construction paramétrée, j'ai 3 paramètres d'utilisateur configurés, qui doivent également être sélectionnables dans le pipeline.
Le pipeline script est comme suit:
node: {
stage 'build'
build job: 'build', parameters: [[$class: 'StringParameterValue', name: 'target', value: target], [$class: 'ListSubversionTagsParameterValue', name: 'release', tag: release], [$class: 'BooleanParameterValue', name: 'update_composer', value: update_composer]]
stage 'deploy'
build job: 'deploy', parameters: [[$class: 'StringParameterValue', name: 'target', value: target]]
}
cela fonctionne correctement sauf pour le BooleanParameterValue
. Quand je construis le pipeline l'erreur suivante est jetés:
java.lang.ClassCastException: hudson.model.BooleanParameterValue.value expects boolean but received class java.lang.String
comment résoudre cette erreur de typographie? Ou encore, y a-t-il un moyen moins encombrant de passer tous les paramètres du pipeline au travail en aval?
4 réponses
en Supposant que
value: update_composer
a été le problème, essayez
value: Boolean.valueOf(update_composer)
pas que je sache, du moins pas sans avoir utilisé les appels de L'API Jenkins et désactivé le Groovy sandbox.
Jesse Glick réponse, si vous voulez passer des paramètre de chaîne alors utiliser:
build job: 'your-job-name',
parameters: [
string(name: 'passed_build_number_param', value: String.valueOf(BUILD_NUMBER)),
string(name: 'complex_param', value: 'prefix-' + String.valueOf(BUILD_NUMBER))
]
comme Jesse Jesse Glick et abguy a dit que vous pouvez énumérer chaîne en type Booléen:
Boolean.valueOf(string_variable)
ou l'inverse Booléen chaîne:
String.valueOf(boolean_variable)
dans mon cas, j'ai dû en aval paramètre Booléen à un autre emploi. Donc, pour cela, vous aurez besoin de l'utilisation de la classe BooleanParameterValue:
build job: 'downstream_job_name', parameters:
[
[$class: 'BooleanParameterValue', name: 'parameter_name', value: false],
], wait: true
les paramètres "booléens" de Jenkins sont en fait juste un raccourci pour le type "paramètre de choix" avec les choix codés en dur sur les chaînes "true" et "false", et avec une case à cocher pour définir la variable de chaîne. Mais en fin de compte, c'est juste cela: une variable string, sans rien à voir avec un vrai booléen. C'est pourquoi vous devez convertir la chaîne en booléen si vous ne voulez pas faire une comparaison de chaîne comme:
if (myBoolean == "true")