jenkins linux 发邮件,linuxea:jenkins pipeline邮件提醒的两种方式(5)

可以通过Mailer Plugin和Email-ext plugin插件发送邮件

在pipeline中可以在执行完成进行,通过直接的结果发送失败或者成功,也可以在执行阶段过程中,如果在那个阶段执行失败发送,想看第一中,只发送失败的详细结果:

异常处理参考:https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/ https://jenkins.io/doc/book/pipeline/syntax/

I. Mailer Plugin邮件设置

安装Mailer Plugin插件

1,jenkins邮箱配置

系统管理-->系统设置

使用的gmail邮箱,添加置如下

5c1967c5325842cec010c6abd3e07965.gif

注意 这里需要开启允许不够安全的应用如下:

2,gmail配置

5c1967c5325842cec010c6abd3e07965.gif

3,post字段

加入如下字段

post {

always {

step([$class: 'Mailer',

notifyEveryUnstableBuild: true,

recipients: "myname@gmail.com",

sendToIndividuals: true])

}

}

4,pipeline文件测试

pipeline {

agent any

environment {

def ITEMNAME = "webapp"

def DESTPATH = "/data/wwwroot"

def SRCPATH = "~/workspace/test"

def BUILD_USER = "mark"

}

stages {

stage('代码拉取'){

steps {

echo "checkout from ${ITEMNAME}"

git url: 'git@git.ds.com:mark/maxtest.git', branch: 'master'

//git credentialsId:CRED_ID, url:params.repoUrl, branch:params.repoBranch

}

}

stage('服务检查') {

steps {

echo "检查nginx进程是否存在"

script{

def resultUpdateshell = sh script: 'ansible webapp -m shell -a "ps aux|grep nginx|grep -v grep"'

currentBuild.result = 'FAILED'

if (resultUpdateshell == 0) {

skip = '0'

return

}

}

}

}

}

post {

always {

step([$class: 'Mailer',

notifyEveryUnstableBuild: true,

recipients: "myname@gmail.com",

sendToIndividuals: true])

}

}

}

这个简单的pipeline中我将nginx关闭,执行就会发送邮件

5c1967c5325842cec010c6abd3e07965.gif

这样的 邮件需要观察是否哪里出现问题

阶段邮件

1,方式一

也可以在每个阶段进行添加,像这样

stage('服务检查') {

steps {

echo "检查nginx进程是否存在"

script{

try {

sh script: 'ansible webapp -m shell -a "ps aux|grep nginx|grep -v grep"'

currentBuild.result = 'SUCCESS'

} catch (any) {

currentBuild.result = 'FAILURE'

throw any

} finally {

println currentBuild.result

step([$class: 'Mailer',

notifyEveryUnstableBuild: true,

recipients: "myname@gmail.com",

sendToIndividuals: true])

}

}

}

}

2,方式2

或者这样

stage('服务检查') {

steps {

echo "检查nginx进程是否存在"

script{

catchError {

sh script: 'ansible webapp -m shell -a "ps aux|grep nginx|grep -v grep"'

}

step([$class: 'Mailer',

notifyEveryUnstableBuild: true,

recipients: "myname@gmail.com",

sendToIndividuals: true])

}

}

}

3,预览

完整的预览就是这样

pipeline {

agent any

environment {

def ITEMNAME = "webapp"

def DESTPATH = "/data/wwwroot"

def SRCPATH = "~/workspace/test"

def BUILD_USER = "mark"

}

stages {

stage('代码拉取'){

steps {

echo "checkout from ${ITEMNAME}"

git url: 'git@git.ds.com:mark/maxtest.git', branch: 'master'

//git credentialsId:CRED_ID, url:params.repoUrl, branch:params.repoBranch

}

}

stage('服务检查') {

steps {

echo "检查nginx进程是否存在"

script{

catchError {

sh script: 'ansible webapp -m shell -a "ps aux|grep nginx|grep -v grep"'

}

step([$class: 'Mailer',

notifyEveryUnstableBuild: true,

recipients: "myname@gmail.com",

sendToIndividuals: true])

}

}

}

}

}

但是这样还是会有问题,如果构建正常,不会发送邮件,只有构建出错才会发送,我们希望每个阶段如果构建错误这发送错误的邮件,如果没有错误则发送构建完成这样的字样,那可以这样

II. Email-ext plugin插件

1,插件配置

安装完成后打开配置页面,系统管理-->系统设置

5c1967c5325842cec010c6abd3e07965.gif

