À l'aide de waitForQualityGate dans un Jenkins déclarative pipeline
La suite de SonarQube (6.3) l'étape de l'analyse dans un déclarative pipeline dans Jenkins 2.50 à défaut avec cette erreur dans le journal de la console: http://pastebin.com/t2ja23vC. Plus précisément:
SonarQube d'installation définies dans le présent travail (SonarGate) ne correspond pas tout configuré à l'installation. Nombre d'installations qui peuvent être configurés: 1.
Mise à jour: après le changement "SonarQube" à "SonarGate" dans le Jenkins paramètres (sous SonarQube serveurs, donc ça va correspondre à la Jenkinsfile), j'ai une autre erreur: http://pastebin.com/HZZ6fY6V
java.lang.IllegalStateException: Impossible d'obtenir SonarQube id de tâche et/ou le nom du serveur. Veuillez utiliser le 'withSonarQubeEnv' wrapper pour exécuter votre analyse.
La scène est une modification de l'exemple de la SonarQube docs: https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins#AnalyzingwithSonarQubeScannerforjenkins-AnalyzinginaJenkinspipeline
stage ("SonarQube analysis") {
steps {
script {
STAGE_NAME = "SonarQube analysis"
if (BRANCH_NAME == "develop") {
echo "In 'develop' branch, don't analyze."
}
else { //this is a PR build, run sonar analysis
withSonarQubeEnv("SonarGate") {
sh "../../../sonar-scanner-2.9.0.670/bin/sonar-scanner"
}
}
}
}
}
stage ("SonarQube Gatekeeper") {
steps {
script {
STAGE_NAME = "SonarQube Gatekeeper"
if (BRANCH_NAME == "develop") {
echo "In 'develop' branch, skip."
}
else { //this is a PR build, fail on threshold spill
def qualitygate = waitForQualityGate()
if (qualitygate.status != "OK") {
error "Pipeline aborted due to quality gate coverage failure: ${qualitygate.status}"
}
}
}
}
}
J'ai également créé un webhook, sonarqube-webhook
, avec l'URL http://****/sonarqube-webhook/
. Devrait-il être comme ça, ou http://****/sonarqube/sonarqube-webhook
? Pour accéder au serveur tableau de bord j'utilise http://****/sonarqube
.
Dans SonarQube de la Qualité des Portes de l'article, j'ai créé une nouvelle qualité de porte:
Je ne suis pas sûr si la mise en SonarGate est correct. Je ne l'utilisation de jenkins-moka pour générer un lcov.info fichier qui est utilisé dans Sonar pour générer les données sur la couverture.
Peut-être la qualité de porte réglage est mauvais réglage à faire? Le résultat final est de faire échouer le travail de Jenkins, si la couverture % n'est pas atteint.
Enfin, je ne suis pas sûr si les configurations suivantes dans le Jenkins configuration du système sont tous requis:
Et
(C'est 9000 pas 900... couper du texte dans la capture d'écran)
Il n'y a pas de captures d'écran de code dans le post. Le post est super clair.
OriginalL'auteur Idan Adar | 2017-03-20
Vous devez vous connecter pour publier un commentaire.
La SonarQube Jenkins plugin scans de la sortie de la construction de deux lignes spécifiques, qu'il utilise pour obtenir le SonarQube rapport de propriétés de tâche et projet d'URL. Si votre invocation de
sonar-scanner
n'a pas de sortie de ces lignes, lewaitForQualityGate()
d'appel de ne pas avoir l'ID de tâche pour les regarder. Ainsi, vous aurez à déterminer les paramètres corrects pour le rendre plus clair.Voir le
extractSonarProjectURLFromLogs
etextractReportTask
méthodes dans le SonarUtils classe du plugin pour comprendre comment ils fonctionnent:ANALYSIS SUCCESSFUL, you can browse <project URL>
est utilisé pour ajouter un lien pour le badge (dans la construction de l'histoire)Working dir: <dir with report-task.txt>
est utilisé pour transmettre l'ID de tâche à l'waitForQualityGate
étapeCe n'est pas mentionné car il est technique détails de mise en œuvre. Nous avons pour objectif de rendre "plug and play" et nous avons échoué, au moins pour Gradle projets. Toujours, il doit travailler pour les autres cas. Nous étudions un maître/esclave problème.
Merci, j'utilise un esclave dans mon Jenkins de l'installation. Le même esclave (machine de compilation) accueille également le SonarQube serveur.
Si vous avez besoin de moi pour faire des expériences sur ma fin, s'il vous plaît laissez-moi savoir.
OriginalL'auteur Jan Fabry
Cela a été découvert pour être un bug dans le SonarQube scanner pour Jenkins, lors de l'utilisation d'un Jenkins esclaves pour les travaux (si le travail est exécuté sur le maître, il avait du travail). Vous pouvez en lire plus ici: https://jira.sonarsource.com/browse/SONARJNKNS-282
J'ai testé ce à l'aide d'un test de construire des v2.61 du scanner plug-in et trouvé de travail.
La solution est de mettre à jour en v2.61 lorsqu'il est relâché.
Cette étape sera donc:
OriginalL'auteur Idan Adar
Si vous êtes en cours d'exécution SonarCube dans un conteneur docker vérifier que la mémoire n'est pas épuisé. Nous avons été plafonnait. Ce qui semblait être la question.
OriginalL'auteur Carsten Svendsen