Jenkins要做到构建失败的时候发送邮件,常规做法是加个全局的post failure,类似这样的代码

pipeline {
agent any stages { stage('deploy') {
steps {
script {
error 'failed'; }
}
} } post {
always {
echo 'This will always run'
}
success {
echo 'This will run only if successful'
}
failure {
mail bcc: '', body: "<b>Example</b><br>Project: ${env.JOB_NAME} <br>Build Number: ${env.BUILD_NUMBER} <br> URL de build: ${env.BUILD_URL}", cc: '', charset: 'UTF-8', from: '', mimeType: 'text/html', replyTo: '', subject: "ERROR CI: Project name -> ${env.JOB_NAME}", to: "foo@foomail.com";
}
unstable {
echo 'This will run only if the run was marked as unstable'
}
changed {
echo 'This will run only if the state of the Pipeline has changed'
echo 'For example, if the Pipeline was previously failing but is now successful'
}
} }

  这种做法有一点不好之处就是有几个JOB 需要发邮件就需要写几份发邮件代码,对原来Jenkins代码也有侵染。

有一种办法可以避免这样的情况,新建一个JOB ,这个JOB名字就叫做发邮件,把这个JOB 设置为上游JOB 触发,意思是当需要发邮件的JOB 在构建完以后,不管成功失败都会触发发邮件的JOB,来实现统一发邮件。

1.新建pipeline JOB, 在‘其它工程后触发’ 这里填上你想要发邮件的job,如果有多个使用逗号分隔 .

2.pipleline 的代码

pipeline {
agent any stages { stage('deploy') {
steps {
script {
String buildResult = "";
String buildNumber = "";
String jobName = "";
(buildResult, jobName, buildNumber) = getUpstreamBuildResult(); String buildUrl = "http://localhost:8080/job/${jobName}/${buildNumber}/console" if (buildResult == 'FAILURE') {
echo "send email";
mail bcc: '', body: "<b>Example</b><br>Project: ${jobName} <br>Build Number: ${buildNumber} <br> URL de build: ${buildUrl}", cc: '', charset: 'UTF-8', from: 'tianhe1006@126.com', mimeType: 'text/html', replyTo: '', subject: "ERROR CI: Project name -> ${jobName}", to: "jonas.tian@activenetwork.com";
} }
}
} } } def getUpstreamBuildResult() {
def upstream = currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause)
String jobName = upstream ? .getUpstreamProject();
echo jobName;
String buildNumber = "${upstream?.getUpstreamBuild()}";
echo buildNumber;
def upstreamTriggerBuildResult = Jenkins.instance.getAllItems(AbstractItem.class)
.findAll {
it.fullName == upstream.getUpstreamProject()
}
.collect {
proj - > proj.getBuilds().findAll {
it.number == upstream.getUpstreamBuild()
}.collect {
it.getResult()
}
}
.flatten()[0]; echo "${upstreamTriggerBuildResult}"; return [upstreamTriggerBuildResult, jobName, buildNumber];
}

  注意一点,这里用到了不安全代码,需要手动approve,运行一次,就会看到报错,一直点approve 就好了,但是如果不想这么麻烦可以安装一个插件

Permissive Script Security Plugin

https://wiki.jenkins.io/display/JENKINS/Permissive+Script+Security+Plugin

安装这个插件后就可以自动approve 不安全代码。

