用Groovy渲染邮件模板

Groovy已经提供了GStringTemplateEngine、SimpleTemplateEngine、XmlTemplateEngine 三个模板引擎实现。利用SimpleTemplateEngine就可以实现一个简单的邮件模板的渲染功能。下面是一个简单的实现:

 定义一个email_content.template, 内容如下:

GENERAL INFO
BUILD ${build.result}
Build URL: ${rooturl}${build.url}
Project: ${project.name}
Build duration: ${build.durationString}
Groovy 脚本可以这么写

import groovy.text.SimpleTemplateEngine
import groovy.text.Template
import groovy.text.TemplateEngine

TemplateEngine engine = new SimpleTemplateEngine()
Template template = engine.createTemplate(new File("./src/templateStudy/email_content_compoenent.template"))

//声明要绑定(或者叫合并)到模板的一个 Map 对象
build = [result:"failed",url:"1",durationString:"10s"]
rooturl ="http://jenkins:8080/"
project =[name:"testPro"]
//把模型数据归并到模板中,通过 Map 来传递参数
Writable result = template.make(build:build,project:project,rooturl:rooturl)

//把归并后的结果输出来控制台
result.writeTo(new PrintWriter(System.out))

//或者不用上面的 writeTo() 方法,直接println 能得到一样的结果
println result

运行脚本,控制台就会输出

GENERAL INFO
BUILD failed
Build URL: http://jenkins:8080/1
Project: testPro
Build duration: 10s
在上面的例子中,我是将build以及project的信息直接写好,只是作为测试,而在实际情况中,这些信息都是可以从Jenkins的API来获得的。

我是将email单独放在一个job中,然后在编译的job中调用发送mail的job,所以我的Groovy代码可以这样写

import hudson.model.*;
import hudson.util.*;
import hudson.scm.*;

def thr = Thread.currentThread();
def build = thr?.executable;
def upstreamBuild = null
getUpstreamBuild(){
    //build.getUpstreamBuilds() ?
    def cause = build.causes.find {
        if(it instanceof hudson.model.Cause.UpstreamCause) {
            println "upstreamCause is exist"
            return true
        }
        println "upstreamCause is not exist"
        return false
    }
    if(cause != null) {
        upstreamBuild =
        hudson.model.Hudson.instance.getItem(cause.upstreamProject).getBuildByNumber(cause.upstreamBuild)
        println upstreamBuild.result
    }
}
这样,我获得了上游job的build信息,我就可以将upstreamBuild作为模型数据传给template了
Writable result = template.make(build:upstreamBuil,project:project,rooturl:rooturl)

同理我可以获得其他数据模型来填充模板中的参数。

目前,在真实环境中还没有测试过,等过两天全部的功能都完成了再来update

转载于:https://my.oschina.net/u/134516/blog/151536

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值