上一篇
图说jenkins pipeline处理前端项目--(4)执行远程主机上的脚本 - 掘金 (juejin.cn)
job执行前/后为什么要发邮件
job执行前发邮件的目的是:
告知你的开发小伙伴,jenkins开始发版了,服务可能暂时不可用。
job执行成功之后发邮件的目的是:
告知你的开发小伙伴,jenkins发版成功了,做了哪些改动,服务又可以用了。
job执行失败之后发邮件的目的是:
告知自己,jenkins发版失败了,快去看看是哪里出了问题。
前置条件
做好jenkins的邮件配置
配置方式见:jenkins配置126邮箱 - 掘金 (juejin.cn)
为不同的人创建不同的jenkins账户,并都配置名字和邮箱,并不再使用管理员账号执行job
job执行成功后发送邮件
post {
success{
script {
// 获取git最近30条提交记录
result = sh(script: "git log --pretty=format:'SHA-1:%h - 创建人:%an 时间:%ad 提交信息:%s' --date=format:'%y-%m-%d %H:%M:%S' -30", returnStdout: true).trim()
// 设置邮件接收人邮箱
mail to: 'test@126.com',
// 邮件主题
subject: "Jenkins任务 ${currentBuild.fullDisplayName} 构建成功",
// 邮件内容
body: " ${env.JOB_NAME} # ${env.BUILD_NUMBER}!\n 通过这个url地址 ${env.BUILD_URL} 查看构建信息.\n最新30条git日志为:\n${result}"
}
}
}
result = sh(script: "git log --pretty=format:'SHA-1:%h - 创建人:%an 时间:%ad 提交信息:%s' --date=format:'%y-%m-%d %H:%M:%S' -30", returnStdout: true).trim()
这里是执行shell脚本,并将执行结果放到result变量
${currentBuild.fullDisplayName}: 这个是jenkins内置变量,包含job名以及当前job执行id
${env.JOB_NAME}:这个是jenkins内置变量,job名称
${env.BUILD_NUMBER}: 这个是jenkins内置变量,job执行id
${env.BUILD_URL}: 这个是jenkins内置变量,当前job的此次执行结果的url
job执行失败后发送邮件
注意: 这里使用的Email Extension | Jenkins plugin插件发送的邮件,需要先安装
failure{
script {
result = sh(script: "git log --pretty=format:'SHA-1:%h - 创建人:%an 时间:%ad 提交信息:%s' --date=format:'%y-%m-%d %H:%M:%S' -30", returnStdout: true).trim()
emailext (
subject: "Jenkins任务 ${currentBuild.fullDisplayName} 构建失败",
body: "${env.BUILD_USER}\n ${env.JOB_NAME} # ${env.BUILD_NUMBER}!构建失败\n 通过这个url地址 ${env.BUILD_URL} 检查控制台输出.\n最新30条git日志为:\n${result}",
to: "${env.BUILD_USER_EMAIL}",
replyTo: '${env.BUILD_USER_EMAIL}',
mimeType: 'text/plain'
)
}
}