在 Travis-CI 构建中,如何仅在 master 分支上调用 SonarQube

On a Travis-CI build, how to only invoke SonarQube on master branch

因为我只有 SonarQube.com (SQ) 上的免费 CE 帐户,所以我不能让它在 master 之外建立任何分支。 我如何设置 .travis.yml 以便它仅在构建 master 分支时触发 SQ,但仍构建其他分支(只是不触发 SQ)?

.travis.yml 中的 script 部分进行干预对我有用。

重要的部分是:

script:
  - cmdExtra=""; if [ $TRAVIS_BRANCH = "master" ]; then cmdExtra="<your-sonar-trigger-here>"; fi; <your-cmd-here> $cmdExtra

这是基于 Maven 的 Java 项目的完整示例:

language: java
sudo: false # faster builds

addons:
  sonarcloud:
    organization: "myOrganizationId"
    token:
      secure: "134f51f3451f3451ffe12f3124123123123123123123"

jdk:
  - openjdk8

script:
# NOTE JaCoCo is used to have code coverage, the agent has to be activated
# NOTE The SonarCube Community Edition (free plan) only supports branch "master".
  - cmdExtra=""; if [ $TRAVIS_BRANCH = "master" ]; then cmdExtra="sonar:sonar"; fi; mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent package $cmdExtra

cache:
  directories:
    - '$HOME/.m2/repository'
    - '$HOME/.sonar/cache'