启用调试模式。Enable Debug Mode,默认的触发器也可以勾选

5c1967c5325842cec010c6abd3e07965.gif

参考:https://wiki.jenkins.io/display/JENKINS/Email-ext+plugin#Email-extplugin-TemplateExamples

2,配置参考

post返回success/failure也会发送邮件,这样你会收到两份邮件,正常和失败的,如下:

post {

success {

emailext (

subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 更新正常",

body: """

详情:

SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'

状态:${env.JOB_NAME} jenkins 更新运行正常

URL :${env.BUILD_URL}

项目名称 :${env.JOB_NAME}

项目更新进度:${env.BUILD_NUMBER}

""",

to: "myname@gmail.com",

recipientProviders: [[$class: 'DevelopersRecipientProvider']]

)

}

failure {

emailext (

subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 更新失败",

body: """

详情:

FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'

状态:${env.JOB_NAME} jenkins 运行失败

URL :${env.BUILD_URL}

项目名称 :${env.JOB_NAME}

项目更新进度:${env.BUILD_NUMBER}

""",

to: "myname@gmail.com",

recipientProviders: [[$class: 'DevelopersRecipientProvider']]

)

}

}

}

3,混合模式(Mailer Email-ext)

Mailer 会将pipeline执行详细内容发送到邮件,成功这只发送编辑的信息

pipeline {

agent any

environment {

def ITEMNAME = "webapp"

def DESTPATH = "/data/wwwroot"

def SRCPATH = "~/workspace/test"

def BUILD_USER = "mark"

}

stages {

stage('代码拉取'){

steps {

echo "checkout from ${ITEMNAME}"

git url: 'git@git.ds.com:mark/maxtest.git', branch: 'master'

//git credentialsId:CRED_ID, url:params.repoUrl, branch:params.repoBranch

}

}

stage('服务检查') {

steps {

echo "检查nginx进程是否存在"

script{

try {

sh script: 'ansible webapp -m shell -a "ps aux|grep nginx|grep -v grep"'

} catch (exc) {

currentBuild.result = "FAILURE"

println currentBuild.result

step([$class: 'Mailer',

notifyEveryUnstableBuild: true,

recipients: "myname@gmail.com",

sendToIndividuals: true])

}

}

}

}

}

post {

success {

emailext (

subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 更新正常",

body: """

详情:

SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'

状态:${env.JOB_NAME} jenkins 更新运行正常

URL :${env.BUILD_URL}

项目名称 :${env.JOB_NAME}

项目更新进度:${env.BUILD_NUMBER}

""",

to: "myname@gmail.com",

recipientProviders: [[$class: 'DevelopersRecipientProvider']]

)

}

}

}

4,阶段邮件发送

在前面Mailer 已经可以实现了,但是如果pipeline过长观看不是很理想,可以这样

如果希望每个步骤如果失败则发送每一个失败的邮件提醒,如果正常也发送一封邮件提醒。不同的是内容可以自定义

pipeline {

agent any

environment {

def ITEMNAME = "webapp"

def DESTPATH = "/data/wwwroot"

def SRCPATH = "~/workspace/test"

def BUILD_USER = "mark"

def USERMAIL = "myname@gmail.com"

}

stages {

stage('代码拉取'){

steps {

echo "checkout from ${ITEMNAME}"

git url: 'git@git.ds.com:mark/maxtest.git', branch: 'master'

//git credentialsId:CRED_ID, url:params.repoUrl, branch:params.repoBranch

}

}

stage('服务检查') {

steps {

echo "检查nginx进程是否存在"

script{

try {

sh script: 'ansible webapp -m shell -a "ps aux|grep nginx|grep -v grep"'

} catch (exc) {

currentBuild.result = "FAILURE"

emailext (

subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 更新失败",

body: """

详情:

FAILURE: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'

状态:${env.JOB_NAME} jenkins 更新失败

URL :${env.BUILD_URL}

项目名称 :${env.JOB_NAME}

项目更新进度:${env.BUILD_NUMBER}

内容:nginx进程不存在

""",

to: "${USERMAIL}",

recipientProviders: [[$class: 'DevelopersRecipientProvider']]

)

}

}

}

}

stage('目录检查') {

steps {

echo "检查${DESTPATH}目录是否存在"

script{

try {

sh script: 'ansible webapp -m shell -a "ls -d ${DESTPATH}"'

} catch (exc) {

currentBuild.result = "FAILURE"

emailext (

subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 更新失败",

body: """

详情:

FAILURE: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'

状态:${env.JOB_NAME} jenkins 更新失败

URL :${env.BUILD_URL}

项目名称 :${env.JOB_NAME}

项目更新进度:${env.BUILD_NUMBER}

内容:${DESTPATH}目录不存在

""",

to: "${USERMAIL}",

recipientProviders: [[$class: 'DevelopersRecipientProvider']]

)

}

}

}

}

}

post {

success {

emailext (

subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 更新正常",

body: """

详情:

SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'

状态:${env.JOB_NAME} jenkins 更新运行正常

URL :${env.BUILD_URL}

项目名称 :${env.JOB_NAME}

项目更新进度:${env.BUILD_NUMBER}

""",

to: "${USERMAIL}",

recipientProviders: [[$class: 'DevelopersRecipientProvider']]

)

}

}

}

