SonarQube maven 插件 - 在 CI 管道中分离构建和分析

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

我正在为 Java 8 项目设置 Gitlab CI/CD 管道,并且需要包含一个用于 SonarQube 分析的阶段。该项目是使用 Maven 构建的。这是迄今为止我在管道中定义的作业的缩写和匿名版本:

sonarqube-check:
  stage: analyze
  image: maven:3.6.3-jdk-11
  variables:
    #
  script: 
    - mvn verify sonar:sonar -Dsonar.projectKey=myproject -Dsonar.java.source=1.8
  allow_failure: true

这会失败,因为我们使用的 SonarQube 版本需要 Java 11,并且默认情况下并未包含 Java 8 项目的所有相关 jar。

根据此线程的最后评论:sonar.java.jdkHome属性无法解决

sonar
步骤取决于编译步骤,但应该可以在没有构建阶段的情况下运行SonarQube分析,而是依赖于早期管道阶段创建的构建工件。

有没有办法从 Maven 命令行中排除构建阶段,或者以某种方式使用与运行分析所用的 Java 版本不同的版本进行构建?

java maven gitlab sonarqube
1个回答
0
投票

是的,您可以通过在作业之间传递工件并直接要求 maven 运行 Sonarqube 插件来做到这一点。

简而言之,类似的事情应该可以做到:

maven-verify:
  stage: build
  image: maven-jdk8-image # Use your jdk8 image
  script:
     - mvn verify
  artifacts:
    paths: 
      - target/
    expire_in: 1 hrs

sonarqube-check:
  stage: analyze
  image: maven:3.6.3-jdk-11
  script: 
      # Set the sonar.java.binaries properties and don't add maven step like verify
    - mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.10.0.2594:sonar -Dsonar.qualitygate.wait=true -Dsonar.java.binaries=target/classes -Dsonar.java.source=1.8
  allow_failure: true
© www.soinside.com 2019 - 2024. All rights reserved.