diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..1771cd7c23bf71a7dd33d3bb763803e96ec8c463 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,53 @@ +# +# 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/ +# + +image: docker:git + +services: + - docker:dind + +variables: + DOCKER_DRIVER: overlay2 + DOCKER_TLS_CERTDIR: "" + SONAR_URL: https://sonarqube.forge.grandlyon.com + +stages: + - sonar-analysis + - build + +sonarqube: + stage: sonar-analysis + image: skilldlabs/sonar-scanner:3.4.0 + script: + - > + sonar-scanner + -Dsonar.projectName=${CI_PROJECT_NAME} + -Dsonar.projectVersion=1.0 + -Dsonar.sourceEncoding=UTF-8 + -Dsonar.projectBaseDir=. + -Dsonar.host.url=${SONAR_URL} + -Dsonar.projectKey=${SONAR_PROJECT_KEY} + -Dsonar.login=${SONAR_TOKEN} + +build-master: + stage: build + script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + - DOCKER_BUILDKIT=1 docker build --pull -t "$CI_REGISTRY_IMAGE" . + - docker push "$CI_REGISTRY_IMAGE" + only: + - master + +build: + stage: build + script: + - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY + - DOCKER_BUILDKIT=1 docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" . + - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" + except: + - master + diff --git a/.gitlab/issue_templates/Bug.md b/.gitlab/issue_templates/Bug.md new file mode 100644 index 0000000000000000000000000000000000000000..6b1310d9eb3ff7afea4ea38a9d7d4ae9a560c80a --- /dev/null +++ b/.gitlab/issue_templates/Bug.md @@ -0,0 +1,44 @@ +Titre: +URL: +Environnement: +Description: + +# Bug issue template + +## Résumé + +(Résumé du bug rencontré en quelques mots) + + +## Etapes pour reproduire + +(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.) + +/label ~bug ~reproduced ~needs-investigation +/cc @jygastaud +/assign @XXX diff --git a/.gitlab/issue_templates/Story.md b/.gitlab/issue_templates/Story.md new file mode 100644 index 0000000000000000000000000000000000000000..0c5e9b1248abd9f4ab6b7a0b3b395265d3a15c71 --- /dev/null +++ b/.gitlab/issue_templates/Story.md @@ -0,0 +1,18 @@ +# Story template + +## Résumé + +En tant que +Je veux que +Afin de + +## Description + +(informations complémentaires) + +## ToDo + +* [ ] XXX +* [ ] XXX +* [ ] XXX + diff --git a/.gitlab/merge_request_templates/Bug.md b/.gitlab/merge_request_templates/Bug.md new file mode 100644 index 0000000000000000000000000000000000000000..7048e1b1e61d40881c29a6577e037988f49ad220 --- /dev/null +++ b/.gitlab/merge_request_templates/Bug.md @@ -0,0 +1,13 @@ +## Que fait cette MR ? + +Résoud #XX + +## URL de test + +(https://makersboard.me, https://cdm.makersboard.me, https://cms.makersboard.me...) + +## Checklist + +* [ ] Bug résolu +* [ ] Tests crées / mis à jour +* [ ] Documentation créée / mise à jour diff --git a/.gitlab/merge_request_templates/Story.md b/.gitlab/merge_request_templates/Story.md new file mode 100644 index 0000000000000000000000000000000000000000..2206f12d813ce6fd989019cc3c6579999058b372 --- /dev/null +++ b/.gitlab/merge_request_templates/Story.md @@ -0,0 +1,3 @@ +## Que fait cette MR ? + +Résoud #XX diff --git a/README.md b/README.md index 04a44ca0566e8d7f5fb0ef69489d7857c7fc5901..c8c76a042cd2f49221b591334451fd927f29c9d7 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,60 @@ -# gitlabci-docker +# Template +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`.