Jenkins:如何在 activeChoiceReactiveParam 脚本中传递列表变量?

Jenkins: How to pass a list variable in activeChoiceReactiveParam script?

我正在尝试构建一个参数化的管道作业,我想根据 selected[=34] 填充 ENVIRONMENTs 的列表=] 帐户秒。为此,我正在使用 activeChoiceParamactiveChoiceReactiveParam,但我需要将列表变量传递给脚本以生成适当的 ENV 列表。这是(类似的东西)我有 atm:

def valACCS = [
      '"npr - Non-Production [E002N]"',
      '"prd - Live/Production [E002P]"',
    ]

def valNprENVS = [
      '"dev - Development"',
      '"int - Integration"',
    ]

def valPrdENVS = [
      '"ppr - Pre-Production"',
      '"liv - Live/Production"',
    ]

pipelinejob('iac_deploy') {
  parameters {

    activeChoiceParam('ACCOUNTS') {
      choiceType('SINGLE_SLELCT')
      groovyScript {
        script('['+valACCS.join(', ')+']')
      }
    }

    activeChoiceReactiveParam('ENVIRONMENTS') {
      choiceType('SINGLE_SLELCT')
      groovyScript {
        script('''
          if (ACCOUNTS.split('-')[0].trim() == 'npr') {
            return [valNprENVS.join(', ')]
          } else if (ACCOUNTS.split('-')[0].trim() == 'prd') {
            return [valPrdENVS.join(', ')]
          } else {
            return ['NONE']
          }
        ''')
      }
      referencedParameter('ACCOUNTS')
    }
    
  }
}

就是这样,它在 valNprENVS 上工作正常,但 valNprENVSvalPrdENVS 的值根本没有扩展。建立工作后,这就是我得到的 activeChoiceReactiveParam:

但对于 activeChoiceParam,它使用以下值正确扩展:

我也在尝试为 activeChoiceReactiveParam 做类似的事情。知道我该怎么做吗?

经过一段时间 tug-of-war,我设法做到了,因为在 nest 中没有找到任何关于此类问题的明确参考,所以回答我自己的问题,以防万一其他人之后也一样。诀窍是在 script() 块中使用 Triple Double-Quote String,然后变量将在其中扩展,使用 ${varName} 语法。 这就是我最终所做的,它为我完成了工作:

activeChoiceReactiveParam('ENVIRONMENTS') {
  choiceType('SINGLE_SLELCT')
  groovyScript {
    script("""\
      if (ACCOUNTS.split('-')[0].trim().equals('npr')) {
        return ${valNprENVS}
      } else if (ACCOUNTS.split('-')[0].trim().equals('prd')) {
        return ${valPrdENVS.join}
      } else {
        return ['NONE']
      }
    """.stripIndent())
  }
  referencedParameter('ACCOUNTS')
}

其余更改是装饰性的:"""\ 删除了第一个 new_line;将 == 替换为 .equals.stripIndent 删除每行等的前导空格,但与解决手头的问题无关。

希望对别人有所帮助!