2017-02-08 17 views
0

В моей мульти трубопроводного проекта Дженкинс я имею шаг ввода так:Дженкинс Groovy URL получить параметр

input message: 'Merge', parameters: [[$class: 'BooleanParameterDefinition', defaultValue: true, description: '', name: "Merge ${branchConfig.merge} to ${env.BRANCH_NAME}?"]] 

Я начал эту работу, вызвав этот адрес:

http://user:[email protected]/job/myTest/job/dev/build

сейчас Я хочу добавить параметр GET следующим образом:

http://user:[email protected]/job/myTest/job/dev/build?skipInput=true

Вопрос теперь в том, как я могу получить этот параметр в groovy?

UPDATE: После первого комментария, я сделал следующее:

// Add parameter to skip MergeInput. 
properties([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'BooleanParameterDefinition', name: 'skipMergeInput', defaultValue: false]]]]) 

И отрегулирован вход так:

input message: 'Merge', parameters: [[$class: 'BooleanParameterDefinition', defaultValue: params.skipMergeInput, description: '', name: "Merge ${branchConfig.merge} to ${env.BRANCH_NAME}?"]] 

Когда я сейчас начинаю свою работу, он показывает мне всплывающее окно которые запрашивают значение, которое должно быть установлено. Но независимо от того, что я решаю, вход всегда ложный. Я пытаюсь выяснить, что происходит не так, и обновит мой пост.

ОБНОВЛЕНИЕ 2: Так что я продолжал отлаживать. Я добавил следующее в мой заводной сценария:

// Add parameter to skip MergeInput. 
def doMerge = properties([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'BooleanParameterDefinition', name: 'doMerge', defaultValue: true]]]]) 
println doMerge; 

Выход возвращает меня NULL, и когда я делаю что-то вроде

println params.doMerge 

Он говорит мне, что Params не определен. Любая идея, что происходит не так?

UPDATE 3:

вызова URL:/Работа/dg_test/работа/мастер/buildWithParameters тест = истинный

Groovy Сценарий:

properties([[$class: 'ParametersDefinitionProperty', parameterDefinitions: [[$class: 'BooleanParameterDefinition', name: 'test', defaultValue: false]]]]) 
println params.test 

Результат:

No such property: params for class: groovy.lang.Binding 

ответ

2

я, наконец, решил его, этот пост мне очень помогло: https://stackoverflow.com/a/41276956/1565249

И это моя реализация:

// Add fancy build parameter. 
properties([ 
    parameters([ 
    booleanParam(
     defaultValue: false, 
     description: 'Some description', 
     name: 'developmentMerge' 
    ), 
    ]) 
]) 

if (developmentMerge == "true" || developmentMerge == true) { 
    // Your code here 
} 
else { 
    // Your code here 
} 

Когда я сейчас запускаю свою работу вручную из графического интерфейса, он спрашивает меня, какое значение должно быть установлено для «developmentMerge».

И я также может начать свою работу, вызвав этот URL: «/ Работа/dg_test/Работа/мастер/buildWithParameters developmentMerge = истина?»

Где «dg_test» это название моего проекта Дженкинс и " мастер "- это работа, которую я хотел начать.

если заявление должно быть сделано так:

if (developmentMerge == "true" || developmentMerge == true) 

, потому что, когда вы начинаете работу с GUI, он будет посылать логическое значение «истина», но когда вы начинаете работу по зову URL, вы получите строку.

+0

О, мы получаем строки из URL-адреса. Я еще не использовал строковые URL-адреса, это хорошо знать! Хорошо поймал :) – GabLeRoux

0

Это достижимо в 3 простых шага:

  1. Установите булево значение для построения трубопровода: enter image description here
  2. Используйте «Params."Префикс для доступа к вашему параметру во входном шаге сообщения:

    input message: 'Merge', parameters: [[$class: 'BooleanParameterDefinition', defaultValue: params.skipInput, description: '', name: "Merge ${branchConfig.merge} to ${env.BRANCH_NAME}?"]] 
    
  3. Используйте„buildWithParameters“команду апи, а не„строить“:
    http://user:[email protected]/job/myTest/job/dev/buildWithParameters?skipInput=true

+0

Поскольку я использую groovy-файл, я не могу просто добавить параметры сборки в конфигурацию моей работы. Это то, что я сделал сейчас: (обновление в моем сообщении) – Basti

+0

Вы уверены, что вызываете api, используя «/ buildWithParameters», а не просто «/ build». Похоже, что параметр вообще не передается. – eyalstoler

+0

Очень уверен, см. Мое обновление 3 – Basti

 Смежные вопросы

  • Нет связанных вопросов^_^