Создание собственного образа докера
В GitLab CI вы можете определить cache:
для временного хранения зависимостей проекта.В вашем ci.yml, вы уже сделали.Большая часть времени работы вашего конвейера проекта была потрачена на apt-get install
.Поскольку кэширование зависимостей установки из apt-get install
будет сложным, лучше создайте собственный образ докера, включающий зависимости из apt-get
для тестирования.
Шаги
- напишите файл dockerfile
- build, переместите ваш образ докера куда-нибудь
- замените
image: php:7.2
в ci.yml - commit, отправьте изменения и запустите конвейер в GitLab
Dockerfile
FROM php:7.2
RUN set -eux; \
apt-get update -yqq; \
apt-get install git libzip-dev libcurl4-gnutls-dev libicu-dev libmcrypt-dev libvpx-dev libjpeg-dev libpng-dev libxpm-dev zlib1g-dev libfreetype6-dev libxml2-dev libexpat1-dev libbz2-dev libgmp3-dev libldap2-dev unixodbc-dev libpq-dev libsqlite3-dev libaspell-dev libsnmp-dev libpcre3-dev libtidy-dev -yqq; \
docker-php-ext-install mbstring pdo_mysql curl json intl gd xml zip bz2 opcache bcmath; \
pecl install xdebug; \
docker-php-ext-enable xdebug
Build, Push изображение куда-нибудь
docker build --tag image-name:tag-name --file Dockerfile .
docker tag image-name:tag-name registry.example.com/organization/image-name:tag-name
# I assume you've already authenticated by your registry
docker push registry.example.com/organization/image-name:tag-name
update .gitlab-ci.yml
image: registry.example.com/organization/image-name:tag-name
cache:
paths:
- vendor/
- node_modules/
before_script:
- curl -sS https://getcomposer.org/installer | php
- php composer.phar check-platform-reqs
- php composer.phar install
- cp .env.testing .env
- php artisan key:generate
- php artisan config:clear
test:
script:
- php vendor/bin/phpunit --coverage-text --colors=never
Последний шаг
А теперь передайте изменения и отправьте их на сервер GitLab.