Jenkins选择参数值未在Input消息中渲染,显示为纯文本问题
Jenkins流水线input消息变量不解析的解决办法
你遇到的问题是Jenkins流水线input步骤的消息里,变量没有被替换成实际选择的参数值,而是显示成${VAR_STANDBY_node}这类纯文本。核心原因是Groovy的字符串插值规则,同时你的参数获取方式也可以优化,具体解决办法如下:
关键问题点与修复
字符串插值规则
Groovy中,单引号包裹的字符串是纯文本,不会解析其中的变量;只有双引号包裹的字符串才会自动将${变量名}替换为实际值。所以需要把input消息的单引号改成双引号。简化参数获取逻辑
你当前通过sh "echo ${params.standby_node}"来获取参数值完全多余,params是Jenkins流水线内置的参数对象,直接访问params.standby_node就能拿到选择的参数值,跳过shell执行步骤既高效又能避免不必要的转义问题。
修正后的完整脚本
stage('check_count_standby') { node("$primary_node") { unstash 'db-switchover' script { VAR_STANDBY = sh ( script: 'sudo cat /pathtofile/count_standby.txt', returnStdout: true ).trim() // 直接从params获取参数,无需shell中转 VAR_STANDBY_node = params.standby_node.trim() VAR_STANDBY_dbase = params.standby_dbase.trim() if (VAR_STANDBY > "1") { // 改用双引号实现变量插值 input message: "您已选择备用节点${VAR_STANDBY_node}和备用数据库${VAR_STANDBY_dbase},是否继续执行?" } } } }
补充说明:如果你的参数本身就是无多余空格的字符串,trim()也可以省略,直接赋值即可。
内容的提问来源于stack exchange,提问作者user5820327
相关产品推荐
相关产品推荐

