Jenkins:将用户定义的变量传递给 Email-Ext 插件
Jenkins: Passing user defined variables to Email-Ext plugin
我在声明性管道的 post 构建阶段使用 Email-Ext 插件在构建结束时发送结果电子邮件。在电子邮件正文中,我试图插入一些环境变量和一些用户定义的环境变量。
内置变量显示正常,但是我定义的任何用户定义的变量在电子邮件正文中都是空的,或者在 attachmentPattern 字段中也不起作用:
我的环境变量:
pipeline {
agent any
environment {
buildFolder = "build_${BUILD_NUMBER}"
robotFolder = "build_${BUILD_NUMBER}/robotDemo"
serverName = "abc123"
robotResults = "${buildFolder}/*.txt"
}
我在 post{} 构建中使用的电子邮件分机格式:
emailext attachLog: true, attachmentsPattern: 'build_${env.BUILD_NUMBER}/Robot_Results.txt', body: '<b>Job Name:</b> ${ENV, var="JOB_NAME"}<br><b>Build Number:</b> ${ENV, var="BUILD_NUMBER"}<br><br><b>Build URL:</b><br>${ENV, var="BUILD_URL"}<br><br><b>Log Files:<br><br><br><pre>${BUILD_LOG_EXCERPT, start="^====", end="^report.html"}</pre><pre>${ENV, var="serverName"}</pre>', mimeType: 'text/html', subject: 'ABS Results', to: 'richard.scott@sap.com'
例如:${ENV, var="JOB_NAME"},显示正常。但是 ${ENV, var="serverName"} 根本没有显示。
我试过变体,例如...
${serverName}
${env.serverName}
...但它们也不起作用。
关于如何在 email-ext 插件中使用用户定义的环境变量,如上面的 'serverName',有什么想法吗?
谢谢并问候,理查德。
您使用的是单引号,但只有双引号允许插入变量。
我建议您使用 Groovy 脚本来呈现电子邮件内容。
您可以像这样使用 predefined Groovy script:
emailext body: '''${SCRIPT, template="groovy-html.template"}'''
或添加您自己的模板like described in the documentation。我不知道我们是否可以从工作区加载该模板,但您可以尝试使用:
emailext body: '''${SCRIPT, template="$WORKSPACE/groovy-html.template"}'''
插值时从环境或参数中获取值的语法是:
${env.MY_ENVVAR}
${param.MY_BUILDPARAM}
(env 和 param 是 ja Groovy 包含所有值的映射)
对于所有其他变量:
${varName}
我在声明性管道的 post 构建阶段使用 Email-Ext 插件在构建结束时发送结果电子邮件。在电子邮件正文中,我试图插入一些环境变量和一些用户定义的环境变量。
内置变量显示正常,但是我定义的任何用户定义的变量在电子邮件正文中都是空的,或者在 attachmentPattern 字段中也不起作用:
我的环境变量:
pipeline {
agent any
environment {
buildFolder = "build_${BUILD_NUMBER}"
robotFolder = "build_${BUILD_NUMBER}/robotDemo"
serverName = "abc123"
robotResults = "${buildFolder}/*.txt"
}
我在 post{} 构建中使用的电子邮件分机格式:
emailext attachLog: true, attachmentsPattern: 'build_${env.BUILD_NUMBER}/Robot_Results.txt', body: '<b>Job Name:</b> ${ENV, var="JOB_NAME"}<br><b>Build Number:</b> ${ENV, var="BUILD_NUMBER"}<br><br><b>Build URL:</b><br>${ENV, var="BUILD_URL"}<br><br><b>Log Files:<br><br><br><pre>${BUILD_LOG_EXCERPT, start="^====", end="^report.html"}</pre><pre>${ENV, var="serverName"}</pre>', mimeType: 'text/html', subject: 'ABS Results', to: 'richard.scott@sap.com'
例如:${ENV, var="JOB_NAME"},显示正常。但是 ${ENV, var="serverName"} 根本没有显示。
我试过变体,例如...
${serverName}
${env.serverName}
...但它们也不起作用。
关于如何在 email-ext 插件中使用用户定义的环境变量,如上面的 'serverName',有什么想法吗?
谢谢并问候,理查德。
您使用的是单引号,但只有双引号允许插入变量。
我建议您使用 Groovy 脚本来呈现电子邮件内容。
您可以像这样使用 predefined Groovy script:
emailext body: '''${SCRIPT, template="groovy-html.template"}'''
或添加您自己的模板like described in the documentation。我不知道我们是否可以从工作区加载该模板,但您可以尝试使用:
emailext body: '''${SCRIPT, template="$WORKSPACE/groovy-html.template"}'''
插值时从环境或参数中获取值的语法是:
${env.MY_ENVVAR}
${param.MY_BUILDPARAM}
(env 和 param 是 ja Groovy 包含所有值的映射)
对于所有其他变量:
${varName}