gpt4 book ai didi

gradle - 在Gradle构建中配置多个SonarQube实例

转载 作者:行者123 更新时间:2023-12-03 04:00:14 24 4
gpt4 key购买 nike

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

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

现在,我们在CI服务器上运行了另一个基于Gradle的项目,该项目将与新的SonarQube 6.5实例通信。我尝试配置它,但一直失败。

我到目前为止所做的事情:

向gradle wrapper命令添加了命令行参数:
我尝试将 -Dsonar.host.url=-Dsonar.login=-Dsonar.password=添加到Gradle命令中。由于这似乎不起作用,我还尝试使用 -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插件。

感谢您的任何帮助。

安德烈

最佳答案

您的第一次尝试没有用,因为您是从命令行设置系统属性的,但是稍后从项目属性中进行设置,则会将系统属性重置为已配置的值。

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

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

您需要在构建脚本中手动设置系统属性,然后覆盖从项目属性中自动设置的内容。由于用户文件会覆盖项目文件,因此无法使用项目gradle.properties文件。因此,您在构建脚本中需要像System.properties.'sonar.login' = '...'这样的东西。您可以在此处进行硬编码,也可以使用可以在gradle.properties文件中设置或通过-P参数设置的项目属性。

除此之外,我永远不会依赖在构建服务器上的Gradle User dir中进行任何配置。大多数构建服务器使用可能在分布式计算机上运行的构建代理,因此,您始终必须确保所有构建代理都配置相同,依此类推。我将始终在构建服务器的构 build 置中配置相应的配置,方法是设置系统属性,环境属性或命令行参数。

只有我的2ct。

关于gradle - 在Gradle构建中配置多个SonarQube实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46662895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com