Подтвердить что ты не робот

Как получить параметры сборки Jenkins с помощью API Groovy?

У меня есть параметризованное задание, которое использует плагин Perforce и хотел бы получить параметры/свойства сборки, а также свойство p4.change, заданное плагином Perforce.

Как получить эти свойства с помощью API Jenkins Groovy?

4b9b3361

Ответ 1

По поводу параметров:

Сначала посмотрите этот ответ. Чтобы получить список всех сборок для проекта (полученный согласно этому ответу):

project.builds

Когда вы найдете свою конкретную сборку, вам нужно получить все действия типа ParametersAction с build.getActions(hudson.model.ParametersAction). Затем вы запрашиваете возвращенный объект для ваших конкретных параметров.

Что касается p4.change: я подозреваю, что он также сохраняется как действие. В консоли Jenkins Groovy получите все действия для сборки, содержащей p4.change, и изучите их - это даст вам представление о том, что искать в вашем коде.

Ответ 2

Обратите внимание, что официальная страница Wiki Wiki Jenkins описывает это более подробно: https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+System+Groovy+script Основная часть воспроизводится ниже:

// get parameters
def parameters = build?.actions.find{ it instanceof ParametersAction }?.parameters
parameters.each {
   println "parameter ${it.name}:"
   println it.dump()
}

// ... or if you want the parameter by name ...
def hardcoded_param = "FOOBAR"
def resolver = build.buildVariableResolver
def hardcoded_param_value = resolver.resolve(hardcoded_param)

Ответ 3

Для решения одного параметра (я думаю, что наиболее часто необходимо), это самый простой, который я нашел:

build.buildVariableResolver.resolve( "myparameter" )

на шаге Groovy System script.

Ответ 4

У меня только что работает, поэтому, используя плагин Groovy Postbuild, вы можете сделать следующее:

def paramText
def actionList = manager.build.getActions(hudson.model.ParametersAction)
if (actionList.size() != 0)
{
  def pA = actionList.get(0)
  paramText = pA.createVariableResolver(manager.build).resolve("MY_PARAM_NAME")
}

Ответ 5

В случаях, когда имя параметра не может быть жестко закодировано, я обнаружил, что это будет самый простой и лучший способ получить доступ к параметрам:

def myParam = env.getProperty(dynamicParamName)

В случаях, когда имя параметра известно и может быть жестко закодировано, следующие 3 строки эквивалентны:

def myParam = env.getProperty("myParamName")
def myParam = env.myParamName
def myParam = myParamName

Ответ 6

Получить все параметры:

System.getenv().each{
  println it
}

Или более сложный:

def myvariables = getBinding().getVariables()
for (v in myvariables) {
   echo "${v} " + myvariables.get(v)
}

Вам нужно отключить "Использовать Groovy Песочницу" для обоих.

Ответ 7

Чтобы получить параметризованные параметры сборки из текущей сборки из вашего GroovyScript (используя Pipeline), все, что вам нужно сделать, это: скажем, у вас есть переменная с именем VARNAME.

def myVariable = env.VARNAME

Ответ 8

Если вы пытаетесь передать все параметры в задание Jenkins, вы можете использовать глобальную переменную params в вашем Groovy конвейере, чтобы получить его.

Http://jenkins_host: 8080/трубопровод-синтаксических/Глобалы

Титулы

Предоставляет все параметры, определенные в сборке, как карту только для чтения с различными типами значений. Пример:

if (params.BOOLEAN_PARAM_NAME) {doSomething()} или предоставить нетривиальное значение по умолчанию:

if (params.get('BOOLEAN_PARAM_NAME', true)) {doSomething()} Примечание для использования в нескольких ветвях (Jenkinsfile): шаг свойств позволяет определить свойства задания, но они вступают в силу при выполнении шага, тогда как определения параметров сборки обычно консультируются до начала сборки. Для удобства любые параметры, которые в настоящее время определены в задании и имеют значения по умолчанию, также будут перечислены на этой карте. Это позволяет вам написать, например:

свойства ([параметры ([строка (имя: 'BRANCH', defaultValue: 'master')])]) git url: '…', branch: params.BRANCH и будьте уверены, что ветвь master будет извлечена даже в начальная сборка проекта ветки, или если в предыдущей сборке не были указаны параметры или использовалось другое имя параметра.

Используйте что-то вроде ниже.

def dumpParameter()
{
  params.each {
    println it.key + " = " + it.value
  }
}