12

Jenkins 插件 Email-ext 2.15 版增加了对附加文件以构建通知电子邮件的支持。我想将构建日志附加到构建通知电子邮件中,但我不知道该怎么做。

构建日志似乎存储在 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 页面当前不包含如何配置附件的示例。

4

6 回答 6

16

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

引用 email-ext 插件文档(可在此处获得):

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

于 2011-12-19T16:25:42.540 回答
13

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

email-ext 的项目配置

于 2013-03-21T00:06:47.803 回答
4

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

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

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

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

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

build.log

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

注意:要使用这种特殊技术,您需要在从属服务器和主服务器之间配置无密码 ssh,可能使用 OpenSSH 密钥密码。如果您需要这方面的帮助,请在网上搜索有关该ssh-keygen命令的信息,或者查看类似这样的教程。类似的方法应该适用于没有内置 SSH 支持的平台。RoboCopy 或类似软件应该可以在 Windows 系统上运行。

编辑: Email-ext 插件现在能够将构建日志附加到通知消息中,并在作业的配置屏幕上使用复选框。有关示例,请参见幻灯片的答案。

于 2011-12-20T06:37:38.613 回答
1

首先,您必须安装电子邮件分机插件。安装后请按照此步骤操作。

  • 现在在“添加构建后操作”中选择可编辑的电子邮件通知,在该部分中,您可以选择 附加构建日志。选择选项,如下图所示。在此处输入图像描述

之后应用并保存。现在您肯定会在电子邮件附件中获得构建日志。谢谢你。

于 2018-02-07T10:50:46.533 回答
1

使用 Jenkinsfile 时,添加attachLog: trueemailext配置中,例如:

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

归功于 Jenkins 管道中的 @Spencer Malone - 通过电子邮件通知控制台错误日志

于 2021-02-17T00:58:32.347 回答
0

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

于 2015-01-30T01:11:29.530 回答