5c1967c5325842cec010c6abd3e07965.gif

除非另有说明,否则本站上的内容根据以下许可进行许可: CC署名-非商业性使用-相同方式共享4.0国际许可协议4.0进行许可

本文作者:www.linuxea.com for Mark

文章链接:http://www.linuxea.com/1767.html (转载请注明本文出处和本章链接)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

致青春!一键上线你们专属的云上毕业纪念册

简介: 毕业不说再见,青春不散场!在云端,在一起!在问答https://developer.aliyun.com/ask/321737的留言区域晒出自己「线上环境」部署的毕业纪念册,在6月30号18点之前点赞数前10可以获得我们送出的毕业大礼包…

信息安全≠数据安全,山石网科发布2021《数据安全治理白皮书》

完整的数据安全治理体系,是一个包含了目标、组织、流程、技术等多维度的复杂系统工程。数据安全治理应该侧重四点:数据安全治理是必选项;是一套完整的治理体系问题;是多维视角的立体建构能力;是建立数据全生命周期的多…

dynamo python修改多个参数_40岁小白学了30天python发现,编程真的其乐无穷

今天是十一哥学python的第30天。时间过得挺快,感觉第一篇学习心得写了还没多久,这就已经不知不觉写30篇了。从第1集开始,看视频教程、记笔记、截图、写代码,然后写文章、配图、发帖、回复网友留言,以及在学习交流群里跟…

友盟+U-APM 移动应用性能体验报告:Android崩溃率达0.32%,OPPO 、华为、VIVO 崩溃表现良好

