如何获取jenkins MultiJob下游job(子job)的状态并发送邮件

本文章记录的是如何获取Jenkins MultiJob 下游Job(子Job)的状态,并且发送邮件。
写在前面:

第一种方式适用于

1.具有Jenkins 插件安装权限

2.不发送Email,只用于查看子Job状态 ,并且自己做进一步处理

3.没有任何基础也能懂,因为只是装个插件,并且使用

想简便并且发送邮件,请直接查看第二种方式。

第二种方式适用于

1.没有Jenkins安装权限,但是现有Jenkins已经安装了 Email-ext plugin (Email Extension)

2.需要将子Job状态整理发送邮件

第一种方式:

首先,如果只是想获取子Job的状态,参考链接:Jenkins MultiJob - Send Results e-mail with data from inner Jobs

本人尝试了下,具体步骤如下:

1.创建 MultiJob (已有请跳过)

2.安装Groovy Postbuild Plugin

3.部分Jenkins在安装Groovy Postbuild插件的时候会失败,并且提示更新其他插件,按照提示更新即可

4.配置MultiJob的相关内容

MultiJob --> Configure --> Post-build Actions --> add Post-build Actions -->Groovy Postbuild

如图1

在这里插入图片描述

在这里插入图片描述
接下来在Groovy Script的输入框内输入

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()}"

}


在这里插入图片描述
第二种方式:

1.创建 MultiJob (已有请跳过)

2.安装 Email-ext plugin (Email Extension)(已安装请跳过).

3.MultiJob配置

MultiJob --> Configure --> Post-build Actions --> add Post-build Actions --> Editable Email Notification (添加发送邮件的组件)–>Advanced Settings(高级设置)–>Pre-send Script

在Pre-send Script里面加上

import groovy.json.JsonSlurper;  //msg使用的类需要先引用包

def EmailContent = msg.getContent().getBodyPart(0).getContent()

String newContent = """$EmailContent ################### Details###################"""

def subBuilds = build.getSubBuilds()

subBuilds.each{

    // logger.print("${it}, ${it.getResult()}")
    // logger.print("${it}, ${it.getUrl()}")
    newContent += "<br>"
    if (it.getResult() =~ /SUCCESS/){
    newContent += """${it.getJobName()} <span style="color:green;"> ${it.getResult()} </span>"""
    newContent += "<br>"
    newContent += "http://10.239.47.210:18888/${it.getUrl()}"
    newContent += "<br>"

}else{
    newContent += """${it.getJobName()} <span style="color:red;"> ${it.getResult()} </span>"""     //获取每个子job的状态
    newContent += "<br>"
    newContent += "http://10.239.47.210:18888/${it.getUrl()}" //获取每个job的url
    newContent += "<br>"
    newContent += sh(
            returnStdout: true,
            returnStatus: true,
            script: '''
			#!/usr/bin/env bash
			curl http://10.239.47.210:18888/${it.getUrl()}/console
            '''
   ) 
}
} 
msg.setContent(newContent, "text/html; charset=utf-8"); //发送邮件,设置邮件内容


这部分代码是学习了Andrew’s Blog 里面关于配置Jnekins发送邮件,访问github获取最新Commit信息 这篇文章之后,改的比较简单的版本,如果对相关内容感信息,可以去这篇博客学习。

暂时还没进行美化,不过邮件也已经达到了效果。

在这里插入图片描述
如果想要之获取JobName,buildNumber,和result的等相关参数

修改下面这句话就好了

newContent +="""${it} ${it.getResult()} """ } //获取每个子job的状态,并且加到邮件内容

${it.getJobName()} // 获取每个Job的名字

${it.getBuildNumber()}//获取每个Job的Build Number


参考: https://javadoc.jenkins.io/plugin/jenkins-multijob-plugin/com/tikal/jenkins/plugins/multijob/MultiJobBuild.SubBuild.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值