How to invoke groovy templates in the Jenkins email-ext plugin

Sparky picture Sparky · Jun 23, 2015 · Viewed 16.8k times · Source

I want to use the Groovy scripting feature in the email-ext plugin for Jenkins, but I'm new to this and there seems to be a lot of assumed knowledge. Like how one goes about invoking one of these templates in the first place.

The answer to this is probably quite obvious, but I'm feeling a bit lost and would appreciate being pointed in the right direction.

Answer

Goran Vasic picture Goran Vasic · Feb 18, 2017

This example is based on the official email-ext documentation, which unfortunately does not provide any concrete examples on how to use the $SCRIPT line of code in Pipeline. If you wish to use an HTML template as the body for your email then you need to:

  1. Create a template file called my-email.template or whatever you like - you can find some template examples here

    <body>
      <h3>Using "build" environment variables:</h3>
      <p>
        <a href="<%= build.absoluteUrl %>"><%= build.fullDisplayName %></a>
      </p>
      <h3>List of all available "build" environment variables:</h3>
      <div>
        <% println build.properties.collect{it}.join('<br />') %>
      </div>
    </body>
    
  2. Have your Jenkins administrator place the my-email.template file inside $JENKINS_HOME\email-templates directory on Jenkins machine - make sure that user jenkins owns this directory as well as its content (i.e. template files)

  3. In Pipeline load my-email.template as body content:

    stage('Send email') {
        def mailRecipients = "[email protected]"
        def jobName = currentBuild.fullDisplayName
    
        emailext body: '''${SCRIPT, template="my-email.template"}''',
        subject: "[Jenkins] ${jobName}",
        to: "${mailRecipients}",
        replyTo: "${mailRecipients}",
        recipientProviders: [[$class: 'CulpritsRecipientProvider']]
    }