He usado sonarQube en la tubería de jenkins. He instalado todos los complementos relacionados con sonarqube en jenkins. En el sistema de configuración de jenkins, configuré el servidor de sonarqube correctamente y la configuración de la herramienta global de jenkins configuré SonarQube Scanner correctamente.
Este es el código de canalización de Jenkins.
node{ stage('git checkout process'){ echo 'started checkout' git 'https://github.com/ramkumar/sampleproject' echo 'completed sucessfully' } stage('compile package'){ def mvnTool = tool name: 'Maven', type: 'maven' sh "${mvnTool}/bin/mvn clean install" } stage('SonarQube analysis') { withSonarQubeEnv('sonarqube') { mvnHome = '/opt/apache-maven/bin' sh "${mvnHome}/mvn sonar:sonar" } } stage("Quality Gate"){ timeout(time: 1, unit: 'HOURS') { def qg = waitForQualityGate() if (qg.status != 'OK') { emailext body: 'Your code was failed due to sonarqube quality gate', subject: 'Jenkins Failed Report', to: 'prakashpp666666@gmail.com' error "Pipeline aborted due to quality gate failure: ${qg.status}" } } }También configuré los webhooks en sonarqube. Pero cuando construyo el trabajo, el waitForQualityGate() de 3 etapas no devuelve el estado correcto a jenkins, sino que muestra el estado de verificación de la tarea de SonarQube 'AWrQj5In7abK9JVZ9' en el servidor 'sonarqube'. El estado de la tarea de SonarQube 'AWrQj5In7abK9JVZ9' es 'EN_PROGRESO'
y se carga continuamente, no se completa. Cuando reviso el servidor de sonarqube, muestra Respuesta: Servidor inalcanzable . No estoy ejecutando sonarqube en local, se está ejecutando en docker . ¿Cuál puede ser el problema?
Configurar el webhook de SonarQube para la puerta de calidad
Administración > Configuración > Webhooks > Crear
La URL debe apuntar a su servidor Jenkins http://{JENKINS_HOST}/sonarqube-webhook/
Esto está resuelto para mí. como yo no estaba al tanto de este gancho. Una vez que configuré esto, todo salió bien.
Como se sugiere en los documentos oficiales aquí y aquí , pude hacer que waitForQualityGate() funcionara correctamente al configurar un webhook para la instancia de Jenkins en el servidor SonarQube.
Agregue un webhook con el formato <your-jenkins-instance>/sonarqube-webhook/ en la configuración de su servidor SonarQube, apuntando a su instancia de Jenkins. Tenga en cuenta que la barra diagonal final es importante.
Intente poner el comando sleep(60) antes de la verificación:
sleep(60) timeout(time: 1, unit: 'MINUTES') { def qg = waitForQualityGate() print "Finished waiting" if (qg.status != 'OK') { error "Pipeline aborted due to quality gate failure: ${qg.status}" } }Resolvió el mismo problema para mí.