在jenkins文件中设置环境变量

时间:2018-10-29 08:31:41

标签: jenkins groovy environment-variables jenkins-pipeline

我正在尝试为Groovy中的项目编写jenkins构建脚本。 问题是我想在脚本顶部定义一些变量,并在需要时用作环境变量。

def someVariable = 'foo'

pipeline{
    agent any

    stages{
        stage("build"){
            environment {
                specialParameter = someVariable
            }
            steps{
                ...
            }
        }
        ...
    }

}

我还有一些其他步骤,它们的环境变量是不同的,并且我也想只更改脚本的顶部以能够建立其他分支等等。所以我只想要一种在环境正文中使用定义的 someVariable 的方法。

谢谢

2 个答案:

答案 0 :(得分:2)

首先,您可以仅使用环境部分来定义整个脚本中已知的环境变量:

pipeline {
    agent any
    environment {
        TEST='myvalue'
    }
    stages{
        stage("build"){
            steps{
                ...
            }
        }
    }
}

您还可以定义一个只有一个阶段才知道的变量:

pipeline {
    agent any
    stages{
        stage("build"){
            environment {
                TEST='myvalue'
            }
            steps{
                ...
            }
        }
    }
}

但是对于您的解决方案(在管道上方使用def),您可以执行以下操作:

def someVariable = 'foo'

pipeline{
    agent any

    stages{
        stage("build"){
            steps{
                echo someVariable
            }
        }
    }
}

这将输出'foo'

您可以在variable declarations syntax by reading Jenkins online book.

上获得更多信息。

更新:

def someVariable = 'foo'

pipeline{
    agent any

    stages{
        stage("build"){
            environment {
                TEST = sh(script: "echo -n ${someVariable}", returnStdout: true)
            }
            steps{
                sh 'echo "${TEST}"'
            }
        }
    }
}

输出:

[test] Running shell script
+ echo foo
foo

答案 1 :(得分:0)

只是找到了另一种使用定义的环境变量的方法。

def getsomeVariable (){
    return 'foo'
}


pipeline{
    agent any

    stages{
        stage("build"){
            environment {
                specialParameter = getsomeVariable()
            }
            steps{
                ...
            }
        }
        ...
    }

}