Gitlab-ci : docker in docker pour de l’intégration continue

Informatique
23 novembre 2017 par Romain
Pas de commentaires sur cet article

Gitlab et tout particulièrement gitlab-ci sont des outils très précieux pour ITK. Nous les utilisons tous les jours et nous en sommes très contents.

Voici un petit tip pour ceux qui souhaitent faire du docker in docker avec gitlab-ci.

Pourquoi ?

Il y a plein de raisons pour vouloir faire ça :

  • votre ci est en docker, et vous souhaitez créer une image docker pour la pousser sur votre repository favori
  • vous souhaitez réaliser des tests intégration avec docker-compose

Comment ?

Chez ITK nous avons des gitlab runners que nous administrons nous-mêmes, nous pouvons donc tout simplement suivre la doc :

Sans oublier la configuration :

Ainsi lors du build, il suffira d’une image docker contenant le client docker et la socket unix sera partagée avec l’host.

Par contre si vous n’hébergez pas vos runners vous êtes dépendants de ceux fournis par Gitlab lui même. Le plus simple alors est d’utiliser un service docker dans votre gitlab-ci.yml :

En n’oubliant pas d’utiliser une image de base contenant un client docker et/ou docker-compose. En effet, le docker deamon se trouvant dans un autre docker qui est linké avec votre container courant, tout se passera bien.

De plus, vous aurez remarqué que cette 2ème solution vous permet de faire fonctionner votre gitlab-ci.yml aussi bien sur un runner hosté avec le partage de la socket de base que sur les runners offerts par gitlab.

J’espère que ce petit trick vous sera utile !

Enfin, si vous avez des problèmes avec gitlab et gitlab-ci n’hésitez pas à ajouter un commentaire, nous sommes fans de cet éco-système et commençons à avoir une petite expertise. Si nous avons la réponse nous vous aiderons avec plaisir.

Ecrit par : Romain Maneschi

Romain Romain
Développeur web, en quête perpétuelle de nouvelles choses...
Commentaires
Soyez le premier à réagir sur cet article !

UP