Tutoriel Vidéo git Intégration continue avec GitLab

Télécharger la vidéo

GitLab est une application qui englobe tout un tas d'outils liés à la gestion d'un projet en une seule interface :

  • Tchat (à la slack)
  • Gestion du versioning (création de dépôt Git)
  • Gestion des problèmes (issues et Kanban board)
  • Système d'intégration continue et de déploiement (via GitLab runner)

GitLab est disponible en 3 versions

  • GitLab.com, qui offre un nombre illimité de dépôt et collaborateur, directement hébergé sur GitLab.com
  • Community Edition, est une version open source que vous pouvez installer sur votre propre serveur.
  • Enterprise Edition, étend les fonctionnalités de la version community (cf gros tableau de comparaison)

Intégration continue

Dans ce tutoriel, nous allons nous concentrer sur la partie intégration continue qui va permettre de tester la "santé" de notre code à chaque commit. Pour configurer l'intégration continue il faut commencer par créer un fichier .gitlab-ci.yml qui va lister les différentes tâches à effectuer.

Par exemple pour tester mon application Laravel :

image: grafikart/gitlab-ci:php7

cache:
  paths:
  - vendor/

before_script:
- composer install

services:
- mysql

variables:
    MYSQL_DATABASE: test
    MYSQL_ROOT_PASSWORD: root

test:php7:
    script:
    - composer test

test:php56:
    image: grafikart/gitlab-ci:php56
    script:
    - composer test
  • image, permet d'utiliser une image docker pour configurer l'environnement à utiliser
  • cache, permet de mettre en cache un dossier en chaque éxécution
  • before_script, permet de lancer une série de commandes à éxécuter pour "préparer" notre environnement
  • services, permet de cabler d'autres container à notre container principal (ici nous utilisons l'image MySQL standard)
  • variables, définit les variables d'environnement

Les autres clefs permettent de définir des tâches à effectuer, le code de retour permet d'indiquer à GitLab le succès ou non de la tâche en question. Si GitLab détecte un fichier .gitlab-ci.yml il va automatiquement essayer de lancer les tâches à l'aide des runners configurés dans l'application.