【发布时间】:2022-03-21 14:46:31
【问题描述】:
我想知道如何为 GitLab CI 管道中的多个作业聚合 SonarQube Maven 分析。
我的 GitLab CI 管道在不同的作业中构建后端和前端组件(在同一阶段)。它们需要不同的构建环境,因此,它们使用不同的图像。骷髅:
build-backend:
image: my-backend-image
stage: build
script:
- mvn xyz verify
build-frontend:
image: my-frontend-image
stage: build
script:
- build-frontend
如果我将声纳扫描添加到两个作业中,它们将在 SonarQube 上覆盖彼此的结果。因此,我需要 AFAIU
- 一种“聚合”每个作业结果的方法,即以某种方式告诉 Sonar 后端扫描和前端扫描属于一起。我没有看到这方面的选项。
- 构建一个可以同时构建后端和前端的超级映像,并以某种方式将两个构建混合到同一个作业中。这将对管道产生重大影响,因为我会失去并行化。
- 将两个作业中的 all 构建结果声明为 GitLab 工件(我们目前有选择地这样做)。这将包括 Java 类、覆盖率报告、测试报告等。然后在稍后阶段引入一个额外的工作,它只得到那些工件并做例如
mvn sonar:sonar。
我错过了更简单的解决方案吗?
【问题讨论】:
-
同样的问题,倾向于使用您提出的第三个选项。或者您在此期间是否找到了更简单的解决方案?
-
我们已经在工作中使用选项 3 几个月了,对结果非常满意。我看到这种方法的三个主要优点: A) 它大大简化了实际的扫描任务(在附加作业中)。 B)降低了对分析运行环境的要求;专用构建作业已生成的所有必需工件。 C)它再次减少了执行时间,因为 SQ 所需的工件已经存在。