【发布时间】:2021-08-16 14:20:28
【问题描述】:
我找不到任何解决这个特殊需求的方法。
基本上我有一个 GUI 作业,我需要 Sonarqube 分析的状态,以便以后可以发送一个 POST 请求。
(我知道管道存在并且效果很好,但是因为一个特定的原因我需要它是 GUI)
在您拥有WaitForQualityGate.status() 的管道上,我尝试使用它但没有成功。
有什么见解吗?提前致谢
【问题讨论】:
我找不到任何解决这个特殊需求的方法。
基本上我有一个 GUI 作业,我需要 Sonarqube 分析的状态,以便以后可以发送一个 POST 请求。
(我知道管道存在并且效果很好,但是因为一个特定的原因我需要它是 GUI)
在您拥有WaitForQualityGate.status() 的管道上,我尝试使用它但没有成功。
有什么见解吗?提前致谢
【问题讨论】:
如果您的意思是说您希望根据 SonarQube 扫描状态在您的 Jenkins GUI 中弹出自定义变量消息,那么您需要:
另外,您可以尝试 Jenkins 上提供的一些插件,这些插件可以让您呈现条件输出。没有承诺他们是否真的可以帮助您更改原始 GUI。
任何替代的传统方法都无法满足您的 GUI 要求。
【讨论】:
您可以使用 SonarQube Rest API 获取状态。
每当您通过 Jenkins Pipeline 运行 SonarQube 分析时,一旦分析成功,您将看到在工作区文件夹中创建了 report-task.txt。
注意: report-task.txt 文件的位置取决于生成它的工具。
mvn sonar:sonar任务默认为路径target/sonar。就我而言,我使用 sonarscanner 来分析 nodejs 项目。所以report-tast.txt的位置是.scannerwork。
现在,您将在report-task.txt 中获得 ceTaskUrl 和 ceTaskId。您可以使用该 ceTaskUrl 来获取 analysisId。
然后,您可以使用以下 api 通过 analysisId 获取质量门状态。
http://<sonarqube_host>/api/qualitygates/project_status?analysisId=$ANALYSIS_ID"
现在,尝试将上述 API 的 curl 输出放入一个变量中。
【讨论】: