【问题标题】:Aggregate SonarQube Maven analysis for multiple jobs in GitLab CI pipeline为 GitLab CI 管道中的多个作业聚合 SonarQube Maven 分析
【发布时间】: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 所需的工件已经存在。

标签: maven sonarqube gitlab-ci


【解决方案1】:

将我之前的评论变成答案,以“解决”这个问题。

我们一直在工作中使用选项 3,并且对结果非常满意。我看到了这种方法的三个主要优点:

  • 它大大简化了实际的扫描任务(在附加作业中)。
  • 它降低了对分析运行环境的要求。所有必需的工件都由专门的构建作业生成。
  • 它再次缩短了执行时间,因为 SQ 所需的工件已经存在。

【讨论】:

    猜你喜欢
    • 2017-12-07
    • 2022-01-19
    • 2021-12-26
    • 2022-01-03
    • 2022-06-12
    • 2023-03-14
    • 2020-08-18
    • 2018-07-09
    • 1970-01-01
    相关资源
    最近更新 更多