如題,本文章記錄的是如何獲取Jenkins MultiJob 下游Job(子Job)的狀態(tài),并且發(fā)送郵件。
寫在前面:
第一種方式適用于:
1.具有Jenkins 插件安裝權(quán)限
2.不發(fā)送Email,只用于查看子Job狀態(tài) 色瘩,并且自己做進(jìn)一步處理
3.沒有任何基礎(chǔ)也能懂糖权,因?yàn)橹皇茄b個插件井仰,并且使用
想簡便并且發(fā)送郵件混坞,請直接查看第二種方式磁奖。
第二種方式適用于:
1.沒有Jenkins安裝權(quán)限囊拜,但是現(xiàn)有Jenkins已經(jīng)安裝了?Email-ext plugin?(Email Extension)
2.需要將子Job狀態(tài)整理發(fā)送郵件
第一種方式:
首先,如果只是想獲取子Job的狀態(tài)比搭,參考鏈接:Jenkins MultiJob - Send Results e-mail with data from inner Jobs?
本人嘗試了下冠跷,具體步驟如下:
1.創(chuàng)建?MultiJob (已有請?zhí)^)
3.部分Jenkins在安裝Groovy Postbuild插件的時候會失敗,并且提示更新其他插件身诺,按照提示更新即可
4.配置MultiJob的相關(guān)內(nèi)容
MultiJob --> Configure?--> Post-build Actions --> add?Post-build Actions -->Groovy Postbuild
如圖1
接下來在Groovy Script的輸入框內(nèi)輸入
subBuilds = manager.build.getSubBuilds()
//print the each sub build instance to the console log and its result
subBuilds.each{
? ? manager.listener.logger.println "${it}, ${it.getResult()}"
}
結(jié)果如下圖3
第二種方式:
1.創(chuàng)建?MultiJob (已有請?zhí)^)
2.安裝?Email-ext plugin?(Email Extension)(已安裝請?zhí)^).
3.MultiJob配置
MultiJob --> Configure?-->?Post-build Actions --> add?Post-build Actions -->?Editable Email Notification (添加發(fā)送郵件的組件)-->Advanced Settings(高級設(shè)置)-->Pre-send Script
在Pre-send Script里面加上
import groovy.json.JsonSlurper; //msg使用的類需要先引用包
def EmailContent = msg.getContent().getBodyPart(0).getContent() //logger.print("$EmailContent")
String newContent = """$EmailContent Test change content"""
def subBuilds = build.getSubBuilds()
subBuilds.each{
// logger.print("${it.jobName}")
logger.print("${it}, ${it.getResult()}")
newContent +="""${it} ${it.getResult()} """ } //獲取每個子job的狀態(tài)
//logger.print("$subBuilds")
//logger.print("$newContent")
msg.setContent(newContent, "text/html; charset=utf-8"); //設(shè)置郵件內(nèi)容
這部分代碼是學(xué)習(xí)了Andrew's Blog?里面關(guān)于配置Jnekins發(fā)送郵件蜜托,訪問github獲取最新Commit信息?這篇文章之后,改的比較簡單的版本霉赡,如果對相關(guān)內(nèi)容感信息橄务,可以去這篇博客學(xué)習(xí)。
暫時還沒進(jìn)行美化穴亏,不過郵件也已經(jīng)達(dá)到了效果蜂挪。
如果想要之獲取JobName重挑,buildNumber,和result的等相關(guān)參數(shù)
修改下面這句話就好了
newContent +="""${it} ${it.getResult()} """ } //獲取每個子job的狀態(tài)棠涮,并且加到郵件內(nèi)容
${it.getJobName()} // 獲取每個Job的名字
${it.getBuildNumber()}//獲取每個Job的Build Number