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 !

403 Forbidden
403 Forbidden
This message is in English because "en" is the first supported language
of those your browser is set up to report as prefered.
Supported languages are: en (English), fr (Français), de (Deutsch), nl (Nederlands), no (norsk).

Access to this site is blocked

Additional information:
Client address = 178.20.66.225
Client name =
Client user =
Client group =
URL = http%3A%2F%2Fp3.wpcache-blogger.com%2Fgetlinks.php?...
Target group =

If you think this is an error, send this page to support@ovea.com

You may need to use the browser's <Reload> button
or even <Keyboard Shift>+<Browser Reload>
to get rid of this page after an access rule change

UP