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

Jenkins emailext插件变量插值失败问题咨询

解决Jenkins emailext插件变量混合插值问题

问题原因

  • 使用三个单引号定义body时:Groovy会将其视为纯字符串,不解析任何${}变量,因此自定义变量testResults无法被替换,但Jenkins内置变量(如BUILD_URL、BUILD_STATUS)由emailext插件自行解析,能正常生效。
  • 使用三个双引号定义body时:Groovy会优先解析所有${}变量,而BUILD_STATUS这类是Jenkins环境变量,并非Groovy脚本绑定的变量,因此抛出MissingPropertyException错误。

解决方案

方案1:转义Jenkins内置变量,保留自定义变量插值

在双引号字符串中,用反斜杠\转义Jenkins内置变量的${},让Groovy跳过解析,留给emailext插件处理;自定义变量testResults不转义,由Groovy完成插值:

emailext([
        attachmentsPattern: '**/build/*.log',
        subject: 'Hello World',
        recipientProviders: [developers(), requestor()],
        to: '$DEFAULT_RECIPIENTS',
        body: """
            <p>Test summary:</p>
            <ul>
                <li><a href=\"\${BUILD_URL}\">Status: \${BUILD_STATUS}</a></li>
                <li><a href=\"\${BUILD_URL}/flowGraphTable\">Executed steps</a></li>
                <li><a href=\"\${BUILD_URL}/parsed_console\">Errors and warnings</a></li>
                <li>Test results:</li>
                ${testResults}
            </ul>
        """,
        mimeType: 'text/html'
])

方案2:字符串拼接分离变量解析

用单引号保留Jenkins内置变量(让emailext解析),通过字符串拼接插入自定义Groovy变量testResults:

emailext([
        attachmentsPattern: '**/build/*.log',
        subject: 'Hello World',
        recipientProviders: [developers(), requestor()],
        to: '$DEFAULT_RECIPIENTS',
        body: '''
            <p>Test summary:</p>
            <ul>
                <li><a href="${BUILD_URL}">Status: ${BUILD_STATUS}</a></li>
                <li><a href="${BUILD_URL}/flowGraphTable">Executed steps</a></li>
                <li><a href="${BUILD_URL}/parsed_console">Errors and warnings</a></li>
                <li>Test results:</li>
        ''' + testResults + '''
            </ul>
        ''',
        mimeType: 'text/html'
])

验证说明

两种方案都能实现:

  • Jenkins内置变量BUILD_URL、BUILD_STATUS由emailext插件正常解析
  • 自定义变量testResults由Groovy正确插值替换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 07:44:54