2

我是 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 将显示更改的值。我怎样才能完成这一切?

4

2 回答 2

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"
    }
}
于 2018-03-25T07:12:10.077 回答
0

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

正如其标题所暗示的,这篇文章是关于 Jenkins 环境变量的权威指南。你会在那里看到我的评论,它真的帮助我理解了 Jenkins env vars 的复杂性。

于 2021-02-26T15:57:03.003 回答