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

Jenkins执行脚本设环境变量遇Google Play插件宏识别异常

解决Google Play Android Publisher Plugin的「unrecognised macro」错误

我来帮你搞定这个发布说明上传的宏解析问题,结合插件的工作逻辑,大概率是环境变量传递或者插件变量解析规则的问题,给你几个实用的排查和解决方向:

  • 先确认环境变量的生效范围
    如果你是在CI工具(比如Jenkins)里用shell步骤设置变量,默认情况下shell进程里的export只会在当前shell会话生效,后续的Google Play插件任务根本读不到这个变量。这时候得用CI工具自带的环境变量注入方式:

    • 比如Jenkins里,你可以用echo "LANG_EN_GB=$(cat your-release-notes-file.txt)" >> $JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_NUMBER/injectedEnvVars.properties来写入构建环境变量;或者直接用流水线语法设置:
      env.LANG_EN_GB = readFile('./path/to/en-gb-release-notes.txt').trim()
      

    这样设置的变量是流水线级别的,后续任务能直接获取。

  • 检查插件对变量的引用规则
    Google Play Android Publisher Plugin的「最近更改」字段可能不支持直接用${LANG_EN_GB}这种shell风格的变量引用,得用插件兼容的方式:

    • 如果是在Jenkins声明式流水线里,要加上env.前缀,写成${env.LANG_EN_GB};
    • 如果是在插件的UI配置里,有些工具需要用特定的变量语法,比如%LANG_EN_GB%(取决于CI工具的变量规则)。
      举个正确的流水线配置例子:
    stage('Upload to Google Play') {
        steps {
            googlePlayPublish {
                track('production')
                releaseNotes {
                    language('en-GB')
                    text("${env.LANG_EN_GB}")
                }
            }
        }
    }
    
  • 绕过环境变量,直接读取文件
    如果环境变量传递始终踩坑,不如直接跳过这一步,在插件配置里直接读取发布说明文件的内容:

    releaseNotes {
        language('en-GB')
        text(readFile('./path/to/en-gb-release-notes.txt').trim())
    }
    

    这种方式最直接,也避免了变量解析的各种问题,适合大多数场景。

  • 先做调试验证
    在执行Google Play上传任务前,加个调试步骤确认变量值是否正确:

    • Shell方式:echo "当前LANG_EN_GB的值:$LANG_EN_GB"
    • 流水线方式:echo "当前LANG_EN_GB的值:${env.LANG_EN_GB}"
      如果这里打印不出正确的发布说明内容,那问题根本不在插件的宏解析,而是环境变量没有被正确设置,得先搞定这一步。

内容的提问来源于stack exchange,提问作者Kartik Prasad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:34:54