web-dev-qa-db-fra.com

Les paramètres de transmission du pipeline aux travaux en aval

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?.

38
Bram Gerritsen

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.

29
Jesse Glick

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))
    ]
29
abguy

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
6
dsaydon