Installer Gitlab CI en moins de 5 minutes avec Docker

- Auto-hébergement

Si comme moi vous avez une instance Gitlab qui tourne avec Docker, vous serez heureux d’apprendre, si vous ne le saviez pas que Gitlab fourni un outil de CI et que l’installation de Gitlab CI ne prend pas plus de 5 minutes, si vous utilisez des containers Docker

Bien sûr, pour installer Gitlab CI via Docker, il vous faudra une instance Gitlab (si possible à jour) et avoir Docker installé sur votre machine.

1ère minute : Installation du container

Tout d’abord, il faut créer un répertoire ou l’on va stocker la configuration des runners que l’on voudra utiliser. Ce répertoire sera monté en tant que Volume :

$> mkdir -p /data/gitlab/runner

Ensuite, on initialise le container gitlab-runner qui va s’occuper de créer les containers Docker pour le build :

$> docker run -d 
   --name gitlab-runner \
   --restart always \
   -v /var/run/docker.sock:/var/run/docker.sock \
   -v /data/gitlab-runner:/etc/gitlab-runner \
   gitlab/gitlab-runner:latest

Vous devriez avoir un nouveau container qui tourne nommé gitlab-runner en plus du container de gitlab-ce:

$> docker ps -a 
CONTAINER ID       IMAGE                         COMMAND                  CREATED             STATUS                      PORTS                                      NAMES
502c4768d70d       gitlab/gitlab-runner:latest   "/entrypoint run --us"   34 hours ago        Up 26 hours                                                            gitlab-runner
30b0ce74588f       gitlab/gitlab-ce:latest       "/assets/wrapper"        34 hours ago        Up 26 hours                 80/tcp, 443/tcp, 0.0.0.0:2777->22/tcp      gitlab

Voilà, l’installation à proprement parlé est terminée, maintenant il y juste un peu de configuration à faire pour définir un runner et configurer le projets.

2e minute : Création d’un runner

Maintenant que le container gitlab-runner est lancé, il faut créer un runner qui pourra être utilisé par les builds. Mais avant cela, il faut se rendre dans l’admin de votre installation Gitlab et récupérer un token d’enregistrement.
Ce token permettra la communication entre le runner et l’instance Giltab.

Le token s’obtient en allant dans l’administration de Gitlab puis dans la page “Runners” :

Page d'administration des runners vide

Une fois que vous avez récupérer votre token, vous pouvez créer un runner. Comme on utilise Docker, on va utiliser une commande docker pour exécuter une commande sur le container “gitlab-runner”.

$> docker exec -it gitlab-runner gitlab-runner register
Running in system-mode.

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/ci):
https://votre.domain.gitlab/ci
Please enter the gitlab-ci token for this runner:
pokPOKzceiDDaddadZvNLbzjL
Please enter the gitlab-ci description for this runner:
[f5bb1e7dbd6c]: Ruby builder
Please enter the gitlab-ci tags for this runner (comma separated):

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

Il y a deux étapes importantes avec la précédente commande :

Si tout c’est bien déroulé et que vous retournez dans l’admin de Gitlab dans le menu “Runners”, vous devriez voir une nouvelle ligne dans la tableau des runners :

Page d'administration des runners avec notre nouveau runner

Si vous retournez au répertoire que l’on a créé au début de l’article, vous verrez qu’un nouveau fichier a été créé et qu’il contient la configuration de notre runner. Ainsi il sera possible de modifier rapidement des runners à la main en éditant le fichier config.toml :

concurrent = 1

[[runners]]
  name = "Ruby builder"
  url = "https://votre.domain.gitlab/ci"
  token = "4d5478b71ffcb094d8b2d34c244a4b"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "ruby:2.1"
    privileged = false
    disable_cache = false
    volumes = ["/cache"]
  [runners.cache]
    Insecure = false

Place maintenant à la configuration du build de votre projet.

3e minute : Configuration du projet et du build

A la racine de votre dépôt git créer un fichier gitlab-ci.yml. C’est ce fichier qui contiendra les instructions de build.

Vous avez une minute pour la lire la documentation de Gitlab CI et linter votre fichier gitlab-ci.yml dans le linter disponible dans votre instance Gitlab.

Ok, ça va être difficile d’écrire la configuration du build en une minute. Mais cette étape n’est pas essentiellement lié à l’installation de Gitlab CI, mais c’est ici que le fun commence !

4e minute : Enjoy !

J’avais dit moins de 5 minutes et le pari me semble rempli. Grâce au travail des équipes de Gitlab, l’installation de Gitlab CI s’est considérablement simplifié et avec Docker on a une fléxibilité de build remarquable…

Petite précision, si vous ne voyez pas le menu “Build” dans le menu de gauche dans votre projet, vérifiez que la feature “Builds” est activée dans les options de votre projet.

Voilà, happy building !

Partager sur Twitter