Sonarqube est un serveur de visualisation de rapport d’audit de code. C’est un outil qui permet de suivre la qualité du code et si on le couple à une chaîne d’intégration continue on obtient un puissant outils de contrôle des livraisons. On peut même aller jusqu’à bloquer la chaîne ie interdire un déploiement ne production si la qualité n’est pas suffisante.
Afin d’explorer dans le détail les possibilités de cet outil et son couplage un outils d’intégration continue, je me lance donc dans la mise en œuvre de SonarQube. Pour cela un environnement sur lequel j’ai un contrôle total est nécessaire sans pour autant modifier ou mettre en risque mes autres services. Le chant des sirènes se fait déjà entendre… à moins que cela ne soit celui de Docker !
SonarQube docker
J’applique la même approche que pour installer mon instance de Graylog.
Le fichier docker-compose.yml commun est simple pour le moment:
version: '3.7'
services:
# Sonarqube: https://hub.docker.com/_/sonarqube/
sonarqube:
image: sonarqube
Le fichier pour staging contient la plomberie pour utiliser Traefik et avoir les volumes docker afin de persister ce qui est utile.
version: '3.7'
services:
sonarqube:
labels:
- "traefik.http.routers.staging_sonarqube.entryPoints=staging"
- "traefik.http.routers.staging_sonarqube.rule=Host(`sonarqube.bressure.net`)"
- "traefik.docker.network=staging_traefik_backend"
volumes:
- '/srv/staging_sonarqube/data:/opt/sonarqube/data'
- '/srv/staging_sonarqube/logs:/opt/sonarqube/logs'
- '/srv/staging_sonarqube/extensions:/opt/sonarqube/extensions'
networks:
- default
- outside
networks:
outside:
external: true
name: staging_traefik_backend
Le fichier .gitlab-ci.yml est ici et d’une banalité affligeante: https://gitlab.bressure.net/docker/applications/sonarqube/-/blob/master/.gitlab-ci.yml
Une modification du fichier /etc/hosts et l’url https://sonarqube.bressure.net:444/ donne accès à mon instance SonarQube de staging. Attention lors du premier démarrage le compte administrateur admin/admin existe et il faut penser à changer sont mot de passe. Il me faudra en prendre compte lors du déploiement en production pour ne modifier mon DNS publique que lorsque j’aurai changé le mot de passe de admin.
Tags: Docker Gitlab SonarQube