将 Jenkins 管道中的交互式输入读入 shell 脚本

Read interactive input in Jenkins pipeline into shell script

我有输入正确回显的管道,即 'Destroy: true' 但不在 'sh' 脚本中的下一个回显中。我在那里尝试了 ${destroyCluster} 或 $destroyCluster 但没有区别,回显显示为空

script {   
        def destroyCluster = input(
             id: 'destroyCluster', message: 'Destroy cluster ?', 
             parameters: [[$class: 'BooleanParameterDefinition', defaultValue: false, description: 'Destroy cluster', name: 'destroy'],
                        ]
                    )
echo ("Destroy: "+ destroyCluster)
sh '''
    echo "${destroyCluster}"
'''

这里的问题是,如果要将 Groovy 变量传递给 shell step 方法进行解释,则需要在 Groovy 内插入变量,或者将其用作第一个class Groovy.

内的表达式

显示这两种可能性的示例:

script {   
  def destroyCluster = input(
    id: 'destroyCluster',
    message: 'Destroy cluster ?', 
    parameters: [[$class: 'BooleanParameterDefinition',
                  defaultValue: false,
                  description: 'Destroy cluster',
                  name: 'destroy']])
  
  echo "Destroy: ${destroyCluster}" // proper Groovy interpolation
  print destroyCluster // first class expression

如果 Jenkins Pipeline 日志中仍然没有任何内容输出到标准输出,那么 destroyCluster 是一个 void 类型的方法并且不会 return 任何东西。在这种情况下,您将无法分配和使用其 return 值。