[英]How to put JOB_NAME excluding folder into an environment variable in Jenkins?
我想將當前正在執行的 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
在 Jenkins 文檔中,您有§Using environment variables部分,其中提到:
可從 Jenkins Pipeline 中訪問的環境變量的完整列表記錄在localhost:8080/pipeline-syntax/globals#env 中,假設 Jenkins 主機在 localhost:8080 上運行
如果您點擊鏈接,您會發現JOB_BASE_NAME
已經由 Jenkins 提供 OOTB,所以這正是您想要的。
JOB_BASE_NAME
- 此構建項目的短名稱,剝離文件夾路徑,例如“foo”代表“bar/foo”。
我解決了。 如果有人覺得它有用:
def jobBaseName = "${env.JOB_NAME}".split('/').last()
echo "Job Name (excl. path): ${jobBaseName}"
可能為時已晚,但認為會幫助需要使用 bash 的更簡單解決方案的人。
${JOB_NAME%%/*}
例子:
poc_jenkins_pipeline
的項目${JOB_NAME}
poc_jenkins_pipeline/develop
ie <project name>/<branch name>
${JOB_NAME%%/*}
使用 % 運算符返回值poc_jenkins_pipeline
如果您想要沒有文件夾名稱的 Jenkins 作業名稱,您可以使用:
def job = "${JOB_BASE_NAME}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.