web-dev-qa-db-fra.com

intégration jenkins + sonar + github

Problème: Je configure jenkins + sonar + github intégration automatique vérifier le code statique de pullrequest via le sonar.

Ma configuration:

  1. Sonar installé avec github

  2. Jenkins installés

  3. Dans l'action jenkins post-build, j'ai les propriétés suivantes

-Dsonar.github.login=bhuwang   
-Dsonar.github.repository=company/repo  
-Dsonar.verbose=true 
-Dsonar.analysis.mode=preview 
-Dsonar.issuesReport.console.enable=true 
-Dsonar.forceUpdate=true 
-Dsonar.github.login=gitusername 
-Dsonar.github.oauth=token
  1. Le jeton a été généré à partir de mon compte github.

Dans ce lien j'ai lu que je dois fournir les propriétés suivantes lors de l'exécution de sonarqube: enter image description here

J'ai ajouté toutes les propriétés sauf sonar.github.pullRequest. Je ne sais pas comment obtenir dynamiquement cette valeur de propriété. Il semble que les quatre propriétés ci-dessus soient indispensables pour fonctionner correctement.

Edit: J'ai trouvé le moyen d'ajouter la propriété -Dsonar.github.pullRequest = pullrequestNo

Et la bonne nouvelle est que cela fonctionne parfaitement bien maintenant avec la demande de traction codée en dur non. mais j'ai besoin de la méthode dynamique pour obtenir la demande de pull no.

Quelqu'un sait-il comment obtenir le no de demande de tirage. dynamiquement dans jenkins.?

J'ai trouvé que le générateur de demande de tirage fonctionnera, mais pas de chance de ma part. Je ne suis pas en mesure d'utiliser les variables d'environnement du générateur de demandes d'extraction dans les propriétés du sondeur.

https://issues.jenkins-ci.org/browse/JENKINS-2459

21
Bhuwan Gautam

Enfin, je suis en mesure de résoudre ce problème. Voici le détail:

  1. Installez Sonar avec le plugin GitHub.
  2. Installez Jenkins avec les plugins suivants

    • GitHub Pull Request Builder
    • Plugin SonarQube
    • Plugin GIT
    • Plugin GitHub

Suivez ce lien pour configurer le plug-in du générateur de demande d'extraction: https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin#GitHubpullrequestbuilderplugin-EnvironmentVariables

    1. Configuration globale du système Jenkins:
  • Goto Manage Jenkins -> Configure System
  • Configurer jdk enter image description here
  • Installez sonarQube Runner enter image description here
  • Configurer le sondeur enter image description here
  • Configuration de Git WebHook enter image description here
  • Configuration de PullRequest Builder enter image description here

    1. Créer un travail Jenkins de style libre enter image description here
  • ajouter l'url github à la section du projet GitHub enter image description here

  • Configuration de la section de gestion du code source enter image description here

  • Setup Build Trigger enter image description here

  • Configurez Sonar pour les actions de post-construction enter image description here

  • Dans la section des propriétés supplémentaires, fournissez les propriétés de sondeur suivantes

-Dsonar.sourceEncoding=UTF-8 
-Dsonar.analysis.mode=preview 
-Dsonar.github.repository=company/repo
-Dsonar.github.login=gitusername 
-Dsonar.github.oauth=oauthtoken
-Dsonar.Host.url=sonarhostedurl
-Dsonar.login=admin 
-Dsonar.password=pass
-Dsonar.github.pullRequest=${ghprbPullId}
${ghprbPullId}: this will be provided via github pullrequest builder plugin

Remarque: Le travail doit être déclenché via le plugin pullrequest builder sinon $ {ghprbPullId} retournera vide. Si vous exécutez le travail manuellement, cela ne fonctionnera pas car vous devez passer cette propriété $ {ghprbPullId} en tant que paramètre de génération. Si vous souhaitez vérifier le paramètre d'environnement disponible, suivez ceci Variables d'environnement Git à utiliser dans l'exécution de scripts Jenkins Shell

J'espère que ça aide.

28
Bhuwan Gautam

Trop longtemps pour un commentaire donc je vais devoir l'écrire ici.

Après quelques recherches sur le Web, j'ai trouvé une question sur SO de quelqu'un à quelques pas devant vous dans le processus de configuration d'un système similaire, ici Ils essaient de faire fonctionner tout cela avec Maven, je ne sais pas si vous l'êtes aussi, mais de toute façon vous pouvez alors voir le lien qu'ils ont utilisé pour les aider avec leur script:

https://github.com/SonarSource/sonarqube/blob/master/travis.sh

Cela montre qu'ils doivent écrire un script qui récupérera dynamiquement le numéro de tirage pour eux. Je pense que vous devrez peut-être suivre une approche similaire et écrire un script qui récupérera le numéro pour vous, je crois qu'un des fichiers de conf de github garde la trace du numéro de demande d'extraction actuel à ses propres fins de suivi.

Pas vraiment une réponse aussi simple que vous l'auriez espéré, mais j'espère que ce sont de nouvelles informations qui vous aideront à y arriver.

3
Seb