将 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 值。
我有输入正确回显的管道,即 '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 值。