我有一個 jenkins 管道,它使用命令掃描專案
/opt/sonar-scanner/bin/sonar-scanner
但是在jenkins管道中完成sonarscan后結果并沒有立即反映在sonarqube中,因為我的專案非常大,后臺任務至少需要10分鐘
所以我正在尋找一個 jenkins 階段,它不斷檢查聲納掃描是否在后臺完成的天氣。完成后,我需要從我已完成的 sonarqube 中提取掃描詳細資訊。

uj5u.com熱心網友回復:
有幾種方法可以做到這一點。
如果您使用的是 Jenkins 腳本化管道,則應該使用“withSonarQubeEnv”和“waitForQualityGate”管道步驟,并且應該在 SonarQube 中配置一個 webhook 以連接到 Jenkins。如果這一切就緒并且作業正常,那么“waitForQualityGate”會在執行 webhook 時完成,該 webhook 會在后臺任務完成時執行。
在大多數情況下,這應該就是您所需要的。奇怪的是,在我的企業中,從 sonarqube 到 jenkins 的 webhook 不起作用(有一天,當一些 Jenkins 安全配置發生更改時停止作業,沒有人知道原因)。我放棄了等待修復,所以我不得不深入研究細節。
掃描將創建一個名為“report-task.txt”的檔案。你必須弄清楚它在哪里。它可能位于“target/sonar/report-task.txt”。該檔案的結構類似于 Java 屬性檔案,但它只有一個您關心的屬性(它可能是檔案中定義的唯一屬性),稱為“ceTaskId”。
獲得該值后,您必須呼叫 SonarQube REST api:“/api/ce/task?id="。查看 WebApi 檔案以獲取有關此端點的資訊。這將有一個“task.status”屬性。如果該值不等于“IN_PROGRESS”或“PENDING”,則任務完成。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/408043.html
標籤:
上一篇:Jenkins使用不同的compose檔案啟動同一個docker容器
下一篇:詹金斯沒有運行任何作業
