9

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

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

5 回答 5

14

看起来最简单的方法是使用电子邮件分机的“预发送脚本”

脚本如下所示:

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

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

于 2013-05-01T12:49:16.013 回答
5

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

这在詹金斯电子邮件分机插件中对我有用

于 2016-06-24T18:28:39.460 回答
0

我尝试使用


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

但是发出来的邮件是这样的:


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


你知道原因吗?迈克·查利

于 2014-09-03T08:26:48.253 回答
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>
于 2020-08-13T21:12:28.640 回答
0

经过一些阶段后,我正在管道中尝试以下脚本。它抛出以下错误。可能是什么原因?

post {
        always {
            emailext body: '', presendScript: '''def reportPath = build.getWorkspace().child("test-output/emailable-report.html") 
msg.setContent(reportPath.readToString(), "text/html");''', subject: '', to: ‘someone@somewhere.com'
        }
    }

错误

[Pipeline] emailext
java.lang.NullPointerException: Cannot invoke method getWorkspace() on null object
于 2022-01-27T11:19:32.363 回答