Gitlab-CI

Gitlab-CI est une plateforme d'intégration continue intégrée à Gitlab. Simple à prendre en main, facile à configurer, elle vous permettra de mettre en place votre intégration continue rapidement, en totale autonomie (vous n'aurez pas besoin d'administrateur du serveur ou autre personne avec des droits spécifiques !). Nous allons donc voir comment mettre cela en place pour votre projet. Quel que soit le langage, quelle que soit la plateforme ! Seul prérequis : que votre projet soit hébergé sous Gitlab.

Présentation rapide avant d'entrer dans le vif du sujet

Cet outil est intégré à Gitlab et est entièrement automatisé. Tout son fonctionnement est basé sur des conteneur Docker.

Son point fort ? Toute la configuration de votre intégration continue est regroupée dans un unique fichier yaml. Et il n'y a absolument rien à faire côté Gitlab. Comme nous le verrons plus loin, il suffit de créer le fichier de configuration dans son projet et de le pousser sur Gitlab, et le tour est joué !

De part l'utilisation de Docker, vous avez un contrôle complet sur l'environnement de compilation (pas besoin d'un sysadmin pour mettre à jour une version de sdk par exemple). Il est également facile de compiler le même projet sur différentes architectures (des versions de Debian différentes par exemple) et ce sans rien avoir à installer !

Ce fichier de configuration est dans votre projet, il bénéficie donc de tous les avantages qui vont avec : pas besoin de droit spécifique pour le mettre à jour, il est versionné comme tous les autres fichiers.

Vos délais de compilations sont trop longs ? Vous avez besoin d'ajouter de nouveaux serveurs à votre PIC ? Faites le tout simplement, vous n'avez rien à installer de spécifique à votre projet pour cela, rien à configurer pour que votre projet se compile, déploie etc ! Tout cela grâce à l'utilisation des conteneurs Docker et au fait que toute la configuration est dans votre fichier yaml.

Le fichier de configuration

Il suffit de créer un fichier .gitlab-ci.yml à la racine de votre projet git et de le pousser sur le serveur. Et c'est tout ! A chaque fois que vous pousser ce fichier sur votre repository git, gitlab le lit et exécute automatiquement les commandes que vous y avez mises.

Au sein de ce fichier, les scripts de configuration/déploiement/etc sont en ligne de commande, c'est pourquoi il est multi-plateformes, multi-langages.

Voyons un exemple simple.

Exemple

J'ai un projet Cordova android sous Gitlab et je souhaite mettre en place l'intégration continue afin qu'à chaque push mon projet se compile. Et je souhaite aussi pouvoir récupérer le fichier .apk généré.

Voici les étapes nécessaires :

  • Trouver l’image Docker dont on a besoin sur le hub (https://hub.docker.com/) ou créer son propre Dockerfile si on connaît Docker
  • Créer un fichier de config .gitlab-ci.yml (10 lignes)
  • Faire un push sur le repository
  • Attendre la fin de la compilation
  • Télécharger l’apk

mon fichier :

image: beevelop/cordova:v6.4.0

android_debug:
  script:
    - cordova build android
  artifacts:
    name: "android-debug"
    paths:
    - platforms/android/build/outputs/apk
    expire_in: 4 hrs
.gitlab-ci.yml

Je n'ai pas eu à faire de ticket à l'infra pour la création d'un nouveau job.

Je n'ai rien eu à installer sur le serveur de compilation.

J'ai mis en place mon intégration continue en moins d'une demi heure.

Dans cet exemple on a :

  • image : nom de l'image Docker à utiliser (ici une image avec les versions de cordova/android/nodejs nécessaires à la compilation de mon projet)
  • android_debug : le nom de mon job
  • script : une liste de lignes de commandes à exécuter
  • artifacts : partie me permettant de récupérer le résultat de la compilation (fichier .apk dans mon cas)
    • expire_in : ce paramètre indique pendant combien de temps il sera possible de récupérer l'artifact. Passé ce délai, ce dernier sera supprimé. Si un jour vous en avez besoin, il suffira tout simplement de relancer le job (comme le fichier de configuration est versionné avec votre projet, cela ne posera aucun problème !).

Plus d'information sur le site de gitlab : https://docs.gitlab.com/ce/ci/yaml/. La documentation est complète et permet de configurer rapidement son projet.

Dans votre projet Gitlab, l'intégration continue, les résultats des builds... tout se trouve dans l'onglet Pipelines.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *