【问题标题】:Display HTML page inside mail body with Email-ext plugin in Jenkins在 Jenkins 中使用 Email-ext 插件在邮件正文中显示 HTML 页面
【发布时间】:2014-03-30 18:56:21
【问题描述】:

我是 Jenkins 的新手,我想知道如何在邮件正文中显示成功构建后生成的 HTML 报告(而不是 HTML 代码)(而不是作为附件)。

我想知道我应该遵循的确切步骤以及我可能的果冻模板的内容应该是什么。

【问题讨论】:

    标签: jenkins jenkins-plugins email-attachments email-ext


    【解决方案1】:

    如果您使用自定义路径

    我在尝试实现此结果时遇到了麻烦,因为我的路径是动态变化的,我必须在 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

    【讨论】:

      【解决方案2】:

      应该是这样的

      导航

      Configure -> Editable Email Notification
      

      默认内容

      ${FILE,path="path/result.html"}
      

      【讨论】:

        【解决方案3】:

        除了使用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'
        

        【讨论】:

        • 我收到了邮件但是没有显示css。我正在使用范围报告的dashboard.html
        【解决方案4】:

        您可以使用 Editable Email Notification 构建后操作将 html 内容作为邮件正文的一部分发送。

        复制Default Content中的html内容,选择Content TypeHTML (text/html),如下图:

        【讨论】:

        • 截至 2021 年,它似乎已被弃用。
        • @EladAvron 如果您遇到将实际文件路径放在电子邮件正文中而不是 HTML 内容的问题,请检查是否安装了此最新版本的插件 - plugins.jenkins.io/token-macro。当我更新这个插件时,我遇到了这个问题并解决了。 (Email Ext 插件在内部使用它,但似乎不会随着 Email Ext 更新而自动更新)
        【解决方案5】:

        您只需将链接分配给环境变量,然后您就可以使用该变量在电子邮件中使用 ${ENV, var=ENV_VARIABLE} 进行打印。

        【讨论】:

          【解决方案6】:

          深入了解plugin 文档。这里不需要 groovy。

          只需确保将内容类型设置为 HTML 并将以下内容添加到正文中:

          ${FILE,path="my.html"}
          

          这会将my.html 内容放在您的电子邮件正文中(文件的位置相对于工作的工作区。我使用它并且效果很好。

          我希望这会有所帮助。

          编辑:请注意,您必须拥有 Jenkins 版本 1.532.1(或更高版本)才能通过 email-ext 插件支持此功能。

          【讨论】:

          • 我将内容设置为 html 并按照现在提到的那样做,它在邮件正文中返回一个错误,说 ERROR: File '/data/test.html' does not exist
          • /data/test.html 是文件系统根目录的绝对路径(前导斜杠)。仅尝试data/test.html
          • 假设我的html文件的绝对路径是/data/jenkins/jobs/GAMETV/htmlreports/HTML_Report/GAMETV.html我应该把什么作为路径?
          • 作为初步测试,把整个路径/data/jenkins/jobs/GAMETV/htmlreports/HTML_Report/GAMETV.html放上去看看是否有效。
          • 通过将“可编辑电子邮件通知”>“内容类型”值更新为 HTML (text/html) 并将“默认内容”字段值更新为“${FILE,path="target/site /serenity/index.html"}。没有对触发器字段进行任何更改。
          【解决方案7】:

          Jenkins 1.558 对我有用

          ${FILE,path="target/failsafe-reports/emailable-report.html"}
          

          【讨论】:

          • 您能否添加屏幕截图,显示在何处添加此值?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-08-14
          • 1970-01-01
          • 1970-01-01
          • 2012-06-05
          • 1970-01-01
          • 2016-06-05
          • 2023-03-26
          相关资源
          最近更新 更多