Jenkins。将用户定义的变量传递给Email-Ext插件。

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

我正在使用Email-Ext插件在声明式流水线的后构建阶段的构建结束时发送一封结果邮件。 在邮件的正文中,我试图插入一些环境变量和一些用户定义的环境变量。

内置的变量显示得很好,但是我定义的任何用户定义的变量在邮件正文中都是空的,或者在attachmentPattern字段中也不起作用。

我的环境变量:

pipeline {
    agent any
    environment {
        buildFolder = "build_${BUILD_NUMBER}" 
        robotFolder = "build_${BUILD_NUMBER}/robotDemo" 
        serverName = "abc123"
        robotResults = "${buildFolder}/*.txt"
    }

我在post{}构建中使用的email-ext格式。

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: '[email protected]'

例如:${ENV, var="JOB_NAME"},显示正常。 但是${ENV, var="serverName"}却完全没有显示。

我试过一些变化,比如......

${serverName} ${env.serverName}

......但它们也不工作。

有什么办法可以在email-ext插件中使用用户定义的环境变量,比如上面的'serverName'?

谢谢&amp;问候,Richard。

jenkins jenkins-pipeline jenkins-plugins email-ext jenkins-email-ext
1个回答
0
投票

你使用的是单引号,但只有双引号才允许插值变量。

我建议你使用Groovy脚本来渲染邮件内容。

你可以使用 预定义的Groovy脚本 像这样。

emailext body: '''${SCRIPT, template="groovy-html.template"}'''

或者添加你自己的模板 如同文件中所述. 我不知道我们是否可以从工作区加载该模板,但你可以尝试用。

emailext body: '''${SCRIPT, template="$WORKSPACE/groovy-html.template"}'''

当插值时,从环境或参数中获取值的语法是:

${env.MY_ENVVAR}
${param.MY_BUILDPARAM}

(env和param是包含所有值的Groovy地图)

而对于其他所有的变量。

${varName}
© www.soinside.com 2019 - 2024. All rights reserved.