如何将JOB_NAME排除文件夹放入Jenkins的环境变量中?

Mar*_*son 3 jenkins jenkins-pipeline

我想将当前正在执行的Jenkins作业的名称放入环境变量中,以便稍后在我的管道中使用,而不使用文件夹名称.我假设我需要这样的东西:

withEnv(['JOB_BASE_NAME=JOB_NAME.split('/').last()']) {
    echo "Job base name: ${JOB_BASE_NAME}"
}
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: 
    unclassified method java.lang.String div java.lang.String
Run Code Online (Sandbox Code Playgroud)

Mar*_*tek 6

在Jenkins文档中,您有§使用环境变量部分,其中提到:

可以从Jenkins管道中访问的环境变量的完整列表记录在localhost:8080/pipeline-syntax/globals #env,假设Jenkins主服务器在localhost上运行:8080

如果您按照链接找到JOB_BASE_NAME已经由Jenkins提供的OOTB,那么这正是您想要的.

JOB_BASE_NAME - 此构建项目的短名称剥离文件夹路径,例如"bar/foo"的"foo".


Mar*_*son 5

我解决了。如果有人发现它有用:

def jobBaseName = "${env.JOB_NAME}".split('/').last()
echo "Job Name (excl. path): ${jobBaseName}"
Run Code Online (Sandbox Code Playgroud)