Search code examples
groovyjenkinscontinuous-integrationemail-ext

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


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.


Solution

  • 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']]
      }