# Ce fichier doit être adapté en fonction du projet en renseignant les variables SONAR_PROJECT_KEY et SONAR_TOKEN dans la configuration graphique du projet (https://forge.grandlyon.com/<CHEMIN_DE_VOTRE_PROJET>/settings/ci_cd)
# La variable SONAR_PROJET_KEY peut être trouvée sur https://sonarqube.forge.grandlyon.com/dashboard en ouvrant le projet et en copiant collant le champ en bas à droite (Project Key)
#
# La variable SONAR_TOKEN doit être générée par le responsable du projet depuis son interface sonar : https://sonarqube.forge.grandlyon.com/account/security/
(Comment peut-on reproduire le bug. Très important)
## Environnement
(L'environnement (prod, preprod, dev) où le bug est constaté)
## URLs
(La ou les URL(s) où le bug est rencontré)
## Quel est le fonctionnement actuel ?
(Que se passe-t-il ?)
## Quel est le fonctionnement attendu ?
(Que devrait-on voir ?)
## Logs et/ou screenshots
(Copier tous logs pertinents - en utilisant les code blocks (```) pour formater les sorties de console, logs, et code correctement afin d'en faciliter la lecture.)
## Possible fixes
(Si possible, lié la portion de code qui pourrait être responsable du problème.)
Ce dépôt à pour objectif de proposer des conseils et des templates pour démarrer facilement l'intgration continue sur un projet.
## CI/CD
Ce template utilise les fonctionnalités suivantes de la forge pour vous permettre de faire de l'Intégration Continue :
* Gitlab CI
* Docker
Par défaut, votre projet bénéficie d'un **Runner Gitlab** actif et partagé par tous les projets.
Ce runner est lancé via Docker et nécessite l'utilisation de Docker-in-Docker.
Ce runner n'a que pour objectif de construire vos images.
Si vous souhaitez effectuer des déploiements automatiques via Gitlab, il vous faudra intégrer votre propre runner.
Vous retouverez les informations d'installation et de liaison d'un runner via le menu `Settings > CI / CD` puis déplier la zone `Runners` et suivre les instructions de la partie `Set up a specific Runner manually`.
### Docker
La configuration de Gitlab CI, sur la partie `build` assume que vous utilisez Docker et que votre fichier `Dockerfile` est à la racine du dépôt.
Si ce n'est pas le cas, il vous faudra modifier les lignes contenant l'instruction `docker build`.
Le template utilise également l'option `DOCKER_BUILDKIT=1` avant le build.
Cette option, disponible à partir de Docker 18.09 permet notamment d'accélérer le build en mutualisant les couches si possibles.
Cela est particulièrement utile dans le cas de l'utilisation de la fonctionnalité `multi-stage` de Docker.
## SonarQube
Aller sur [SonarQube](https://sonarqube.forge.grandlyon.com) puis créer un projet (de préférence utiliser le nom du dépot GitLab comme nom de projet sur SonarQube).
> IMPORTANT ! Bien conserver le token qui est généré à la création du projet, il est nécessaire pour la CI et n'est disponible qu'une seule fois !
### Gitlab
Dans le projet Gitlab aller dans Setting > CI / CD > Variables
Puis ajouter les variables suivantes :
- key = SONAR_PROJECT_KEY, value = [clé de projet ajouter dans SonarQube]
- key = SONAR_TOKEN, value = le token généré à la création du projet dans Sonar.
## Templates d'Issues et de Merge Request
Dans le dossier `.gitlab`, vous retrouverez 2 exemples de templates.
```
.gitlab
├── issue_templates
│ ├── Bug.md
│ └── Story.md
└── merge_request_templates
├── Bug.md
└── Story.md
```
Vous pouvez ajouter, modifier ou supprimer autant de templates que vous le souhaitez, tant que l'aborescence est respecté.
Les templates sont à rédiger au format Markdown et doivent porter l'extension `.md`.