需要在活动选择参数脚本内访问 JOB_BASE_NAME 或 JOB_NAME。使用
jobBaseName
主动选择参数应该动态处理并呈现输入的下拉列表。根据 active-choices-plugin 文档,应该可以访问 jenkinsBuild 和 jenkinsProject 对象。 Input() 不适用,因为不能允许用户输入输入,而是选择所提供的内容。如何读取脚本中的 JOB_NAME 或 JOB_BASE_NAME ?提前感谢任何帮助。
下面是 Jenkinsfile 示例。
pipeline {
agent {
label "slave-2"
}
parameters {
activeChoice choiceType: 'PT_SINGLE_SELECT', description: 'Some Description', filterLength: 1, filterable: false, name: 'PARAM_NAME', script: [
classpath: [], sandbox: true, script: '''
try {
def jobBaseName = env.JOB_BASE_NAME
// Do something with jobBaseName and return result
} catch(e) {return [e.toString()] }
/* try {
def jobBaseName = jenkinsProject.getDisplayName().split('/')?.first()
// Do something with jobBaseName and return result
} catch(e) {return [e.toString()] } */
'''
]
}
}
尝试了示例 Jenkinsfile 中指定的两种方法,但没有成功。注释掉了第二种方法,但仅供参考。如果
jobBaseName
是硬编码的,则主动选择参数将按预期工作,因此其余功能不会出现问题。但这不是一个可行的方法。添加了 try-catch 异常以帮助排除故障。由于我是groovy的初学者,所以请指出任何错误。
谢谢!
这是插件中长期存在的错误 - https://issues.jenkins.io/browse/JENKINS-69940。 欢迎给票点赞。