我想将当前正在执行的Jenkins作业的名称放入环境变量中,以便稍后在我的管道中使用,而不使用文件夹名称。我假设我需要类似的东西:
withEnv(['JOB_BASE_NAME=JOB_NAME.split('/').last()']) {
echo "Job base name: ${JOB_BASE_NAME}"
}
但是我收到了错误:
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:
unclassified method java.lang.String div java.lang.String
答案 0 :(得分:6)
在Jenkins文档中,您有§Using environment variables部分提到:
Jenkins管道中可访问的环境变量的完整列表记录在localhost:8080/pipeline-syntax/globals#env,假设Jenkins主机在localhost上运行:8080
如果你点击链接,你会发现Jenkins已经提供了JOB_BASE_NAME
OOTB,所以这正是你想要的。
JOB_BASE_NAME
- 此构建项目的短名称剥离文件夹路径,例如“bar / foo”的“foo”。
答案 1 :(得分:4)
我解决了这个问题。如果有人发现它有用:
{{1}}
答案 2 :(得分:0)
可能为时已晚,但想到会帮助需要使用bash的更简单解决方案的人。
${JOB_NAME%%/*}
示例:
poc_jenkins_pipeline
${JOB_NAME}
poc_jenkins_pipeline/develop
,即<project name>/<branch name>
${JOB_NAME%%/*}
中使用%运算符返回值poc_jenkins_pipeline
答案 3 :(得分:0)
如果您想要没有文件夹名称的 Jenkins 作业名称,您可以使用:
def job = "${JOB_BASE_NAME}"