如何收集CI的统计数据

45次阅读
没有评论

问题描述

想要收集CI环境(如GitLab、GitHub、CodeCov、Codacy等)的统计数据,以便开发人员或团队负责人可以查看项目随时间的演变情况,包括但不限于以下内容:
– 合并请求、提交、贡献者的数量
– 通过/失败的测试数量
– 代码覆盖率
– 在服务器上运行的单元测试的运行时间
– …

不幸的是,这些统计数据是分散的(需要多个云服务),并且特定于提供它们的服务,而且它们不是通用的。

用户正在寻找一种解决方案,以便按存储库或存储库组收集随时间变化的数据点。用户的背景是硬件开发(如FPGA)和嵌入式软件开发。

用户还列举了一些其他类似软件的参数,如性能/每个测试用例的运行时间、可执行文件大小等。所有这些指标对于检测随时间的改进/优化或在硬件设计停止工作之前(变得不可靠)之前注意到退化是至关重要的。

用户已经了解到以下内容:
1. 这些数据最好存储在时间序列数据库中,可以无限制地存储时间跨度(如果要比较项目开始时的几年前的数据)或有限制,如最近12个月。
– Prometheus广泛用于云和网络设置中,例如收集CPU/RAM使用情况、网络流量、温度和其他任意数据点随时间的变化。
– Prometheus是自托管的GitLab安装的一部分。
2. 可以通过Grafana进行可视化。
– 用户可以定义新的图表和面板。
– Grafana是自托管的GitLab安装的一部分。

用户希望得到帮助或想法的是:
– 如何将Prometheus中的新时间序列与Git存储库连接起来?
– 如何基于谁可以访问Git存储库来定义访问权限?
– 如果存储库推送此类统计信息,如何向Grafana添加新视图?
– 如果存储库被删除,如何清除旧数据?
– 最好在存储库本身的YAML文件中进行配置。
– …

用户目前有100多个存储库,并且每周当前有1-3个存储库被添加。

用户想知道是否已经有这样的服务/插件可用。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

要将新的时间序列与Git存储库连接起来,并在Grafana中添加新视图,可以使用以下步骤:
1. 配置Prometheus以收集Git存储库的统计数据。
– 可以使用Prometheus的exporter或自定义脚本来收集数据。
– 将收集到的数据存储在Prometheus的时间序列数据库中。
2. 配置Grafana以可视化Prometheus中的数据。
– 在Grafana中创建新的面板和图表,使用Prometheus作为数据源。
– 使用Grafana的查询语言和可视化工具来创建所需的视图。
3. 配置Git存储库以推送统计数据到Prometheus。
– 可以使用Git的钩子或自定义脚本来实现。
– 在存储库中添加一个YAML文件,其中包含推送数据的配置。
4. 配置访问权限以控制谁可以访问Git存储库的统计数据。
– 可以使用GitLab或其他版本控制系统的访问控制功能来实现。
– 根据需要设置不同的访问级别和权限。
5. 配置定期清除旧数据的任务。
– 可以使用Prometheus的清理工具或自定义脚本来实现。
– 在存储库中的YAML文件中添加一个配置,指定清除旧数据的规则。

请注意,上述步骤是一个基本的解决方案框架,具体的实现细节可能因使用的工具和环境而有所不同。您可以根据自己的需求和环境进行调整和扩展。

方案2

如果您不想自己配置和管理整个解决方案,可以考虑使用现有的第三方服务或插件来收集和可视化Git存储库的统计数据。以下是一些可能的选择:
– GitLab提供了一些内置的统计功能,可以直接在GitLab界面中查看和分析数据。
– GitHub提供了一些集成的工具和服务,可以帮助您收集和可视化存储库的统计数据。
– 第三方服务和插件,如CodeClimate、SonarQube等,提供了更高级的统计和分析功能,可以与Git存储库集成使用。

这些服务和插件通常提供了易于使用的界面和工具,可以帮助您快速设置和使用统计数据。您可以根据自己的需求和预算选择适合您的解决方案。

总结

收集CI的统计数据可以帮助开发人员和团队了解项目的演变情况,并检测改进和优化的机会。通过使用时间序列数据库和可视化工具,您可以轻松地收集、存储和分析存储库的统计数据。您可以根据自己的需求和环境选择适合您的解决方案,无论是自己配置和管理还是使用现有的第三方服务和插件。

正文完