Как мне создать несколько genericVariables в скрипте Job DSL при использовании плагина generic-webhook-trigger? - PullRequest
0 голосов
/ 26 мая 2019

Я нашел хороший пример здесь , и я использовал этот код для добавления дополнительных универсальных переменных, но я просто не знаю, как изменить синтаксис.

pipelineJob('Generic Job Example') {
 parameters {
  stringParam('VARIABLE_FROM_POST', '')
 }

 triggers {
  genericTrigger {
   genericVariables {
    genericVariable {
     key("VARIABLE_FROM_POST")
     value("\$.something")
     expressionType("JSONPath") //Optional, defaults to JSONPath
     regexpFilter("") //Optional, defaults to empty string
     defaultValue("") //Optional, defaults to empty string
    }
   }
   genericRequestVariables {
    genericRequestVariable {
     key("requestParameterName")
     regexpFilter("")
    }
   }
   genericHeaderVariables {
    genericHeaderVariable {
     key("requestHeaderName")
     regexpFilter("")
    }
   }
   token('abc123')
   printContributedVariables(true)
   printPostContent(true)
   silentResponse(false)
   regexpFilterText("\$VARIABLE_FROM_POST")
   regexpFilterExpression("aRegExp")
  }
 }

 definition {
  cps {
   // Or just refer to a Jenkinsfile containing the pipeline
   script('''
 node {
 stage('Some Stage') {
 println "VARIABLE_FROM_POST: " + VARIABLE_FROM_POST
 }
 }
 ''')
   sandbox()
  }
 }
}

Эта частьПозвольте мне настроить первую переменную.

key("VARIABLE_FROM_POST")
value("\$.something")

Однако, если я добавлю еще один блок кода и попытаюсь добавить еще одну переменную, подобную этой:

pipelineJob('Generic Job Example') {
 parameters {
  stringParam('VARIABLE_FROM_POST', '')
 }

 triggers {
  genericTrigger {
   genericVariables {
    genericVariable {
     key("VARIABLE_FROM_POST")
     value("\$.something")
     expressionType("JSONPath") //Optional, defaults to JSONPath
     regexpFilter("") //Optional, defaults to empty string
     defaultValue("") //Optional, defaults to empty string
    genericVariable {
     key("project")
     value("\$.repository.name")
     expressionType("JSONPath") //Optional, defaults to JSONPath
     regexpFilter("") //Optional, defaults to empty string
     defaultValue("") //Optional, defaults to empty string
    }
    }
   }
   genericRequestVariables {
    genericRequestVariable {
     key("requestParameterName")
     regexpFilter("")
    }
   }
   genericHeaderVariables {
    genericHeaderVariable {
     key("requestHeaderName")
     regexpFilter("")
    }
   }
   token('abc123')
   printContributedVariables(true)
   printPostContent(true)
   silentResponse(false)
   regexpFilterText("\$VARIABLE_FROM_POST")
   regexpFilterExpression("aRegExp")
  }
 }

 definition {
  cps {
   // Or just refer to a Jenkinsfile containing the pipeline
   script('''
 node {
 stage('Some Stage') {
 println "VARIABLE_FROM_POST: " + VARIABLE_FROM_POST
 }
 }
 ''')
   sandbox()
  }
 }
}

Это приведет к созданию задания только с однимпеременная, проект в качестве имени переменной.

Я пробовал другие синтаксические манипуляции и не повезло.Есть ли ссылка, где показано, как эти сценарии могут быть созданы?Я извлекаю API-интерфейс Jenkins Job DSL здесь и не могу найти ответ.

...