簡體   English   中英

將環境變量作為管道參數傳遞給 Jenkins 共享庫

[英]Passing environment variable as a pipeline parameter to Jenkins shared library

我有一個共享的 Jenkins 庫,里面有我的 Jenkinsfile 管道。 該庫的結構如下:

myPipeline.groovy文件

def call(body) {
    def params= [:]
    body.resolveStrategy = Closure.DELEGATE_FIRST
    body.delegate = params
    body()

    pipeline {
        // My entire pipeline is here
        // Demo stage
        stage("Something"){
          steps{
            script{
              projectName = params.name
            }
          }
        }

    }
}

我的 Jenkinsfile 如下:

詹金斯檔案

@Library("some-shared-lib") _
myPipeline{
    name = "Some name"
}

現在,我想用"env.JOB_NAME"命令替換"Some name"字符串。 通常在 Jenkinsfile 中,我會使用name = "${env.JOB_NAME}"來獲取信息,但是因為我使用的是我的共享庫,所以它無法工作。 錯誤信息如下:

java.lang.NullPointerException: Cannot get property 'JOB_NAME' on null object

我嘗試使用括號和其他符號,但從未讓它起作用。 我認為我錯誤地傳遞了一個參數。 我希望 Jenkinsfile 將"${env.JOB_NAME}"分配給projectName變量,一旦庫運行我正在調用的管道(通過myPipeline{}命令)

你可以在myPipeline.groovy這樣做:

def call(body) {
    def params= [:]
    body.resolveStrategy = Closure.DELEGATE_FIRST
    body.delegate = params
    body()

    pipeline {
        // My entire pipeline is here
        // Demo stage
        stage("Something"){
          steps{
            script{
              projectName = "${env.JOB_NAME}"
            }
          }
        }

    }
}

暫無
暫無

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

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