Ajouter un Runner : Gitlab CE + Docker

GitLab Runner est un projet open source permettant d'effectuer des taches et de retourner le résultat à GitLab. Utilisé avec GitLab CI, cet outil permet de faire de l'intégration continue. L'image ci-dessous explique le fonctionnement de GitLab et de GitLab Runner.


Dès que vous "pushez" votre code sur GitLab, ce dernier déclenche un Runner qui va effectuer la tâche demandée. Cette tâche peut-être d'installer les dépendances avec npm install, composer install... Le runner peut effectuer des tests unitaires par exemple avec phpunit. Vous pouvez également build votre app apec webpack, gulp... Bref, vous pouvez tout automatiser pour envoyer votre nouvelle version en dev/prod en une seule action : git push.

Dans cet article, nous allons voir comment installer un Runner avec Docker puis le lier à GitLab. Puis nous verrons comment créer nos premiers jobs (tâches) et exécuter notre premier pipeline (succession d’exécution de jobs).
Pour commencer les pré-requis sont d'avoir un container GitLab CE déjà installer. Si ce n'est pas fait je vous invite à suivre cet article : Installation GitLab + Nginx + Docker

Installation du Runner

On commence par récupérer l'image gitlab-runner ainsi que les futures dépendances

docker pull gitlab/gitlab-runner
apt install xz-utils

Puis on créer contre container gitlab-runner

docker run --detach \
  --name gitlab-runner \
  --restart always \
  --volume /srv/gitlab-runner/config:/etc/gitlab-runner \
  --volume /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

Libre à vous de modifier le paramètre --name. Si vous souhaitez installer plusieurs Runners pour effectuer des tâches en parallèle, nommez les en conséquence. Pour ma part je n'en fais qu'un pour l'instant.

Configuration du Runner

Pour commencer rendez-vous sur votre interface GitLab. Dans votre projet allez dans Settings > CI / CD > Runners Settings > Expand.
C'est ici que vont s'afficher tous vos runners. Cherchez :

Gardez ces infos à disposition (url et token).
On retourne sur notre machine et on démarre la configuration du Runner :

docker exec -i -t gitlab-runner gitlab-runner register

Voilà la démarche :

Running in system-mode.

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://gitlab.domaine.com/
Please enter the gitlab-ci token for this runner:
CLESECRETE
Please enter the gitlab-ci description for this runner:
[b1c3ced2d9c2]:
Please enter the gitlab-ci tags for this runner (comma separated):

Registering runner... succeeded                     runner=eiez6Mub
Please enter the executor: virtualbox, kubernetes, parallels, shell, ssh, docker+machine, docker-ssh+machine, docker, docker-ssh:
docker
Please enter the default Docker image (e.g. ruby:2.1):
alpine:latest
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

La description et les tags ne sont pas obligatoires. Si c'est votre première fois ne spécifiez pas de tags.

Si tout s'est bien passé, retournez sur votre interface GitLab et dans Runners settings (en bas) deverai apparaitre votre Runner :

Création du fichier .gitlab-ci.yml

Votre dépôt gitlab est créé, vous avez cloner celui-ci, vous pouvez maintenant créer votre configuration !
Le fichier .gitlab-ci.yml est l'endroit ou vous allez configurer votre processus d'intégration continue. Il se place à la racine de votre projet. A chaque push, GitLab va regarder dans ce fichier et lancer les tâches dans le Runner précédemment créer.

Je vous invite à créer ce fichier à la racine de votre projet et coller le contenu suivant :

test:
  script:
    - echo "Tests en cours"

build:
  script:
    - echo "Build en cours"

deploy:
  script:
    - echo "Déploiement de l'application"

Cette configuration créée 3 jobs : test, build et deploy. Ces jobs (=tâches) ne font rien à part écrire du texte. Plus tard vous pourrez mettre toutes vos commandes comme apt install, npm install, phpunit, gulp ... On commit puis push le fichier :

git add .gitlab-ci.yml
git commit -m "Add .gitlab-ci.yml"
git push origin master
Sur votre interface GitLab allez dans CI / CD et admirez le succès (ou l'échec) de votre tâche

Si vous cliquez sur le job, vous deverez voir le "echo..."

Félicitation, vous avez mis en place votre processus d'intégration continue ! Je vous invite à configurer votre fichier .gitlab-ci.yml pour qu'il réponde à vos besoins...
On peut faire de grande choses avec GitLab !

Si vous avez des questions n'hésitez pas à me contacter par mail via [email protected]

Merci d'avoir suivi cet article jusqu'au bout ! ❤️

Commentaires