如何使用Groovy API检索Jenkins构建参数?

Noe*_*Yap 30 groovy jenkins

我有一个使用Perforce插件的参数化作业,并希望检索构建参数/属性以及Perforce插件设置的p4.change属性.

如何使用Jenkins Groovy API检索这些属性?

Pat*_* M. 25

请注意官方Jenkins Wiki页面还详细介绍了这一点: 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)
Run Code Online (Sandbox Code Playgroud)


ing*_*ger 24

为了解决单个参数(我想最常需要的),这是我发现的最简单的:

build.buildVariableResolver.resolve( "myparameter")

在Groovy System脚本构建步骤中.

  • 这导致`groovy.lang.MissingPropertyException:没有这样的属性:为类构建:Script1` (4认同)

mal*_*cot 17

关于参数:

请先查看此答案.获取项目的所有构建的列表(根据该答案获得):

project.builds
Run Code Online (Sandbox Code Playgroud)

当你发现你特别的身材,你需要得到类型的所有行动ParametersActionbuild.getActions(hudson.model.ParametersAction).然后,您可以在返回的对象中查询特定参数.

关于p4.change:我怀疑它也存储为一个动作.在Jenkins Groovy控制台中获取包含p4.change的构建的所有操作并检查它们 - 它将让您知道在代码中要查找的内容.


小智 10

我刚刚使用了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")
}
Run Code Online (Sandbox Code Playgroud)


ATr*_*bka 5

如果参数名称不能硬编码,我发现这将是访问参数的最简单和最好的方法:

def myParam = env.getProperty(dynamicParamName)
Run Code Online (Sandbox Code Playgroud)

在某些情况下,当参数名称已知并且可以硬编码时,以下 3 行是等效的:

def myParam = env.getProperty("myParamName")
def myParam = env.myParamName
def myParam = myParamName
Run Code Online (Sandbox Code Playgroud)