Api Jenkins获取选择参数列表

时间:2018-06-21 07:27:42

标签: jenkins jenkins-pipeline

我想使用api jenkins检索我的选择参数中的选择列表

我尝试:

http://jenkins-url/api/json?tree=jobs[name,builds[number,actions[parameters[name,value]]]]&pretty=true

但我得到的只是价值

  

“名称”:“上下文”,   “ value”:“ foo”

我将输出:

  

“名称”:“上下文”,   “ value”:“ foo,foo,...”

有可能吗?

2 个答案:

答案 0 :(得分:0)

请务必查看文档以获取给定job的构建参数 https://javadoc.jenkins-ci.org/hudson/model/ParametersDefinitionProperty.html

如果您已经引用了特定的Jenkins职位,则可以按照以下示例进行操作

def paramsProp = job.getProperty(ParametersDefinitionProperty.class)
if ( paramsProp ) {
    // Single out specific build param
    myBuildParam = paramsProp.getParameterDefinition( 'MY_BUILD_PARAM' )
    println 'Default value for ' + myBuildParam.getDisplayName() + ': ' + myBuildParam.getDefaultParameterValue().value
    println 'Param Type ' + myBuildParam.getClass()

    // Get all build params
    myBuildParams = paramsProp.getParameterDefinitions()
    // ... GET VALUES ETC
}

您可以从build参数中检索的特定项目将取决于该参数类型是什么。您需要为每个查询API,例如ChoiceParameter

https://javadoc.jenkins.io/hudson/model/ChoiceParameterDefinition.html

答案 1 :(得分:0)

这是一个可以在詹金斯管道作业中使用的方法的示例:

private String[] getChoices {
   def job = hudson.model.Hudson.instance.getItem(env.JOB_NAME)
   def paramsProp = job.getProperty(ParametersDefinitionProperty.class)
   def releaseTeamParameter = paramsProp.getParameterDefinitions().find { it.name == "MY_CHOICES_PARAM_NAME"}       
   return releaseTeamParameter.getChoices().toArray()
}

该方法旨在从作业本身内部执行,并且您需要指定参数名称来代替MY_CHOICES_PARAM_NAME