从 jenkins 扩展选择参数中获取源值
fetch source values from jenkins extended choice parameter
我添加了一个扩展选择参数。现在源值为 lin1、lin2、lin3,如屏幕截图中所列
现在当我运行,
如果我 select lin1 那么我得到 param3 = lin1,
如果我 select lin1 和 lin2 那么我得到 param2 - lin1,lin2(分隔符是逗号)
这里的问题是,在 jenkins 管道内部如何获取创建参数时设置的所有源值。简而言之,在没有 select 任何复选框的情况下,想要获取列表中可能值的列表
例如:
列表 1 = some_method(参数 3)
// 预期输出 >> list1 = [lin,lin2,lin3]
如果描述不清楚,请告诉我。
运行 的用户没有配置访问权限(我们不想给匿名用户配置访问权限)因此 job/config.xml 的想法在这里行不通
我找不到任何变量或方法来获取参数列表。我想通过 param
或 currentBuild
地图上未记录的方法,这在某种程度上是可能的。
您的问题的一个可能解决方案是在管道外部定义地图,然后像这样使用该变量:
def param3Choices = ['lin1', 'lin2', 'lin3']
pipeline {
parameters {
choice(name: 'PARAM3', choices: param3Choices, description: '')
}
stage('Debug') {
steps {
echo param.PARAM3
print param3Choices
}
}
}
根据要求,您还可以动态获取值:
import hudson.model.*
import org.jenkinsci.plugins.workflow.job.*
import com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition
def getJob(name) {
def hi = Hudson.instance
return hi.getItemByFullName(name, Job)
}
def getParam(WorkflowJob job, String paramName) {
def prop = job.getProperty(ParametersDefinitionProperty.class)
for (param in prop.getParameterDefinitions()) {
if (param.name == paramName) {
return param
}
}
return null
}
pipeline {
agent any
parameters {
choice(name: 'FOO', choices: ['1','2','3','4'])
}
stages {
stage('test') {
steps {
script {
def job = getJob(JOB_NAME)
def param = getParam(job, "FOO")
if (param instanceof ChoiceParameterDefinition) {
// for the standard choice parameter
print param.getChoices()
} else if (param instanceof ExtendedChoiceParameterDefinition) {
// for the extended choice parameter plugin
print param.getValue()
}
}
}
}
}
}
如您所见,它需要大量脚本,因此必须禁用 Groovy 沙盒或在脚本批准页面上批准大部分调用。
我添加了一个扩展选择参数。现在源值为 lin1、lin2、lin3,如屏幕截图中所列
现在当我运行, 如果我 select lin1 那么我得到 param3 = lin1,
如果我 select lin1 和 lin2 那么我得到 param2 - lin1,lin2(分隔符是逗号)
这里的问题是,在 jenkins 管道内部如何获取创建参数时设置的所有源值。简而言之,在没有 select 任何复选框的情况下,想要获取列表中可能值的列表
例如: 列表 1 = some_method(参数 3) // 预期输出 >> list1 = [lin,lin2,lin3]
如果描述不清楚,请告诉我。
运行 的用户没有配置访问权限(我们不想给匿名用户配置访问权限)因此 job/config.xml 的想法在这里行不通
我找不到任何变量或方法来获取参数列表。我想通过 param
或 currentBuild
地图上未记录的方法,这在某种程度上是可能的。
您的问题的一个可能解决方案是在管道外部定义地图,然后像这样使用该变量:
def param3Choices = ['lin1', 'lin2', 'lin3']
pipeline {
parameters {
choice(name: 'PARAM3', choices: param3Choices, description: '')
}
stage('Debug') {
steps {
echo param.PARAM3
print param3Choices
}
}
}
根据要求,您还可以动态获取值:
import hudson.model.*
import org.jenkinsci.plugins.workflow.job.*
import com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition
def getJob(name) {
def hi = Hudson.instance
return hi.getItemByFullName(name, Job)
}
def getParam(WorkflowJob job, String paramName) {
def prop = job.getProperty(ParametersDefinitionProperty.class)
for (param in prop.getParameterDefinitions()) {
if (param.name == paramName) {
return param
}
}
return null
}
pipeline {
agent any
parameters {
choice(name: 'FOO', choices: ['1','2','3','4'])
}
stages {
stage('test') {
steps {
script {
def job = getJob(JOB_NAME)
def param = getParam(job, "FOO")
if (param instanceof ChoiceParameterDefinition) {
// for the standard choice parameter
print param.getChoices()
} else if (param instanceof ExtendedChoiceParameterDefinition) {
// for the extended choice parameter plugin
print param.getValue()
}
}
}
}
}
}
如您所见,它需要大量脚本,因此必须禁用 Groovy 沙盒或在脚本批准页面上批准大部分调用。