当前位置: 首页 > 知识库问答 >
问题:

在jenkins管道脚本中使用if else从函数返回多个参数

丌官高远
2023-03-14

我在Jenkins管道脚本中尝试使用if else从函数返回多个参数时遇到错误。下面是我的测试管道。

def envi, host

def build_func(envi, host){
  if (env.ENVIRONMENT == 'dev') {
    envi = 'dev'
    host = 'devhost'
  }
  else if(env.ENVIRONMENT == 'prod') {
    envi = 'prod'
    host = 'prodhost'
  }
  return [envi, host]
}

pipeline {
agent any
environment {
  def (envir,hostname) = build_func(env,host)
}

stages {
  stage('Hello') {
    steps {
      echo "Hello World\n${envir}\n${env.ENVIRONMENT}"
    }
  }
 }
}

当我构建这个时,得到以下错误,

org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败: Workflow Script:18:预期字符串文字@第18行,第7列.def(envir,hostname)=build_func(env,host)

共有1个答案

宇文修筠
2023-03-14

我认为您不能在环境块中返回多个值并创建这样的环境变量。作为一种解决方法,也许您可以做这样的事情。

environment {
  envir = "${build_func(env,host)[0]}"
  hostname = "${build_func(env,host)[1]}"
}
 类似资料:
  • 我有一个由jenkins管道触发的外壳脚本,它检测文件夹中的文件是否已更改。我希望脚本根据文件夹中的更改返回1或0到管道脚本。我还想在管道脚本中读取返回的值,以便我可以相应地采取行动。

  • 问题内容: 有任何方法可以从具有参数的另一个管道触发管道作业,我已经尝试过 也尝试过 和 没有运气,它说: 项目类型不支持参数 问题答案: 由于子作业是另一个多分支管道项目,因此我需要指定我要运行的分支 现在可以用了

  • 我在Jenkins中写了一个Groovy DSL声明性管道脚本。该脚本在运行在Windows Server 2012上的从代理上执行。在这个代理机器上有一个命令行可执行文件,叫做。我使用Groovy的方法执行程序,并输入在构建时传递到管道中的参数。 该脚本很简单,分两个阶段执行以下操作 接受一个参数 从SVN签出一个项目 通过一个函数执行程序 我用的是Jenkins 2.235.3 可执行文件返回

  • 问题内容: 扩展选择参数插件很棒,我在通过UI https://wiki.jenkins- ci.org/display/JENKINS/Extended+Choice+Parameter+plugin 配置的作业中使用它 但是,我正在努力使其在样式管道脚本中运行。由于Jenkins管道语法生成器创建了以下代码段,因此扩展选择参数插件似乎尚未与管道脚本完全兼容: 如果我手动创建参数,则会得到与ht

  • 问题内容: 我最近将bash执行命令重写为Jenkins管道。旧代码就像 现在,我使用管道脚本来包装命令,像这样 但是,我遇到了一个错误。当我尝试时,它会正确显示。所以我怀疑内部有问题。 在使用管道之前,命令在外壳执行中工作正常。因此,源代码安装在Jenkins服务器上,似乎管道脚本不知道源命令是什么。 如何在sh wrapd块中运行source命令? 问题答案: 替换为 请注意,第一个点后有一个

  • 我正在构建一个jenkins管道,作业可以由远程触发。我需要知道哪个IP触发了作业。所以我有一个小Groovy脚本,它返回远程IP。使用EnvInject-plugin,我可以轻松地在正常的自由式作业中使用这个变量,但是我如何在管道中使用它?我不能将EnvInject-plugin与管道插件一起使用:( 这是获取IP的小脚本:

  • 问题内容: 我们如何在Jenkins管道的Groovy脚本中传递参数? 我已经写了xyz.groovy,它可以很好地加载和执行,但是我想在其中传递参数而不是重复工作。我尝试传递负载’../xyz.groovy’param1param2但没有运气。 xyz.groovy 问题答案: 您是否在用参数调用的Groovy中创建方法?