繁体   English   中英

Jenkins - 传递参数给 groovy function

[英]Jenkins - Passing parameter to groovy function

我一直在尝试用我的管道中的参数调用另一个 groovy function 但没有任何运气。
groovy function 我将参数传递给包含一个 bash 脚本,但是这个 bash 脚本无法识别我传递给它的参数。 但是,如果我传递的参数在管道中定义为parameters {} ,那么它就可以工作,但我不希望这样。

问题:
shell 脚本无法识别/理解 arguments,变量为空,没有值。

pipelineJenkins.groovy

def call {
  pipeline {
    parameters { 
      string (name: VAR1, defaultValue: "Peace", description: '' }  <--- This works, but not beneficial
      string (name: VAR2, defaultValue: "Space", description: '' }  <--- This works, but not beneficial
    stages {
      stage ('Run script') {
        steps {
          groovyFunction("${VAR1}", "${VAR2}")
          groovyFunction("Peace", "Space") <--- WHAT I WANT
        }
      }
    }
  }
}

groovyFunction.groovy

def call(var1, var2) {
  sh 'echo MY values ${var1} and ${var2}'
  sh "echo MY values ${var1} and ${var2}" <-- Works using double quotes, this messes up sed and for-loops...
}

OUTPUT 来自带有参数的管道:

MY values Peace and Space

OUTPUT 来自没有参数的管道:

MY values and

我已经尝试按照我上一个问题中的建议使用environment{}关键字,但没有任何运气。 Jenkins - 环境

我知道那里有类似的问题:

注意:这接近于我提出的问题Shell 参数 Jenkins的副本

谢谢。

更新

我已经更新了答案以在没有environment {}的情况下使用环境变量

使用像我在这里使用的那样的环境变量(我稍微重构了你的代码):

def callfunc() {
  sh 'echo MY values $VARENV1 and $VARENV2'
}

pipeline {
    agent { label 'agent_1' }
    stages {
      stage ('Run script') {
        steps {
            script {
                env.VARENV1 = "Peace"
                env.VARENV2 = "Space"
            }
            callfunc()
        }
      }
    }
}

env.VARENV1env.VARENV2是我在script{}中使用的环境变量。 您可以为它们赋值。

这是我的新 output:

在此处输入图像描述

我真的希望它有所帮助。

使用 FOR 循环的更新

对 shell 脚本使用三重单引号进行循环并向其添加 grrovy 变量:

def callfunc() {
  sh '''
  export s="key"
  echo $s
  for i in $VARENV1 
    do
      echo "Looping ... i is set to $i"
    done
    '''
}

pipeline {
    agent { label 'agent_1' }
    stages {
      stage ('Run script') {
        steps {
            script {
                env.VARENV1 = "Peace"
            }
            callfunc()
        }
      }
    }
}

OUTPUT:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM