Jenkins管道脚本,用于将变量从一个函数传递到另一个函数

时间:2018-03-22 14:26:01

标签: jenkins jenkins-pipeline jenkins-groovy

我是Jenkins管道脚本的新手。我正在开发一个Jenkins管道,其中Jenkins代码如下。逻辑如下:

node{
a=xyz
b=abc
//defined some global variables
   stage('verify'){
      verify("${a}","${b}")
      abc("${a}","${b}")
      echo "changed values of a and b are ${a} ${b}"
 }}
def verify(String a, String b)
{ //SOme logic where the initial value of a and b gets changed at the end of this function} 
def verify(String a, String b){
//I need to get the changed value from verify function and manipulate that value in this function}

我需要将初始ab(多个)值传递给verify函数,并将更改后的值传递给另一个函数。然后,我需要操纵更改的值,并将其传递到管道中的舞台,其中echo将显示更改的值。我怎样才能完成这一切?

2 个答案:

答案 0 :(得分:1)

好的,这就是我的意思:

def String verify_a(String a) { /* stuff */ }

def String verify_b(String b) { /* stuff */ }

node {
    String a = 'xyz'
    String b = 'abc'

    stage('verify') {
        a = verify_a(a)
        b = verify_b(b)

        echo "changed values of a and b are $a $b"
    }

    stage('next stage') {
        echo "a and b retain their changed values: $a $b"
    }
}

答案 1 :(得分:0)

我发现在阶段之间传递变量的最简单方法是使用环境变量。一个不可否认的主要限制是它们只能是字符串。但我没有发现这是一个大问题,尤其是在自由使用 toBoolean()toInteger() 函数的情况下。如果您需要在阶段之间传递地图或更复杂的对象,您可能需要使用外部脚本构建某些内容或将内容写入临时文件(如果有机会切换代理,请确保隐藏您需要的内容)。但是环境变量几乎在所有情况下都对我有用。

This article is, as its title implies, the definitive guide on environment variables in Jenkins. 你会在那里看到我的评论,它真的帮助我理解 Jenkins 环境变量的复杂性。