为 GitLab CI 管道中的多个作业聚合 SonarQube Maven 分析
Aggregate SonarQube Maven analysis for multiple jobs in GitLab CI pipeline
我想知道如何为 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
如果我将 Sonar 扫描添加到两个作业中,它们将在 SonarQube 上覆盖彼此的结果。因此,AFAIU 我需要
- 一种“聚合”每个作业结果的方法,即以某种方式告诉 Sonar 后端扫描和前端扫描属于一起。我没有看到选项。
- 构建一个可以构建后端和前端的超级镜像,并以某种方式将两个构建混合到同一个作业中。这将对管道产生重大影响,因为我会失去并行化。
- 将两个作业中的所有构建结果声明为 GitLab 工件(我们目前有选择地这样做)。这将包括 Java 类、覆盖率报告、测试报告等。然后在后面的阶段引入一个额外的工作,只获取那些工件并做例如。
mvn sonar:sonar
.
是否有我遗漏的更简单的解决方案?
将我之前的评论变成一个答案,以“解决”这个问题。
我们一直在工作中使用选项 3,对结果非常满意。我看到这种方法的三个主要优点:
- 大大简化了实际扫描任务(在附加作业中)。
- 它降低了对运行分析的环境的要求。所有必需的工件都由专门的构建作业生成。
- 它减少了执行时间,因为 SQ 所需的工件已经存在。
我想知道如何为 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
如果我将 Sonar 扫描添加到两个作业中,它们将在 SonarQube 上覆盖彼此的结果。因此,AFAIU 我需要
- 一种“聚合”每个作业结果的方法,即以某种方式告诉 Sonar 后端扫描和前端扫描属于一起。我没有看到选项。
- 构建一个可以构建后端和前端的超级镜像,并以某种方式将两个构建混合到同一个作业中。这将对管道产生重大影响,因为我会失去并行化。
- 将两个作业中的所有构建结果声明为 GitLab 工件(我们目前有选择地这样做)。这将包括 Java 类、覆盖率报告、测试报告等。然后在后面的阶段引入一个额外的工作,只获取那些工件并做例如。
mvn sonar:sonar
.
是否有我遗漏的更简单的解决方案?
将我之前的评论变成一个答案,以“解决”这个问题。
我们一直在工作中使用选项 3,对结果非常满意。我看到这种方法的三个主要优点:
- 大大简化了实际扫描任务(在附加作业中)。
- 它降低了对运行分析的环境的要求。所有必需的工件都由专门的构建作业生成。
- 它减少了执行时间,因为 SQ 所需的工件已经存在。