web-dev-qa-db-fra.com

Intégration de Gitlab avec SonarQube

Je suis assez nouveau dans la communauté du développement et plus particulièrement dans les pratiques de DevOps. Dans le cadre du projet, nous essayons d'intégrer SonarQube à Gitlab. Nous avons effectué des travaux de recherche et développement sur SonarQube et Git CI (intégration continue). alors que pas pour Gitlab.

Dans quelle mesure est-il réaliste de configurer GitLab avec SonarQube pour l’inspection de la qualité du code pour chaque demande de tirage et quelle sera la meilleure pratique pour intégrer ces deux éléments?.

Merci

19
Adi

vous n'avez pas vraiment besoin d'un plugin. faire quelque chose comme ça dans votre .gitlab-ci.yml

stages: 
- build 
build_master:
  image: maven
  stage: build
  artifacts:
    paths:
    - target/*.jar
  script:
  - mvn package sonar:sonar -Dsonar.Host.url=https://sonar.yourdomain.tld/ 
  only:
  - master

et chaque maître Push sera testé! (ceci est pour un Java projet ...)

22
Joerg

À l'heure actuelle, il existe (à ma connaissance, deux plugins axés sur la communauté qui visent à fournir une analyse/intégration MR à GitLab.

Tous les deux passent actuellement par la phase de commentaires pour leur prochaine version et visent tous les deux à atterrir dans le centre de mise à jour avec cette version.

Avec les deux, vous pouvez exécuter une construction qui fournira des commentaires dans GitLab avec les violations récemment détectées. Les deux sont fortement inspirés du plugin GitHub de SonarSource.

Cependant, je ne suis pas en mesure de vous conseiller sur lequel des deux utiliser, car je suis le développeur le premier et donc partial.

15
Johnnei

J'étais dans la même exigence et voici comment j'ai implémenté,

Créez un coureur sans spécifier de balises et de type partagé. Créer un fichier .gitlab-ci.yml fichier avec les commandes suivantes,

variables:
  SONAR_URL: "http://your_sonar_url"
  SONAR_LOGIN: "sonar_user_id"
  SONAR_PASSWORD: "sonar_password"

sonarqube_master_job:
  stage: test
  only:
    - master
  image: maven:3.3.9-jdk-8-Alpine
  script:
    - mvn --batch-mode verify sonar:sonar -Dsonar.Host.url=$SONAR_URL -Dsonar.login=$SONAR_LOGIN -Dsonar.password=$SONAR_PASSWORD

Si vous créez un coureur avec des balises spécifiques, vous devez mentionner les balises dans le .gitlab-ci.yml fichier

vous pouvez obtenir plus d'informations sur l'ajout de balises via ce lien, https://forum.gitlab.com/t/activated-specific-runner-is-not-working/7002

4
Nithyananth

Voici comment je me suis débrouillé pour un MVP.

.gitlab-ci.yml

stages:
 - sonarqube_test

sonarqube_test:
  tags:
  - your-tag-attached-to-gitlab-runner
  stage: sonarqube_test
  script:
  - .cicd/sonarqube.sh

sonarqube.sh fichier

#!/bin/bash
#
# Args: deploy.sh
#

cd ~

wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.Zip

unzip sonar-scanner-cli-3.3.0.1492-linux.Zip

rm sonar-scanner-cli-3.3.0.1492-linux.Zip

chmod 777 sonar-scanner-3.3.0.1492-linux/conf/sonar-scanner.properties

echo 'sonar.Host.url=http://<your_sonarqube_server_url>' >> sonar-scanner-3.3.0.1492-linux/conf/sonar-scanner.properties

chmod +x sonar-scanner-3.3.0.1492-linux/bin/sonar-scanner

sonar-scanner-3.3.0.1492-linux/bin/sonar-scanner \
  -Dsonar.projectKey=<project_name> \
  -Dsonar.sources=. \
  -Dsonar.Host.url=http://<your_sonarqube_server_url> \
  -Dsonar.login=<token_from_gitlab_UI>

1
rahuljain1311