Aug 21, 2018 by Thibault | 2002 views
One of the interesting features of GitLab is the possibility to automatically run tests when code is pushed to the repository (Continus Integration): https://cylab.be/blog/7/gitlab-quickstart
For most GitLab installations, those tests are executed using Docker containers. But before the actual tests can be executed, additional packages must usually be downloaded and installed, which of course induces significant delays.
Hence it can be an interesting solution to create a custom docker image that will be used for executing the tests. Here is how...
If it's not done yet, you first have to install Docker.
Your custom Docker image must be described using a Dockerfile. Here is a classical example:
# Initial image FROM php:7.1 #Install git, the php image doesn't have it RUN apt-get update -yqq && apt-get install git -yqq #Install PHP-ZIP extension (used by composer) RUN apt-get install -yqq libzip-dev RUN docker-php-ext-install zip #Install xdebug extension (used for phpunit code coverage) CMD pecl install xdebug CMD docker-php-ext-enable xdebug
To build the image, simply type
docker build -t <tag of the image> <directory of Dockerfile>
docker build -t me/php71:0.0.1 ./
Now that your custom image is ready, you have two possibilities to use it with GitLab: push it on Docker Hub, where it will be available for anybody, or use GitLab registry.
By pushing your image on docker hub, you make it publicly available to anybody. You first need to create an account.
Once your account is created, you can push your image by typing
docker push <account>/<image>:<tag>
docker push me/php71:0.0.1
You can now use your image for your tests by modifying your .gitlab-ci.yml:
If you don't want your images to be publicly accessible, or don't want to create an account on Docker Hub, you can store your images directly in GitLab. This functionality is called GitLab registry.
This functionality has first to be enabled by the administrator of your GitLab server.
The registry is then accessible in the left menu of your GitLab project. It shows your uploaded images, together with the instructions to push images. These are quite simple:
docker login docker build docker push
You can now use your image by indicating the full path in your .gitlab-ci.yml: