Embed html report in email body using Email-ext plugin on Jenkins pipeline?

10,155

Solution 1

I have fixed the issue on pipeline by the following code

emailext mimeType: 'text/html',
        body: '${FILE,path="Seleniun/test-output/emailable-report.html"}', 
        subject: 'Selenium: Job '${env.JOB_NAME}' Status: currentBuild.result, 
        to: EMAIL_ADD

Solution 2

If you use a custom path this answer is for you

I had a complication trying to achieve this result because my path was dynamically changing and I had to use a variable inside a FILE variable. So when I tried any of the following

body: '${FILE,path=${report}}'
body: "${FILE,path=${report}}"
body: '''${FILE,path=${report}}'''

and many more, it didn't work. On the other hand I couldn't read the file with groovy because of Jenkins restrictions

My workaround was to read the html directly with shell like so

html_body = sh(script: "cat ${report}", returnStdout: true).trim()

and then just send the email

emailext replyTo: '$DEFAULT_REPLYTO',
  subject: "subject",
  to: EMAIL,
  mimeType: 'text/html',
  body: html_body

where ${report} was a path to html file like /var/jenkins/workspace_318/report.html

Share:
10,155
akhil krishna
Author by

akhil krishna

Updated on June 13, 2022

Comments

  • akhil krishna
    akhil krishna almost 2 years

    How can I make the email body as the selenium html report. I have followed the methods give in the question Display HTML page inside mail body with Email-ext plugin in Jenkins, but I'm getting error

    org.codehaus.groovy.control.MultipleCompilationErrorsException:
    startup failed: WorkflowScript: 6: unexpected token: FILE @ line 6,
    column 17.
            body: ${FILE,path="enteryPath/template.html"},
                    ^
    1 error
    at org.codehaus.groovy.control.ErrorCollector.failIfErrors(
    ErrorCollector.java:310)
    at org.codehaus.groovy.control.ErrorCollector.addFatalError(
    ErrorCollector.java:150)
    at org.codehaus.groovy.control.ErrorCollector.addError(
    ErrorCollector.java:120) 
    at org.codehaus.groovy.control.ErrorCollector.addError(
    ErrorCollector.java:132) 
    at org.codehaus.groovy.control.SourceUnit.addError(SourceUnit.java:350)
    at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(
    AntlrParserPlugin.java:144)
    at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(
    AntlrParserPlugin.java:110)
    at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:234)
    at org.codehaus.groovy.control.CompilationUnit$1.call(
    CompilationUnit.java:168)
    at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(
    CompilationUnit.java:943)
    at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(
    CompilationUnit.java:605)
    at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(
    CompilationUnit.java:581)
    at org.codehaus.groovy.control.CompilationUnit.compile(
    CompilationUnit.java:558)
    at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
    at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)     
    at groovy.lang.GroovyShell.parse(GroovyShell.java:700)  
    at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(
    CpsGroovyShell.java:129)
    at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(
    CpsGroovyShell.java:123)
    at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(
    CpsFlowExecution.java:517)
    at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(
    CpsFlowExecution.java:480)
    at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(
    WorkflowRun.java:269)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:421) Finished: FAILURE
    

    The code I used is:

    node {
        stage ('email')
        {
            emailext (
            subject: "some subject",
            body: ${FILE,path="enteryPath/template.html"},
            to: "[email protected]"
            )  
    
        }
    }
    

    Jenkins Version 2.85 Email extension plugin version 2.60 Thanks