【问题标题】:Can Jenkins show me the total number/percent of broken builds per month?Jenkins 可以告诉我每月损坏的构建的总数/百分比吗?
【发布时间】:2011-12-01 22:57:58
【问题描述】:

我有一个构建/测试大约 50 个项目的 Jenkins 服务器。不幸的是,其中一些构建失败了,但是我没有一个好的方法来衡量构建失败的频率是随时间增加还是减少。

我想要的是这样的:

  • 一份报告向我展示了一个月内有多少工作不稳定/失败
  • 一份报告说“X 天没有损坏的构建”(有点像在建筑工地)
  • “红/绿日历”,每天显示是否有任何构建被破坏

我没有看到任何以这些方式可视化数据的插件,但我愿意抓取 Jenkins 日志以获取信息。有没有更好的方法来查看类似的数据?

【问题讨论】:

    标签: jenkins


    【解决方案1】:

    我认为使用 API 可以很好地完成这项工作。您可以从视图中获取所有作业,然后进入作业详细信息并获取构建号和构建日期。使用这些内部版本号,您可以获得相应的状态。您必须进行一些编码来收集和显示数据,但这是一种可能的方式。

    另一种可能性是在 Manage Jenkins 的控制台上使用 Groovy 脚本。虽然我没有太多使用该功能的经验,但是由于您可以访问内部表示,因此应该很容易从中获取一些数据。

    最后,最佳的解决方案是编写一个插件来完成这项工作,但这当然也是最需要努力和专业知识的解决方案。

    【讨论】:

    • 哇,我没有意识到有一个远程 API。这正是我所需要的(而且似乎比日志抓取更易于维护。)
    • @matthewsteele 能否分享一下 API。
    【解决方案2】:

    Global Build Stats 插件可能会提供您正在寻找的报告。

    (如果你已经考虑过这个插件,我很好奇你遇到了什么问题。)

    【讨论】:

      【解决方案3】:

      正如@pushy 所提到的,Groovy 脚本控制台是用于这些类型的统计数据收集的好工具。您也可以在远程 API 中使用 groovy 脚本。这是从所有匹配模式的作业中收集信息的起点。

      def jobPattern='pattern'
      Hudson.instance.getItems(Project).each {project ->
        def results = [:]
        if (project.name.contains(jobPattern)) {
          results."$project.name" = [SUCCESS:0,UNSTABLE:0,FAILURE:0,ABORTED:0]
          def build = project.getLastBuild()
          while (build){
            //println "$project.name;$build.id;$build.result"
            results."$project.name"."$build.result" = results."$project.name"."$build.result" +1
            build=build.getPreviousBuild()
          }
        }
        results.each{name,map->
          map.each{result,count->
            println "$name : $result = $count"
          }
        }
      }
      "Done"
      

      以此为起点,根据您的具体要求进行修改。

      【讨论】:

      【解决方案4】:

      尝试构建指标插件和 Global Build Stat 插件。

      【讨论】:

        猜你喜欢
        • 2020-07-13
        • 1970-01-01
        • 2021-08-17
        • 2020-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-29
        • 2016-05-14
        相关资源
        最近更新 更多