You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins共享库sh块中自定义变量值丢失问题求助

Jenkins共享库sh块自定义变量值丢失问题解决方法

问题场景

Jenkins 2.367环境下,调用共享库updateWebACLConfig函数并传递WEB_ACL_NAME、WEB_ACL_SCOPE及自定义参数CUSTOM_RESPONSE_CODE、CUSTOM_RESPONSE_BODY_KEY时,共享库内log.info可正常输出自定义参数值,但在sh块内通过echo输出时这两个变量值为空,其他参数显示正常。

解决方法

1. 修正sh块内的变量引用方式

Groovy变量在sh块中的解析依赖字符串插值规则,常见错误是使用单引号包裹脚本(单引号不会解析Groovy变量),需调整为双引号:

  • 错误写法:
    sh '''
      echo $CUSTOM_RESPONSE_CODE
      echo $CUSTOM_RESPONSE_BODY_KEY
    '''
    
  • 正确写法(双引号插值):
    sh """
      echo ${CUSTOM_RESPONSE_CODE}
      echo ${CUSTOM_RESPONSE_BODY_KEY}
    """
    
  • 替代方案:将变量注入Jenkins环境变量后引用,避免插值转义问题:
    // 先把Groovy变量赋值给环境变量
    env.CUSTOM_RESPONSE_CODE = CUSTOM_RESPONSE_CODE
    env.CUSTOM_RESPONSE_BODY_KEY = CUSTOM_RESPONSE_BODY_KEY
    
    sh '''
      echo $CUSTOM_RESPONSE_CODE
      echo $CUSTOM_RESPONSE_BODY_KEY
    '''
    

2. 确认共享库函数的参数接收逻辑

确保共享库函数正确接收并声明自定义参数,避免作用域丢失:

  • 若为显式参数声明:
    def call(String WEB_ACL_NAME, String WEB_ACL_SCOPE, String CUSTOM_RESPONSE_CODE, String CUSTOM_RESPONSE_BODY_KEY) {
      // 函数内逻辑
      log.info "Code: ${CUSTOM_RESPONSE_CODE}, Key: ${CUSTOM_RESPONSE_BODY_KEY}"
      sh """
        echo ${CUSTOM_RESPONSE_CODE}
      """
    }
    
  • 若为Map传递参数:
    def call(Map params) {
      // 明确提取自定义参数
      def customCode = params.CUSTOM_RESPONSE_CODE
      def customBodyKey = params.CUSTOM_RESPONSE_BODY_KEY
      
      log.info "Code: ${customCode}, Key: ${customBodyKey}"
      sh """
        echo ${customCode}
      """
    }
    

3. 处理变量类型转换问题

如果CUSTOM_RESPONSE_CODE是整数类型,在sh块插值时需显式转换为字符串,避免Groovy类型解析异常:

sh """
  echo ${CUSTOM_RESPONSE_CODE.toString()}
"""

4. 调试排查技巧

在sh块前后添加调试输出,确认变量状态:

// 先确认Groovy侧变量值
log.info "Pre-sh: CUSTOM_RESPONSE_CODE = ${CUSTOM_RESPONSE_CODE}"

sh """
  // 打印环境变量中相关值
  env | grep CUSTOM
  // 输出目标变量
  echo "In sh: CUSTOM_RESPONSE_CODE = ${CUSTOM_RESPONSE_CODE}"
"""

内容的提问来源于stack exchange,提问作者Siddharth Alhat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 09:32:53