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

22.9k views Asked by At

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.

3

There are 3 answers

4
Goran Vasic On BEST ANSWER

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']]
    }
    
2
Sparky On

The answer is, in fact, blatantly obvious, and included in the email-ext documentation:

${SCRIPT, template="groovy-text.template"}
0
Showmik Bose On

It's a pretty old thread but here's what I did to make use of the built in template do this

    stage('Send Email')
    {
        steps
        {
            emailext body: '${JELLY_SCRIPT,template="html"}',recipientProviders: [[$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']], subject: 'Build Successful ${JOB_NAME}',mimeType: 'text/html'
        }
                
    }

The Plugin Documentation states that the html Jelly script is built in so you can easily make use of it.

https://plugins.jenkins.io/email-ext/