J'utilise Jenkins v2.1 avec la fonctionnalité de pipeline de livraison intégrée ( https://jenkins.io/solutions/pipeline/ ) pour orchestrer deux versions existantes (construction et déploiement).
Dans ma construction paramétrée, je dispose de 3 paramètres utilisateur, qui doivent également pouvoir être sélectionnés dans le pipeline.
Le script de pipeline est le suivant:
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 la BooleanParameterValue
. Lorsque je crée le pipeline, l'erreur suivante est générée:
Java.lang.ClassCastException: hudson.model.BooleanParameterValue.value expects boolean but received class Java.lang.String
Comment puis-je résoudre cette erreur de conversion de typage?.
En supposant
value: update_composer
était le problème, essayez
value: Boolean.valueOf(update_composer)
y a-t-il un moyen moins encombrant de simplement transmettre TOUS les paramètres de pipeline au travail en aval?
Pas que je sache, du moins sans utiliser les appels de l'API Jenkins et désactiver le bac à sable Groovy.
En plus de Jesse Glick answer, si vous voulez passer un paramètre de chaîne, utilisez:
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 une chaîne en type booléen:
Boolean.valueOf(string_variable)
ou le booléen opposé en chaîne:
String.valueOf(boolean_variable)
dans mon cas, je devais descendre le paramètre booléen en aval vers un autre travail . Pour cela, vous devez utiliser la classe BooleanParameterValue:
build job: 'downstream_job_name', parameters:
[
[$class: 'BooleanParameterValue', name: 'parameter_name', value: false],
], wait: true