Search code examples
jenkinssonarqube

Get Sonarqube Analysis Status on a variable (GUI Job)


I couldn't find any solutions to this particular need.

Basically I have a GUI Job and I need the status of the Sonarqube Analysis so I can later send a POST Request with it.

(I'm aware that pipeline exists and works great but because a specific reason I need it to be GUI)

On the pipeline you have the WaitForQualityGate.status(), I've tried using this but no success.

Example of what is desired

Any insights? Thanks in advance


Solution

  • You can use the SonarQube Rest API to get the status.

    Whenever you run SonarQube analysis through Jenkins Pipeline, upon the successful analysis you will see report-task.txt created in the workspace folder.

    Note: The location of report-task.txt file depends on the tool that was used to generate it. The mvn sonar:sonar task defaults to path target/sonar. In my case, I used sonarscanner to analyse a nodejs project. So the location of report-tast.txt is .scannerwork.

    enter image description here

    Now, you will get the ceTaskUrl and ceTaskId in report-task.txt. You can use that ceTaskUrl to get the analysisId.

    Then, you can use the below api to get the quality gate status using analysisId.

    http://<sonarqube_host>/api/qualitygates/project_status?analysisId=$ANALYSIS_ID"

    Now, try to get the curl output of the above API into a variable.