首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将环境变量作为管道参数传递给Jenkins共享库

将环境变量作为管道参数传递给Jenkins共享库
EN

Stack Overflow用户
提问于 2020-11-04 17:18:31
回答 1查看 493关注 0票数 0

我有一个共享的Jenkins库,它为Jenkinsfile提供了管道。图书馆的结构如下:

myPipeline.groovy文件

代码语言:javascript
运行
复制
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如下:

Jenkinsfile

代码语言:javascript
运行
复制
@Library("some-shared-lib") _
myPipeline{
    name = "Some name"
}

现在,我想用"Some name"命令替换"env.JOB_NAME"字符串。通常在Jenkinsfile中,我会使用name = "${env.JOB_NAME}"获取信息,但是由于我使用的是共享库,所以无法工作。错误消息如下:

代码语言:javascript
运行
复制
java.lang.NullPointerException: Cannot get property 'JOB_NAME' on null object

我试着玩括号和其他符号,但没能让它起作用。我认为我传递的参数不正确。我希望Jenkinsfile将"${env.JOB_NAME}"分配给projectName变量,一旦库运行我正在调用的管道(通过myPipeline{}命令)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-04 19:05:11

myPipeline.groovy中你可以这样做

代码语言:javascript
运行
复制
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}"
            }
          }
        }

    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64684784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档