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?

31
demandé sur Jesse Glick 2016-05-04 13:31:54

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.

26
répondu Jesse Glick 2016-05-05 11:40:16

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))
    ]
18
répondu abguy 2017-05-23 12:03:07

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
3
répondu dsaydon 2017-06-21 11:43:52

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")

0
répondu Cosmo 2018-06-26 20:58:21