如何实现Jenkins每日任务执行汇总表以表格格式自动发送至指定邮箱
实现方案及可使用插件说明
一、推荐插件组合
以下两个都是Jenkins官方维护的稳定插件,搭配即可满足需求:
Email Extension Plugin:扩展Jenkins邮件发送能力,支持自定义邮件内容模板,可嵌入动态脚本拉取任务状态Groovy Plugin:支持在Jenkins任务中执行Groovy脚本,用来批量拉取指定任务的执行状态
二、具体实现步骤
步骤1:新建汇总监控定时任务
新建一个自由风格的Jenkins任务,设置定时触发规则为每天凌晨所有夜跑任务结束后的时间,比如所有任务预计3点跑完,就设为0 3 * * *,确保拉取的是前一晚完整的执行结果。
步骤2:添加Groovy脚本构建步骤
在构建步骤中选择「Execute Groovy script」,填入以下逻辑的脚本,可根据实际情况修改任务列表、时间范围参数:
import jenkins.model.Jenkins import hudson.model.Result // 替换为你需要监控的10个任务的准确名称 def monitorJobs = ["job1", "job2", "job3", "job4", "job5", "job6", "job7", "job8", "job9", "job10"] // 时间范围默认取近24小时内的构建,可根据夜跑窗口调整 def timeRange = 24 * 60 * 60 * 1000 def now = System.currentTimeMillis() def resultTable = [] monitorJobs.each { jobName -> def job = Jenkins.instance.getItemByFullName(jobName) if (!job) { resultTable << [jobName, "任务不存在", "-", "-"] return } def lastBuild = job.getLastBuild() if (!lastBuild || (now - lastBuild.getTimeInMillis()) > timeRange) { resultTable << [jobName, "近24小时无执行记录", "-", "-"] return } def status = lastBuild.getResult().toString() def buildUrl = lastBuild.getAbsoluteUrl() def duration = lastBuild.getDurationString() resultTable << [jobName, status, duration, buildUrl] } // 将结果存入构建环境变量,供后续通知步骤调用 def build = Thread.currentThread().executable build.addAction(new hudson.model.ParametersAction([ new hudson.model.StringParameterValue("JOB_STATUS_TABLE", new groovy.json.JsonBuilder(resultTable).toPrettyString()) ]))
步骤3:配置通知规则
在构建后操作中选择「Editable Email Notification」,按需求配置:
- 收件人列表填入所有干系人的邮箱地址
- 邮件主题自定义为类似「${BUILD_DATE} 夜跑任务执行状态汇总」
- 邮件内容选择HTML格式,用模板解析刚才存储的
JOB_STATUS_TABLE变量渲染为表格,可给执行失败的任务行添加红色高亮方便识别。
如果需要对接企业微信、钉钉等内部办公工具,把邮件发送步骤替换为对应平台的机器人通知插件即可,同样可以传入表格内容发送。
步骤4:测试验证
手动触发一次该汇总任务,确认是否能正常拉取所有指定任务的状态、通知是否正常发送、表格格式是否符合预期。
三、轻量替代方案
如果不想写Groovy脚本,也可以用Build Monitor View Plugin先创建一个包含10个指定任务的监控视图,再搭配Screen Capture Plugin定时截图发送,该方案灵活性较低,适合不需要结构化表格数据的场景。
内容的提问来源于stack exchange,提问作者Venkatesha K
相关产品推荐
相关产品推荐

