Jenkins配置求助:每小时发送近1小时成功构建汇总邮件(排除失败)
实现Jenkins每小时汇总成功构建并发送邮件的方案
已完成前置配置
- 针对目标页面URL创建了自动化测试任务
- 配置测试任务每5分钟执行一次
- 已设置构建失败时即时邮件通知
- 已完成Bitbucket与Jenkins的集成
实现方案
方法1:使用邮件扩展插件+定时任务
1. 创建汇总任务
新建Freestyle项目(例如Hourly-Successful-Builds-Summary),配置构建触发器为Cron表达式 0 * * * *(每小时整点执行)。
2. 编写脚本获取成功构建数据
添加「Execute shell」构建步骤,通过Jenkins API拉取目标测试任务(假设任务名为URL-Automated-Tests)过去1小时内的成功构建记录:
# 替换为你的Jenkins配置信息 USER="jenkins-admin" TOKEN="your-api-token" JENKINS_URL="http://your-jenkins-server:8080" TARGET_JOB="URL-Automated-Tests" # 计算1小时前的时间戳(毫秒) ONE_HOUR_AGO=$(( $(date +%s) - 3600 ))000 # 调用API筛选成功构建并保存到文件 curl -s -u $USER:$TOKEN "$JENKINS_URL/job/$TARGET_JOB/api/json?tree=builds[number,result,timestamp,url]" | jq --arg ts "$ONE_HOUR_AGO" '.builds[] | select(.result == "SUCCESS" and .timestamp >= ($ts | tonumber))' > successful_builds.json
注意:需在Jenkins服务器上安装
jq工具用于JSON解析,API令牌可从Jenkins个人设置中生成。
3. 配置汇总邮件
安装并启用Email Extension Plugin,在任务的「Post-build Actions」中添加「Editable Email Notification」:
- 触发条件设置为「Always」
- 邮件主题设为「每小时Jenkins成功构建汇总」
- 邮件正文引用生成的汇总文件:
过去1小时内成功构建记录: %FILE,file=successful_builds.json% 点击构建URL可查看详细信息。 - 配置收件人列表及邮件服务器信息。
方法2:使用Pipeline脚本实现
若使用Jenkins Pipeline,可直接在脚本中整合数据获取与邮件发送逻辑:
pipeline { agent any triggers { cron('0 * * * *') // 每小时执行一次 } stages { stage('Fetch Successful Builds') { steps { script { def jenkinsServer = 'http://your-jenkins-server:8080' def targetJob = Jenkins.instance.getItem('URL-Automated-Tests') def oneHourAgo = System.currentTimeMillis() - 3600000 // 筛选过去1小时内的成功构建 def successfulBuilds = targetJob.builds.findAll { build -> build.result == Result.SUCCESS && build.timeInMillis >= oneHourAgo } // 生成汇总文本 def summaryContent = "过去1小时内成功构建汇总:\n" successfulBuilds.each { build -> summaryContent += "构建编号:${build.number} | 执行时间:${new Date(build.timeInMillis)} | 详情:${jenkinsServer}/${build.url}\n" } // 保存汇总到文件 writeFile file: 'build_summary.txt', text: summaryContent } } } stage('Send Summary Email') { steps { emailext( to: 'team@example.com', subject: 'Jenkins每小时成功构建汇总', body: '${FILE,file="build_summary.txt"}' ) } } } }
注意:需确保Jenkins全局安全设置允许脚本访问Jenkins实例,避免权限报错。
关键注意事项
- 权限配置:确保调用API或Pipeline脚本的用户拥有目标任务的构建历史查看权限
- 时间准确性:Cron表达式与时间戳计算需精准覆盖过去1小时的时间段
- 内容自定义:可根据需求扩展汇总内容,例如添加测试用例通过率、构建时长等数据
内容的提问来源于stack exchange,提问作者Snehil Mishra
相关产品推荐
相关产品推荐

