Embed html report in email body using Email-ext plugin on Jenkins pipeline?
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
akhil krishna
Updated on June 13, 2022Comments
-
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