Как ускорить настройку Gitlab CI с помощью кэширования? - PullRequest
0 голосов
/ 29 сентября 2019

Это первый раз, когда я использую Gitlab CI, поэтому, если есть некоторые замечания относительно конфигурации, было бы здорово услышать их

У меня есть такая конфигурация конвейера CI дляПроект laravel в gitalb, в нем я просто запускаю наборы тестов с помощью PHPUnit:

image: php:7.2

cache:
  paths:
    - vendor/
    - node_modules/

before_script:
  - 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
  - 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

, когда тест запускается, его продолжительность составляет 12 минут 20 секунд есть ли способиспользовать кеширование для ускорения работы?

1 Ответ

0 голосов
/ 29 сентября 2019

Создание собственного образа докера

В GitLab CI вы можете определить cache: для временного хранения зависимостей проекта.В вашем ci.yml, вы уже сделали.Большая часть времени работы вашего конвейера проекта была потрачена на apt-get install.Поскольку кэширование зависимостей установки из apt-get install будет сложным, лучше создайте собственный образ докера, включающий зависимости из apt-get для тестирования.

Шаги

  1. напишите файл dockerfile
  2. build, переместите ваш образ докера куда-нибудь
  3. замените image: php:7.2 в ci.yml
  4. 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.

...