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。