3 votes

Jenkins Pipeline - Construire avec des paramètres

J'essaie d'exécuter un travail déjà défini en utilisant la méthode suivante construire avec le pipeline Jenkins. Il s'agit d'un exemple simple :

 build('jenkins-test-project-build', param1 : 'some-value')

Mais lorsque j'essaie de l'exécuter, j'obtiens une erreur :

java.lang.IllegalArgumentException: Expected named arguments but got [{param1=some-value}, jenkins-test-project-build]
at org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java:442)
at org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java:380)
at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:156)
at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:126)
...............

12voto

Pom12 Points 3850

Vous avez plusieurs problèmes dans votre appel de construction.

Tout d'abord, comme l'a mentionné sshepel, vous devez nommez vos paramètres si vous en avez plus d'un (vous pouvez oublier de le nommer si vous n'utilisez que le paramètre par défaut job par exemple build 'my-simple-job-without-params' ).

Le second problème est que vous êtes ne passe pas les paramètres correctement . Pour transmettre des paramètres à un travail en aval, vous devez utiliser le paramètre nommé parameters et lui donner un tableau d'objets qui définissent chacun de vos paramètres, par exemple :

build job: 'jenkins-test-project-build', parameters: [[$class: 'StringParameterValue', name: 'param1', value: "some-value" ]]

Notez également que les parenthèses sont facultatives dans un appel de méthode Groovy.

5voto

sshepel Points 484

Vous obtenez cette erreur parce que vous n'avez pas indiqué le nom de l'attribut qui doit stocker 'jenkins-test-project-build'.

Dans votre cas, vous devriez passer emploi attribut.

build(job: 'jenkins-test-project-build', param1 : 'some-value')

Voici la liste des options disponibles( pipeline-build-step ) :

  • emploi
  • paramètres (facultatif)
  • propager (facultatif)
  • quietPeriod (facultatif)
  • attendre (facultatif)

1voto

Mahesh Points 165

Utilisez le générateur de code de pipeline du serveur Jenkins spécifique pour générer le code, dans mon cas, cela se produisait à cause d'un décalage de version, nous utilisons une version différente pour le développement et la production et chacun utilise une syntaxe différente pour appeler un travail et passer des paramètres.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X