如何将html文件的内容包含到jenkins email-ext的模板中?

时间:2013-05-01 09:17:59

标签: jenkins email-ext

我正在使用Jenkins和email-ext发送构建通知。 Build在out目录中生成以简单HTML格式存储的小型自定义报告。现在我可以轻松地将此报告附加到电子邮件中,但我想要的是将此报告呈现给电子邮件正文本身。我知道我可以编写自己的果冻模板,但这需要访问构建服务器(安装果冻脚本),我也想避免这种情况。所以我的问题是:

  1. 我可以将任意文件的内容(在构建期间生成)包含在Email-Ext插件的Content字段中吗?
  2. 如果我不能,在詹金斯发送此类报告的最简单方法是什么?

4 个答案:

答案 0 :(得分:14)

看起来最简单的方法是使用Email-ext的“预发送脚本”

脚本看起来像这样:

def reportPath = build.getWorkspace().child("HealthTestResults.html")
msg.setContent(reportPath.readToString(), "text/html");

它将位于工作区根目录中的HealthTestResults.html的内容呈现为消息正文。

答案 1 :(得分:4)

将html文件包含在电子邮件内容中的简便方法是在默认内容中添加以下行= $ {FILE,path =“yourfilename.html”}

这适用于jenkins email ext插件

答案 2 :(得分:0)

我尝试使用


def reportPath = build.getWorkspace().child("HealthTestResults.html")
msg.setContent(reportPath.readToString(), "text/html");

但发出的电子邮件是这样的:


帧警报 本文档旨在使用框架功能进行查看。如果看到此消息,则表示您使用的是不支持框架的Web客户端。


你知道原因吗? 迈克查利

答案 3 :(得分:0)

如果您使用Groovy模板,则可以执行以下操作

stage("Notifications") {
            steps {
                script {
                    env.ForEmailPlugin = env.WORKSPACE

                    emailext mimeType: "text/html",
                        body: '''${SCRIPT, template="notification.template"}''',
                        subject: env.JENKINS_PROJECT + " " + currentBuild.currentResult + " : " + env.JOB_NAME + "/" + env.GIT_COMMIT,
                        recipientProviders: [requestor(), developers()],
                        from: env.JENKINS_EMAIL,
                        attachLog: true
                }
            }
        }

/var/lib/jenkins/email-templates/notification.template

的切片
<!-- ARGOCD SYNC OUTPUT -->
<h3>ArgoCD<h3/>
<hr size="1" />
<tt>
${new File("/tmp/sync.txt").text.replaceAll('\n','<br>').replaceAll(' ', '&nbsp;')}
</tt>