2016-07-30 33 views
2

我們使用jenkins,sonarqube 5.5,maven和git。當開發人員創建一個新的git分支並推送它時,jenkins也會分析這個分支,所以開發人員可以在合併之前解決所有問題。爲了避免將分支分析與主分支分析混合起來,jenkins將分支名稱傳遞到分析中。造成sonarqube爲每個分支創建一個新項目的原因。目前爲止,沒關係。如何設置新的聲納項目的非默認質量門

但是最近我們從所有項目的一個默認質量大門切換到正在進行維護的項目下的不同質量大門。

那麼我們如何才能在爲質量門使用的新分支創建新項目時分辨聲納?在某些版本之前,有一個sonar.qualitygate屬性可以設置。但現在這已被棄用。那麼,爲新創建的項目定義合適的質量門的新方法是什麼?

回答

4

您可以使用Sonar提供的其餘api。

步驟1.創建門

 def result = ["curl", "--user", auth, "-X", "POST", "-H", "Content-Type: application/json", "-d", "{'name':'" + qualityGateName + "'}", "https://yoursonarserver/api/qualitygates/create"].execute().text 

步驟2綁定項目進大門

["curl", "--user", auth, "-X", "POST", "-H", "Content-Type: application/json", "-d", "{'gateId':'"+qualityGateId+"','projectId':'"+projectId+"'}", "https://yoursonarserver/qualitygates/select"].execute().text 

關於如何讓專案編號和qualityGateId,您可以使用以下兩種API

獲取項目ID

 String result = ["curl", "--user", auth , "-X", "GET", "-H", "Accept: application/json", "https://yoursonarserver/api/projects/index", "-d", "search=" + projectName ].execute().text 

獲得高質量的門ID

 def result = ["curl", "--user", auth, "-X", "GET", "-H", "Accept: application/json", "https://yoursonarserver/api/qualitygates/list"].execute().text 

以上兩個API將獲得ID的列表,所以你需要分析它們基於的項目名稱。

BR,

+0

喜添。偉大的信息。但不幸的是,這並沒有解決我的問題。質量門已經存在。但是通過調用maven的聲納分析,該項目可以自動創建和分析。所以我沒有機會在分析之前將項目綁定到質量門。或者我錯過了什麼? –

+0

忘記提及我們如何解決這個問題,如果您使用默認的分支機制,這是非常棘手的。我們所做的是在開始使用簡單的shell腳本進行分析之前,將我們的項目pom artifact id(默認聲納項目名稱)更新爲abc-branch之類的東西,因此您有機會首先使用其餘api創建聲納項目,然後做分析,綁定門...... – Tim

+0

啊,我明白了。所以解決方案的關鍵是手動創建項目,對嗎?是否還有API調用來創建新項目,但尚未分析它?除此之外,當你寫下「首先用其他api創建聲納項目,然後進行分析,綁定門」時,分析後就會發生與門的綁定,因此會影響分析。 –