【发布时间】:2014-03-30 18:56:21
【问题描述】:
我是 Jenkins 的新手,我想知道如何在邮件正文中显示成功构建后生成的 HTML 报告(而不是 HTML 代码)(而不是作为附件)。
我想知道我应该遵循的确切步骤以及我可能的果冻模板的内容应该是什么。
【问题讨论】:
标签: jenkins jenkins-plugins email-attachments email-ext
我是 Jenkins 的新手,我想知道如何在邮件正文中显示成功构建后生成的 HTML 报告(而不是 HTML 代码)(而不是作为附件)。
我想知道我应该遵循的确切步骤以及我可能的果冻模板的内容应该是什么。
【问题讨论】:
标签: jenkins jenkins-plugins email-attachments email-ext
我在尝试实现此结果时遇到了麻烦,因为我的路径是动态变化的,我必须在 FILE 变量中使用一个变量。所以当我尝试以下任何一项时
body: '${FILE,path=${report}}'
body: "${FILE,path=${report}}"
body: '''${FILE,path=${report}}'''
还有更多,它没有用。另一方面,由于 Jenkins 的限制,我无法使用 groovy 读取文件
我的解决方法是像这样直接用shell读取html
html_body = sh(script: "cat ${report}", returnStdout: true).trim()
然后发送电子邮件
emailext replyTo: '$DEFAULT_REPLYTO',
subject: "subject",
to: EMAIL,
mimeType: 'text/html',
body: html_body
${report} 是指向 html 文件的路径,例如 /var/jenkins/workspace_318/report.html
【讨论】:
除了使用body: ${FILE,path="index.html"} 读取文件之外,您还需要使用mimeType: 'text/html 为一次执行全局或显式设置正确的内容类型。
emailext subject: '$DEFAULT_SUBJECT',
body: '${FILE,path="index.html"}',
recipientProviders: [
[$class: 'CulpritsRecipientProvider'],
[$class: 'DevelopersRecipientProvider'],
[$class: 'RequesterRecipientProvider']
],
replyTo: '$DEFAULT_REPLYTO',
to: '$DEFAULT_RECIPIENTS',
mimeType: 'text/html'
【讨论】:
您可以使用 Editable Email Notification 构建后操作将 html 内容作为邮件正文的一部分发送。
复制Default Content中的html内容,选择Content Type为HTML (text/html),如下图:
【讨论】:
您只需将链接分配给环境变量,然后您就可以使用该变量在电子邮件中使用 ${ENV, var=ENV_VARIABLE} 进行打印。
【讨论】:
深入了解plugin 文档。这里不需要 groovy。
只需确保将内容类型设置为 HTML 并将以下内容添加到正文中:
${FILE,path="my.html"}
这会将my.html 内容放在您的电子邮件正文中(文件的位置相对于工作的工作区。我使用它并且效果很好。
我希望这会有所帮助。
编辑:请注意,您必须拥有 Jenkins 版本 1.532.1(或更高版本)才能通过 email-ext 插件支持此功能。
【讨论】:
ERROR: File '/data/test.html' does not exist
/data/test.html 是文件系统根目录的绝对路径(前导斜杠)。仅尝试data/test.html。
/data/jenkins/jobs/GAMETV/htmlreports/HTML_Report/GAMETV.html我应该把什么作为路径?
/data/jenkins/jobs/GAMETV/htmlreports/HTML_Report/GAMETV.html放上去看看是否有效。
Jenkins 1.558 对我有用
${FILE,path="target/failsafe-reports/emailable-report.html"}
【讨论】: