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

Jenkins Emailext插件Groovy邮件模板如何获取流水线自定义环境变量

Email Ext插件Groovy模板获取流水线环境变量方案

问题背景

编辑Jenkins Email Extension插件的Groovy邮件模板时,需要在通知邮件中展示流水线内定义的自定义环境变量,测试使用的流水线代码如下:

pipeline {
agent {
    label 'main'
}
environment {
    test = "This is a test line."
}

stages {
    stage('Debug') {
        steps {
            sh 'printenv'
            sh "echo ${env.test}"
            bat 'echo %test%'
        }
    }
}
post {
    always {
        echo "Emailing.."
        emailext body: '''${SCRIPT, template="groovy-html-edited.template"}''',
        subject: currentBuild.currentResult + " : " + env.JOB_NAME,
        to: 'example@email.com'
    }
}
}

在自定义模板groovy-html-edited.template中尝试以下写法均无法获取变量值:

  • ${env.test}
  • ${ENV.test}
  • ${ENV,var="test"}
  • ${env,var="test"}
    模板中添加的测试代码段如下:
<!-- TEST SECTION-->
  <table class="section">
    <tr class="tr-title">
      <td class="td-title-main" colspan=2>
        TEST SECTION
      </td>
    </tr>
    <tr>
      <td>${ENV,var='test'}</td>
    </tr>
  </table>
  <br/>

正确实现方式

Groovy邮件模板运行在独立的脚本上下文,和流水线脚本上下文不直接互通,${ENV,var="xxx"}是Email Ext插件非模板模式下的内容替换令牌,仅在直接写入emailext正文、不调用Groovy模板时生效,无法在Groovy模板中解析。
需要通过模板上下文内置的build对象获取全量环境变量后再取值,替换模板中变量输出部分的代码即可:

<!-- TEST SECTION-->
  <table class="section">
    <tr class="tr-title">
      <td class="td-title-main" colspan=2>
        TEST SECTION
      </td>
    </tr>
    <tr>
      <td>
        <%
        // 获取当前构建的全量环境变量
        def envVars = build.getEnvironment(listener)
        // 输出test变量值,不存在时返回默认提示
        out.println envVars.getOrDefault("test", "变量test不存在")
        %>
      </td>
    </tr>
  </table>
  <br/>

补充说明

  • 该方法可以获取所有流水线中定义的自定义环境变量,也可以获取JOB_NAME、BUILD_NUMBER、BUILD_RESULT等Jenkins内置环境变量
  • 模板上下文默认内置build(当前构建对象)、listener(构建监听器对象)、out(模板输出流对象),可直接调用
  • 如果使用三单引号包裹emailext的body参数,Groovy模板不会在流水线执行阶段提前做变量替换,所有变量取值逻辑都需要在模板内部实现

内容的提问来源于stack exchange,提问作者Tan Wei Li

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:51:22