首页 文章

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

提问于
浏览
10

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

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

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

提前感谢能提供一些建议的任何人 . Email-ext wiki page当前不包含如何配置附件的示例 .

5 回答

  • 11

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

    Project Configuration for email-ext

  • 0

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

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

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

  • 13

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

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

    在项目中,在主编译步骤之后,我添加了一个新的 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 命令的信息,或者查看this one等教程 . 类似的方法应该适用于没有内置SSH支持的平台 . RoboCopy或类似应该适用于Windows系统 .

    EDIT: 现在,Email-ext插件能够将构建日志附加到通知消息,并在作业的配置屏幕上显示复选框 . 请参阅幻灯片的答案以获取示例 .

  • 1

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

    • 现在进入' Add post-build action '选择可编辑的电子邮件通知,在该部分中您可以选择 Attach build Log . 选择选项,如下图所示 .
      enter image description here

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

  • 4

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

相关问题