繁体   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