Jenkins 发邮件的Job的更多相关文章

  1. jenkins发邮件问题

    1.发送邮件不成功 Sending e-mails to: *******@**.cn    Finished: FAILURE 解决办法     jenkins-->configure glo ...

  2. Jenkins设置自动发邮件

    安装Jenkins方法详解:https://www.cnblogs.com/lizhe860/p/9901257.html 一.设置全局变量 从首页依次进入系统工具→系统设置 二.在项目配置中设置项目 ...

  3. jenkins使用(4)-发邮件

    邮箱配置 邮件触发器:达到条件就会发邮件 对单独的服务设置邮件 系统设置如下 回到单个任务的设置 配置中的主题设置如下: 回到单个任务的设置 配置中如下: 选择工作空间中的一个文件 发送多个附件: 邮 ...

  4. 2.jenkins配置邮件提醒

    1.前言 在Jenkins的使用中邮件提醒是一个常用功能,Jenkins默认安装了Mailer Plugin插件用于实现此功能. 2.邮件服务器配置 首先在Jenkins的"系统管理&quo ...

  5. Jenkins 配置邮件通知步骤

    Jenkins 配置邮件通知前言 可以在Jenkins 中配置邮件通知,比如在构建失败时发送邮件通知项目组来及时修复问题. Jenkins 邮件通知功能的插件主要包括: Mailer Plugin ( ...

  6. testng优化:失败重跑,extentReport+appium用例失败截图,测试报告发邮件

    生成的单html方便jenkins集成发邮件,= = 构建失败发邮件 参考:https://blog.csdn.net/galen2016/article/details/77975965 步骤: 1 ...

  7. Jenkins进阶-邮件通知(9)

    公司内部每天大概会发布N多版本,也不能派员工一直去盯着版本发布,所以希望发布完成后通知相关人员,Jenkins最早采用通知机制就是短信和邮件,由于短信成本很高,所以我们一般在发布结束后会采用邮件.现在 ...

  8. Jenkins 之邮件配置

    Jenkins 之邮件配置其实还是有些麻烦的,坑比较多,一不小心就...我是走了很多弯路的. 这里记录下来,希望大家以后不要重蹈覆辙: 我测试过,这里的 Extended E-mail Notific ...

  9. jenkin 构建失败 才发邮件通知

    使用场景:自动化测试,一般需要配置定时执行(每天执行一次,没周执行一次),如果有失败,则发邮件给相关人员关注.此时需要使用jenkins的邮件发送配置.修改job的configure配置步骤如下: 1 ...

随机推荐

  1. Github: 提升Github下载速度

    通过修改hosts文件来提速(该方法也可加速其他因为CDN被屏蔽导致访问慢的网站) 第一步:获取GitHub的IP地址 通过访问:http://tool.chinaz.com/dns或者https:/ ...

  2. 基于spark logicplan的表血缘关系解析实现

    随着公司平台用户数量与表数量的不断增多,各种表之间的数据流向也变得更加复杂,特别是某个任务中会对源表读取并进行一系列复杂的变换后又生成新的数据表,因此需要一套表血缘关系解析机制能清晰地解析出每个任务所 ...

  3. 1. Tomcat之startup.sh

    #判断操作系统os400=falsecase "`uname`" inOS400*) os400=true;;esac # 取脚本名称PRG="$0" # 判断 ...

  4. java-mybaits-015-mybatis逆向工程最佳实践【基础mybatis-generator、tk.mybatis、mubatis-plus】

    一.概述 三款框架的功能对比 Mybatis-generator 通用Mapper Mybatis-Plus 代码生成器 支持自动生成Model,Mapper,Mapper XML文件 生成方式不够灵 ...

  5. Spring5源码分析之Bean生命周期

    Spring Bean生命周期的构成 Bean的完整生命周期经历了各种方法调用,这些方法可以划分为以下几类: Bean自身的方法: 这个包括了Bean本身调用的方法和通过配置文件中<bean&g ...

  6. DRBD UpToDate/DUnknown 故障恢复

    故障如下: root@drbd1:~# drbd-overview 0:data/0 StandAlone Primary/Unknown UpToDate/DUnknown /data/mysql ...

  7. quasar 报错

    yarn是项目建议安装的方式,报错如下 npm 安装的项目,报错如下 情况:无论是哪种安装方式,似乎报错都出在同一个地方. 近况,还在解决中...

  8. 【esp8266】技术汇总帖

    https://blog.csdn.net/xh870189248/article/details/80027961 这哥们 牛

  9. centos 7 修改计算机名

      [root@centos7 ~]$ hostnamectl set-hostname test.xyz.com # 使用这个命令会立即生效且重启也生效 [root@centos7 ~]$ host ...

  10. 【Leetcode_easy】888. Fair Candy Swap

    problem 888. Fair Candy Swap solution: class Solution { public: vector<int> fairCandySwap(vect ...