简介: 应用性能稳定是良好用户体验中非常关键的一环,而现实情况却是应用崩溃、卡顿、加载缓慢、页面白屏等问题,频频出现在用户的真实体验之中,成为影响业务表现的直接杀手。为此,应用性能管理(APM&#xf…

阿里云张毅萍:构建边缘云全站加速网络体系

简介: 2021年6月9日,亚太内容分发大会暨CDN峰会在北京举行,阿里云边缘云网络高级技术专家张毅萍受邀参会,分享了阿里云在构建边缘云全站加速网络体系的实践,基于边缘云节点支撑各种应用协议的分层传输加速,…

http中的请求头各部分都是什么意思_硬核!30 张图解 HTTP 常见的面试题

每日一句英语学习,每天进步一点点:前言在面试过程中,HTTP 被提问的概率还是比较高的。小林我搜集了 5 大类 HTTP 面试常问的题目,同时这 5 大类题跟 HTTP 的发展和演变关联性是比较大的,通过问答 图解的形式由浅入深的…

Hologres揭秘:高性能原生加速MaxCompute核心原理

简介: Hologres技术揭秘系列持续更新中,本期我们将带来Hologres高性能原生加速查询MaxCompute的技术原理解析。 Hologres(中文名交互式分析)是阿里云自研的一站式实时数仓,这个云原生系统融合了实时服务和分析大数据的…

mfc 消息消息队列概念_消息队列面试连环问

最近我一直扎在消息队列实现细节之中无法自拔,已经写了 3 篇Kafka源码分析,还剩很多没肝完。之前还存着RocketMQ源码分析还没整理。今儿暂时先跳出来盘一盘大方向上的消息队列有哪些核心注意点。核心点有很多,为了更贴合实际场景,…

如何用增长的思维做提效?

简介: 埋点作为记录用户行为的常规手段,伴随着前端技术的发展早已历经春秋,不过直到“增长黑客”系列理论出现,才真正让埋点分析变得内涵丰富且有章可循。 作者 | 金戟 来源 | 阿里技术公众号 埋点作为记录用户行为的常规手段&am…

ajax返回list前台遍历_List、set集合接口分析

一、List接口详解1、List接口有三个实现类,ArrayList、LinkedList、Vector2、三个实现类的异同点:(1)ArrayList: 作为list接口的主要实现类;线程不安全,效率高;底层使用Object[]存储&#xff08…

聚焦 | 数据湖分析如何面向对象存储OSS进行优化?

简介: 最佳实践,以DLA为例子。DLA致力于帮助客户构建低成本、简单易用、弹性的数据平台,比传统Hadoop至少节约50%的成本。其中DLA Meta支持云上15种数据数据源(OSS、HDFS、DB、DW)的统一视图,引入多租户、元…

如何把极坐标化为直角坐标_2019高考100题之063(极坐标)

分析&#xff1a;如果你对过原点的直线的参数方程(xtcosθ&#xff0c;ytsinθ(参数t∈R))理解透彻了&#xff0c;那么极坐标也就没有任何问题了&#xff0c;特别是对于ρ<0的理解&#xff0c;就和t<0类似.教材上说了不作特殊说明&#xff0c;ρ都是大于零的&#xff0c;…

c语言队列作用,队列(C语言)

一、定义一种可以实现“先进先出”的存储结构。二、分类1、链式队列&#xff1a;用链表实现。2、静态队列&#xff1a;用数组实现。静态队列通常都必须是循环队列。3、循环队列(1)循环队列需要几个参数来确定&#xff1f;需要2个参数来确定&#xff1a;front、rear(2)循环队列各…

2021银行共探转型新动能:大行酝酿质变 小行跨越数字鸿沟

2021年&#xff0c;我国“十四五”规划开篇启程&#xff0c;数字经济蓬勃发展&#xff0c;银行业紧跟国家发展大局&#xff0c;全力推进数字化转型向纵深发展&#xff0c;探寻行业新动能&#xff0c;积极参与全社会数字生态建设&#xff0c;为数字中国高质量发展贡献金融力量。…

如何构建一个拖垮整个公司的运维系统

简介&#xff1a; 人肉运维&#xff0c;不在 DevOps 中转型&#xff0c;就在自动化中消亡。云化时代的运维&#xff0c;需要的是高铁&#xff0c;而不是“跑的更快的马车”。6月25日&#xff0c;数智创新行上海站智能运维专场&#xff0c;期待您的参与。 原文链接 本文为阿里云…

idea 安装php插件_免费版的 IDEA 为啥不能使用 Tomcat ?

程序员的成长之路互联网/程序员/技术/资料共享 关注阅读本文大概需要 2 分钟。来自&#xff1a;https://urlify.cn/2Ifiiiidea有两大版本&#xff0c;一个是Ultimate版本&#xff0c;一个是Community版&#xff0c;ultimate是需要收费的&#xff0c;Community版是开源免费的。然…

RocketMQ 千锤百炼--哈啰在分布式消息治理和微服务治理中的实践

简介&#xff1a; 随着公司业务的不断发展&#xff0c;流量也在不断增长。我们发现生产中的一些重大事故&#xff0c;往往是被突发的流量冲跨的&#xff0c;对流量的治理和防护&#xff0c;保障系统高可用就尤为重要。 作者&#xff5c;梁勇 ​ 背景 ​ 哈啰已进化为包括两轮…

休闲食品行业如何数字化升级,腾讯云和卫龙辣条一起打了个样

11月26日&#xff0c;腾讯云与卫龙集团达成战略合作&#xff0c;双方将整合各自优势资源&#xff0c;助力卫龙集团建设专有云平台&#xff0c;围绕生产、运营、管理层面进行全链路数字化&#xff0c;加速卫龙集团转型升级&#xff0c;打造休闲食品行业标杆。 作为一家年销售超过…

Vite + React 组件开发实践

简介&#xff1a; 毫不夸张的说&#xff0c;Vite 给前端带来的绝对是一次革命性的变化。或者也可以说是 Vite 背后整合的 esbuild 、 Browser es modules、HMR、Pre-Bundling 等这些社区中关于 JS 编译发展的先进工具和思路&#xff0c;在 Vite 这样的整合推动下&#xff0c;给…

canvas全局合成画月牙_GIF动态图,视频?都能用Python转换成字符画图像

字符画是一种由字母、标点或其他字符组成的图画&#xff0c;它产生于互联网时代&#xff0c;在聊天软件中使用较多&#xff0c;本文我们看一下如何将自己喜欢的图片转成字符画。静态图片首先&#xff0c;我们来演示将静态图片转为字符画&#xff0c;功能实现主要用到的 Python …