Конвейер Дженкинса — сборка с параметрами

#jenkins #jenkins-pipeline

#Дженкинс #Дженкинс-конвейер

Вопрос:

Я пытаюсь выполнить уже определенное задание, используя метод сборки с конвейером Дженкинса. Это простой пример:

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

Но когда я пытаюсь его выполнить, я получаю сообщение об ошибке:

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

Ответ №1:

У вас есть несколько проблем при вызове сборки.

Во-первых, как упоминал шепель, вы должны назвать свои параметры, если у вас их несколько (вы можете забыть назвать его, только если используете только параметр по умолчанию job , например build 'my-simple-job-without-params' ).

Вторая проблема заключается в том, что вы неправильно передаете параметры. Чтобы передать параметры нижестоящему заданию, вы должны использовать параметр с именем parameters и предоставить ему массив объектов, которые определяют каждый из ваших параметров, например :

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

Кроме того, обратите внимание, что скобки не являются обязательными при вызове метода Groovy.

Комментарии:

1. Да, действительно.. Я обнаружил эту проблему после решения первой: D Спасибо за ваш ответ

2. Мне пришлось использовать немного другой синтаксис, чтобы заставить передачу параметров работать на меня: build job: 'jenkins-test-project-build', parameters: [string(name: 'param1', value:"some-value")]

3. Как мы можем передать параметр выбора

4. @RamakrishnaYelduti Если у вашего дочернего конвейера есть choice параметры, вы можете использовать string аргумент в родительском конвейере.

5. Кроме того, если необходимо передать несколько параметров, важна вложенность. Это выглядит так …. параметры: [[ … параметр …],[ … параметр …],[ … параметр …]]

Ответ №2:

Вы получаете эту ошибку, потому что вы не передали имя атрибута, который должен хранить ‘jenkins-test-project-build’.

В вашем случае вы должны передать атрибут задания.

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

Вот список доступных опций (конвейер-шаг сборки):

  • задание
  • параметры (необязательно)
  • распространение (необязательно)
  • Тихий период (необязательно)
  • подождите (необязательно)

Комментарии:

1. Как @Zoodor говорит ниже, параметры должны быть описаны следующим образом: build job: 'jenkins-test-project-build', parameters: [string(name: 'param1', value:"some-value"), string(name: 'param2', value:"some-value")]

Ответ №3:

Используйте генератор кода конвейера конкретного сервера jenkins для генерации кода, в моем случае это происходило из-за несоответствия версий, мы используем другую версию для разработки, а затем для производства, и каждый использовал другой синтаксис для вызова задания и передачи параметров.