我遇到了同样的问题并想出了一个解决方案。
您可以使用 Jenkins 管道 currentBuild 变量,详细了解其属性 - 在您的 Jenkins 服务器上打开页面 jenkins-server-url/jenkins/pipeline-syntax/globals
String currentJobParentFolderName = currentBuild.fullProjectName.split('/')[0]
String currentJobName = currentBuild.projectName
String paramValue = getParamValue(currentJobName)
properties([
buildDiscarder(logRotator(daysToKeepStr: '10')),
disableResume(),
parameters([
[$class: 'CascadeChoiceParameter',
name: 'PARAM',
choiceType: 'PT_SINGLE_SELECT',
description: 'param1',
filterLength: 1,
filterable: false,
randomName: 'choice-parameter-99999999999',
script: [
$class: 'GroovyScript',
fallbackScript: [
classpath: [],
sandbox: false,
script:
'return ["Failed to get values"]'
],
script: [
classpath: [],
sandbox: false,
script:
"""return ['$paramValue']"""
]
]
]
])
])
timestamps {
job's main logic
}
private static def getParamValue(String jobName) {
Map paramValMapping = [
'jobName1': 'value1',
'jobName2': 'value2',
]
String paramValue = paramValMapping.get(jobName)
if (!paramValue) {
throw new Exception("Failed to get value")
}
return paramValue
}
currentBuild.fullProjectName - 工作名称,包括上层文件夹(我正是需要这个)
currentBuild.projectName - 只是一个工作名称
不幸的是,我没有设法将所有这些逻辑都放在 CascadeChoiceParameter 脚本部分中。
我也只需要一个值,但这种方法也可以用于值列表,只是不要忘记字符串值的引号。
请注意,此类脚本更改可能需要 Jenkins 管理员在 jenkins/scriptApproval 中为每个传入值 paramValue
批准脚本