寻求Jenkins构建指标报告方案:Blue Ocean兼容及周度构建状态获取
解决方案:Blue Ocean环境下生成Jenkins构建指标报告
针对你遇到的build-metrics插件不兼容Blue Ocean、Jenkins CLI无法快速获取一周内构建状态的问题,提供以下几种可行方案:
方案1:使用Jenkins REST API(灵活定制首选)
Jenkins REST API比CLI更适合做时间范围过滤,结合jq等工具可以快速提取并统计构建数据:
- 先计算一周前的毫秒级时间戳:
cutoff=$(($(date -d '7 days ago' +%s)*1000)) - 调用API获取目标Job的构建数据,过滤时间范围并提取状态:
curl -s -u 用户名:API_TOKEN "http://你的Jenkins地址/job/目标Job名/api/json?tree=builds[number,result,timestamp]" | jq ".builds[] | select(.timestamp > $cutoff) | .result"
- 统计各状态的数量(比如成功、失败、取消):
curl -s -u 用户名:API_TOKEN "http://你的Jenkins地址/job/目标Job名/api/json?tree=builds[number,result,timestamp]" | jq -r ".builds[] | select(.timestamp > $cutoff) | .result" | sort | uniq -c
注意:API_TOKEN需要在Jenkins个人设置中生成,权限要包含Job的读取权限
方案2:使用Blue Ocean兼容的可视化插件
直接用支持Blue Ocean的插件替代build-metrics,无需自己写脚本:
- Build Monitor Plugin:支持在Blue Ocean中展示多Job的实时构建状态面板,包含成功率、最近构建结果等核心指标,可自定义布局。
- Pipeline Analytics Plugin:专为Pipeline设计,能生成构建时长趋势、成功率统计、阶段耗时分析等报告,完全兼容Blue Ocean界面。
- Dashboard View Plugin:可以自定义仪表盘,添加构建统计、趋势图等组件,支持Blue Ocean访问。
方案3:自定义Pipeline脚本收集指标
如果需要高度定制的报告格式,可以在Jenkinsfile中嵌入数据收集逻辑,定期生成报告:
- 在Pipeline的
post阶段记录每次构建的关键数据到CSV文件(或数据库):
pipeline { agent any stages { // 你的构建阶段 stage('Build') { steps { sh 'echo "构建中..."' } } } post { always { script { def buildInfo = [ jobName: env.JOB_NAME, buildNum: env.BUILD_NUMBER, result: currentBuild.result ?: 'ABORTED', startTime: currentBuild.startTimeInMillis, duration: currentBuild.duration ] // 追加写入CSV,可配置存储到共享目录或云存储 writeFile( file: "${env.WORKSPACE}/build-metrics.csv", text: "${buildInfo.jobName},${buildInfo.buildNum},${buildInfo.result},${buildInfo.startTime},${buildInfo.duration}\n", append: true ) } } } }
- 创建一个定时Job,每周读取CSV文件,用Python/pandas生成可视化报告(比如柱状图、折线图),并发送邮件或发布到Jenkins页面。
方案4:优化Jenkins CLI的使用方式
如果坚持用CLI,可以结合文本处理工具过滤时间范围:
- 用CLI导出Job的构建数据为CSV格式:
java -jar jenkins-cli.jar -s http://你的Jenkins地址/ -auth 用户名:API_TOKEN list-builds 目标Job名 --format=csv
- 过滤一周内的构建并统计状态:
cutoff=$(date -d '7 days ago' +%s000) java -jar jenkins-cli.jar -s http://你的Jenkins地址/ -auth 用户名:API_TOKEN list-builds 目标Job名 --format=csv | awk -F ',' -v cutoff=$cutoff '$3 > cutoff {print $4}' | sort | uniq -c
CSV字段说明:第1列是构建号,第2列是构建URL,第3列是时间戳(毫秒),第4列是构建结果
内容的提问来源于stack exchange,提问作者jpolley
相关产品推荐
相关产品推荐

