跳转到内容

Jenkins构建统计

来自代码酷

模板:Note

概述[编辑 | 编辑源代码]

Jenkins构建统计是通过收集、分析和可视化构建任务(Job)的历史数据,帮助团队评估系统健康度、识别性能瓶颈并优化CI/CD流程的技术实践。核心统计指标包括:

  • 构建成功率/失败率
  • 构建平均耗时
  • 构建触发频率
  • 测试通过率关联分析

核心统计指标详解[编辑 | 编辑源代码]

1. 构建成功率[编辑 | 编辑源代码]

计算公式: 成功率=成功构建次数总构建次数×100%

2. 构建耗时分析[编辑 | 编辑源代码]

常用统计维度:

  • 最近10次构建的平均耗时
  • 历史峰值耗时
  • 阶段耗时占比(如代码编译、测试、部署)

pie title 构建阶段耗时占比 "代码编译" : 35 "单元测试" : 25 "集成测试" : 30 "部署" : 10

统计实现方法[编辑 | 编辑源代码]

通过Jenkins原生功能[编辑 | 编辑源代码]

1. 查看单个Job的统计:

  - 访问 Job名称 → Build History → Build Time Trend  
  - 示例输出:  
  
     Last 10 builds:  
     #42 - SUCCESS (Duration: 5m 12s)  
     #41 - FAILURE (Duration: 3m 45s)  
     ...  
     Average duration: 4m 28s

2. 使用Jenkins API获取原始数据:

  
   # 获取最近5次构建状态  
   curl -s "http://jenkins-server/job/my-job/api/json?tree=builds[number,result,duration]{0,5}"

通过插件扩展[编辑 | 编辑源代码]

推荐插件:

  • Build History Metrics Plugin:提供成功率/失败率仪表盘
  • Global Build Stats Plugin:跨项目聚合统计

配置示例:

  
<!-- Global Build Stats配置片段 -->  
<buildStats>  
  <excludedJobs>temp-.*</excludedJobs>  
  <chartWidth>800</chartWidth>  
  <chartHeight>400</chartHeight>  
</buildStats>

实际案例[编辑 | 编辑源代码]

案例1:识别测试阶段瓶颈[编辑 | 编辑源代码]

某团队发现构建耗时从平均6分钟突增至15分钟,通过统计发现:

  • 集成测试阶段耗时增长300%
  • 根本原因:新增了未优化的端到端测试

案例2:资源调度优化[编辑 | 编辑源代码]

统计显示80%的构建集中在工作日10:00-12:00,导致资源争用。解决方案:

  • 配置构建触发器分散调度
  • 结果:平均构建等待时间从8分钟降至2分钟

高级技巧[编辑 | 编辑源代码]

自定义统计脚本[编辑 | 编辑源代码]

使用Groovy脚本提取构建数据:

  
import jenkins.model.Jenkins  
def job = Jenkins.instance.getItem("my-job")  
def stats = job.builds.collect { build ->  
    [  
        number: build.number,  
        result: build.result?.toString() ?: "RUNNING",  
        duration: build.duration  
    ]  
}  
println "Top 5 longest builds:"  
stats.sort { -it.duration }.take(5).each { println it }

与监控系统集成[编辑 | 编辑源代码]

将Jenkins统计数据推送到Prometheus的配置示例:

  
# prometheus-jenkins-exporter配置  
metrics:  
  - name: jenkins_build_duration_seconds  
    help: "Build duration in seconds"  
    type: gauge  
    labels:  
      - job_name  
      - result  
    path: '{.duration}'

常见问题[编辑 | 编辑源代码]

模板:Q&A

模板:Q&A

最佳实践[编辑 | 编辑源代码]

1. 基线建立:记录正常状态下的统计指标作为基准 2. 告警阈值:当成功率连续3次低于85%时触发告警 3. 定期复盘:每周分析构建趋势,识别潜在问题

模板:Tip