这是我的 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
变量没有被插值:
我该如何修复?
另外,我尝试用
'''
替换 """
,如下所示:
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
您几乎已经完成了三重双引号修复,您只需将
${BUILD_STATUS}
表达式传递给 Token Macro 插件(emailext
使用它来动态生成电子邮件主题和正文)并防止 groovy插值太早了。尝试使用 $
转义 \
符号,例如 \${BUILD_STATUS}
。
这是两个不同的错误。
第一个是由 Groovy 中的单引号和双引号之间的差异引起的,Jenkins 文档的字符串插值部分对此进行了详细描述。
第二个显然意味着您没有定义
BUILD_STATUS
变量。这可能取决于管道的类型和 Jenkins 版本,但我建议检查以下几件事:
BUILD_URL
;${env.VARIABLE_NAME}
,因为它将是一个 Groovy 变量 - ${VARIABLE_NAME}
可能不会在此上下文中定义,因为它不是 shell 命令。