如何在持续集成管道中的多个构建过程中存储数据?

问题描述 投票:0回答:2

我们的团队正在使用 Azure DevOps 管道来执行持续集成任务(构建、运行单元测试、确定代码覆盖率等)。

现在我们希望在多个构建过程中跟踪各种度量(例如,编译器警告的数量)以对它们进行仪表板显示(用例 1),同时也防止回归(用例 2)。这两个用例都需要持久存储构建结果 - 即使在保留时间到期后也是如此。

如何在 Azure DevOps 管道的整个生命周期内持久存储数据(例如将提交哈希对保存到多个数据字段的 JSON 或 YAML 字符串)?

我正在寻找一个技术解决方案,这是肯定的,但是使用 DevOps 特定措辞的概念性答案会有所帮助,而且我什至很难寻找解决方案,因为我觉得我没有使用正确的措辞。

从技术上讲,我可以想象设置一个 SQL 数据库(在 Azure 上?),我的 CI 阶段与之通信以填充持久数据。但这似乎是重量级的。我可以想象将数据存储在存储库本身中,但这看起来很奇怪,并且会导致与实际版本管理模式不匹配的额外提交。

理想情况下,该解决方案不会涉及任何 Azure DevOps 管道插件(既不是自行开发的,也不是来自市场的),因为它们很难在我们的组织内部安装,但如果针对该问题的优秀解决方案以插件形式存在,仍然欢迎提示。

azure-devops continuous-integration azure-pipelines dashboard code-metrics
2个回答
0
投票

DevOps 中没有更好的方法了。存储库用于存储受源代码控制的源文件。

在 DevOps 中,它将构建结果存储为 Artifacts。默认情况下,工件会发布到设置了“保留策略”的容器。这意味着结果将根据您设置的保留策略在某一天被删除。显然,它不能满足您持久存储构建结果的需求。 如果您只是想将结果存储在某个地方并且不受保留策略的影响,那么您可以尝试在运行管道时将结果复制/发布到其他存储服务。例如

Azure Blob Storage

,或构建服务帐户可以访问的其他目录。当然,您所做的相邻 git 存储库也是一个选择。


0
投票

SonarQube 是专门为此任务而构建的,并且在行业中广泛使用。 从概念上讲,您可以扩展构建管道以包含 SonarQube 分析任务,以查找潜在的安全问题、代码异味、编译器警告、潜在错误和风格问题。在管道的最后,它将分析结果、单元测试结果和代码覆盖率发布到 SonarQube 数据库。

SonarQube 的 Web 界面提供所有这些指标的历史跟踪,并且如果您想构建不属于产品一部分的自定义报告,则可以使用 API 来提取数据。对于每个代码气味或问题,它提供了有关错误所在、如何修复以及估计解决时间的文档。这是向管理层报告修复技术债务需要多长时间的好方法(该工具显示需要 23 天!)

有一个付费云产品称为“SonarCloud”。或者,您可以在本地或容器 (SonarQube)(Kubernetes、Docker、Azure 容器实例、

Web 应用程序

)中建立“SonarQube”。 社区版是免费的,但没有所有的附加功能。付费开发者版和企业版支持分支级分析,并可以直接集成到您的拉取请求中。有一个开箱即用的集成,SonarQube 将通过向更改的文件添加注释来“装饰”您的拉取请求,突出显示正在引入的问题。

正确配置管道可能很挑剔,但一旦设置完毕,它就会为您的交付流程带来巨大的增值。

© www.soinside.com 2019 - 2024. All rights reserved.