我的变量未插入到 emailext 的正文中

问题描述 投票:0回答:2

这是我的 Jenkinsfile 的一部分:

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'
])

但不幸的是

testResults
变量没有被插值:

email

我该如何修复?

另外,我尝试用

'''
替换
"""
,如下所示:

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 控制台输出中收到此错误:

Error when executing always post condition:
Also:   org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: 4fb4675f-4b24-4e5a-8344-835e9d514202
groovy.lang.MissingPropertyException: No such property: BUILD_STATUS for class: groovy.lang.Binding

詹金斯版本是:2.441

jenkins groovy jenkins-groovy email-ext jenkins-email-ext
2个回答
0
投票

您几乎已经完成了三重双引号修复,您只需将

${BUILD_STATUS}
表达式传递给 Token Macro 插件(
emailext
使用它来动态生成电子邮件主题和正文)并防止 groovy插值太早了。尝试使用
$
转义
\
符号,例如
\${BUILD_STATUS}


0
投票

这是两个不同的错误。

第一个是由 Groovy 中的单引号和双引号之间的差异引起的,Jenkins 文档的字符串插值部分对此进行了详细描述。

第二个显然意味着您没有定义

BUILD_STATUS
变量。这可能取决于管道的类型和 Jenkins 版本,但我建议检查以下几件事:

  • AFAIR,Jenkins 不会将构建状态公开为环境变量,如
    BUILD_URL
    ;
  • 您可能希望将环境变量称为
    ${env.VARIABLE_NAME}
    ,因为它将是一个 Groovy 变量 -
    ${VARIABLE_NAME}
    可能不会在此上下文中定义,因为它不是 shell 命令。
© www.soinside.com 2019 - 2024. All rights reserved.