1

在我们的CI环境中,我们目前有一个构建服务器(基于Atlassian Bamboo)和两个SonarQube实例(版本6.0和6.5)。最初,我们的CI服务器被配置为与6.0 SonarQube实例进行通信。这在/home/bamboo/.gradle/gradle.properties文件中已经配置了CI服务器上是这样的:在Gradle Build中配置多个SonarQube实例

systemProp.sonar.host.url=<http url of SonarQube 6.0 instance> 
systemProp.sonar.login=<username here> 
systemProp.sonar.password=<password here> 

现在,我们有我们的CI服务器上运行的另一个基于摇篮-项目,应聊到新SonarQube 6.5实例。我试着配置这个,但一直失败。

事情我迄今所做的:

添加命令行参数来摇篮包装命令: 我曾尝试加入-Dsonar.host.url=-Dsonar.login=-Dsonar.password=到摇篮命令。由于这看起来不起作用,我还尝试使用-DsystemProp.sonar.host.url=,-DsystemProp.sonar.login=,-DsystemProp.sonar.password=将命令行参数设置为SonarQube系统属性。这也没有用。

添加的属性到的build.gradle文件 - 增加属性的build.gradle文件是这样的:

sonarqube { 
    properties { 
     property "sonar.host.url", "<http url of SonarQube 6.0 instance>" 
     property "sonar.login", "<username here>" 
     property "sonar.password", "<password here>" 
     ...<other SonarQube analysis settings here>... 
    } 
} 

在所有情况下,CI服务器聊到了错误SonarQube实例(6.0)。我的问题是,是否可以将单个项目配置为与另一个SonarQube实例对话。如您所见,我们使用Gradle 3.2.1作为构建工具。我们也使用org.sonarqube Gradle插件。

谢谢你的帮助。

安德烈

回答

1

你的第一次尝试没有成功,因为你设置在命令行系统属性,但是从项目属性以后设置复位系统性能配置的值。

您的第二次尝试不起作用,因为systemProp.sonar.login语法仅支持在gradle.properties文件中,而不是通过-P命令行项目属性支持。

您的第三次尝试不起作用,因为SonarQube扫描程序偏好系统属性值超过通过DSL配置的值,因此可以借助本地配置更改构建脚本中配置的内容。

您需要手动设置构建脚本中的系统属性,然后覆盖从项目属性自动设置的内容。当用户文件覆盖项目文件时,使用gradle.properties项目文件不起作用。所以你需要在构建脚本中使用类似System.properties.'sonar.login' = '...'的东西。您可以在那里对其进行硬编码,或者使用您可以在gradle.properties文件中设置的项目属性或通过-P参数。


除此之外,我永远不会依赖在构建服务器上的Gradle用户目录中的任何配置。大多数构建服务器使用可能在分布式计算机上运行的构建代理,因此您必须始终确保所有构建代理都配置相同,等等。我总是在构建服务器的构建设置中配置相应的配置,可以通过设置系统属性或环境属性或命令行参数来配置。

只是我的2ct。