如何使用Jenkins插件Email-ext将构建日志附加到电子邮件通知?

时间:2011-12-19 07:31:12

标签: plugins jenkins jenkins-plugins email-ext

Jenkins插件的2.15版本Email-ext增加了对附加文件以构建通知电子邮件的支持。我想附加构建日志来构建通知电子邮件,但我无法弄清楚如何去做。

构建日志似乎存储在Jenkins主节点上(在本例中为Ubuntu Linux)。例如,/var/lib/jenkins/jobs/<PROJECT_NAME>/builds/<DATE_TIME>/log。当然,构建日志路径随每次构建而变化。 Email-ext文件附件功能默认使用项目工作区内的文件,该工作区位于Jenkins从站构建计算机(在本例中为Mac OS X)上。例如,我将我的奴隶配置为使用文件夹/Users/<USERNAME>/Jenkins/build_agent/workspace/<PROJECT_NAME>/

有没有办法让Email-ext从主文件系统附加文件,而不是在从构建机器上附加工作区?

提前感谢任何可以提供建议的人。 Email-ext wiki page目前不包含如何配置附件的示例。

6 个答案:

答案 0 :(得分:14)

您可以在电子邮件正文中使用$ {BUILD_LOG,maxLines,escapeHtml}标记来包含构建日志。

引用email-ext插件文档(可用here):

“要查看所有可用电子邮件令牌及其显示内容的列表,您可以单击项目配置屏幕上email-ext部分顶部与内容令牌参考相关联的”?“(问号) “

答案 1 :(得分:11)

插件DOES支持附加构建日志,您只需要选中项目配置中的框。

Project Configuration for email-ext

答案 2 :(得分:4)

在解决问题并进行更多研究之后,我得出结论,Email-ext不支持将构建日志附加到构建通知电子邮件。

然而,我确实提出了一个偷偷摸摸的解决方法,直到这样的功能可用:我使用Jenkins构建令牌生成适当的命令,将日志文件从主服务器复制到slave的构建工作区(见下面的注释。)

在项目中,在主编译步骤之后,我添加了一个新的执行shell 步骤来生成相应的scp(安全复制)命令。这是命令(用您自己的值替换USER和HOSTNAME,您可能需要定制适合您个人服务器的路径):

scp USER@HOSTNAME:/var/lib/jenkins/jobs/$JOB_NAME/builds/$BUILD_ID/log build.log

然后,在Email-ext插件的Email-ext 附件字段中,我输入了:

build.log

现在,构建日志将从主服务器复制到从属工作区,并附加到构建通知电子邮件。我已从邮件正文模板中删除了$BUILD_LOG令牌。

注意:要使用此特定技术,您需要在从属设备和主设备之间配置无密码ssh,可能使用OpenSSH密钥密码。如果您需要帮助,请在网上搜索有关ssh-keygen命令的信息,或者查看this one等教程。类似的方法应该适用于没有内置SSH支持的平台。 RoboCopy或类似应该适用于Windows系统。

编辑:现在,Email-ext插件可以将作业日志附加到通知消息,并在作业的配置屏幕上显示复选框。有关示例,请参阅幻灯片的答案。

答案 3 :(得分:1)

Firsl of all您必须安装Email Ext plugin。安装后请按照此步骤进行操作。

  • 现在进入&#39; 添加构建后操作'选择可编辑电子邮件通知,在该部分中您可以选择附加构建日志。选择选项,如下所示在图片中。enter image description here

之后申请并保存。现在您肯定会获得Build Log in Email附件。 谢谢。

答案 4 :(得分:1)

使用 Jenkinsfile 时,将 attachLog: true 添加到 emailext 配置中,例如:

emailext attachLog: true, body: '', subject: ''

感谢@Spencer Malone 在Jenkins pipeline - Notify with console error log through email

答案 5 :(得分:0)

我注意到,当我选中附加构建日志的复选框时,它也会在保存后取消选中,但是在电子邮件提交后它会附在我的电子邮件中。