簡體   English   中英

如何將 JOB_NAME 排除文件夾放入 Jenkins 的環境變量中?

[英]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的項目
  • 如果我嘗試訪問默認 jenkins 變量${JOB_NAME}
    • 它返回值poc_jenkins_pipeline/develop ie <project name>/<branch name>
  • 通過在 bash ${JOB_NAME%%/*}使用 % 運算符返回值poc_jenkins_pipeline
  • 參考鏈接 - https://qa.nuxeo.org/jenkins/pipeline-syntax/globals

如果您想要沒有文件夾名稱的 Jenkins 作業名稱,您可以使用:

def job = "${JOB_BASE_NAME}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM