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” :
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 :
- un “executor” est simplement ce qui va exécuter vos builds. Comme nous sommes dans un environnement
Docker
, je ne vois pas pourquoi ne pas utiliser des containers. Ainsi pour chaque build, un nouveau container sera créé et sera supprimé ensuite, - la “default Docker image” est l’image qui sera utilisée par les executors. Choisissez votre images en fonctione de votre environnement.
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 :
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