Как я могу сохранить экземпляр образа докера между этапами конвейера GitLab? - PullRequest
1 голос
/ 21 июня 2019

В последние пару недель я настраивал свой первый конвейер с использованием общедоступных общих бегунов на GitLab.com для проекта php в частном репозитории. На этом этапе конвейер довольно прост, определяя два этапа:

stages:
  - test
  - deploy

Этап test запускает composer update -o для построения зависимостей проекта, подключается к удаленному серверу базы данных и запускает среду тестирования CodeCeption для тестирования сборки и создания отчетов о покрытии кода.

Этап deploy запускает composer update --no-dev -o, чтобы перестроить проект с использованием только производственных зависимостей, и использует rsync для передачи файлов на рабочий веб-сервер.

Это все работает прямо сейчас, но для каждого этапа выполняется весь процесс извлечения образа докера, установки зависимостей и извлечения проекта из git. Кажется, что было бы намного эффективнее просто загрузить образ докера и спроецировать один раз , а затем запустить этапы тестирования и развертывания один за другим, используя один и тот же постоянный экземпляр сборки.

Я понимаю, что много раз вы хотите создать новый экземпляр для каждого этапа, но с моим проектом я чувствую, что это довольно неэффективно для временных и серверных ресурсов.

Я мог бы настроить все для запуска на одной и той же стадии, что исключило бы избыточный процесс создания образа докера, но я бы потерял функциональность конвейера в GitLab, где вы можете увидеть, какие этапы не пройдены, и сделать последующие этапы зависимыми от успеха предыдущие.

enter image description here

Из моего обзора документации и нескольких связанных вопросов кажется, что это может иметь отношение к архитектуре того, как этот процесс работает, где задания не зависят друг от друга (и могут даже обрабатываться различными участниками) и организованы по этапам на конвейере.

То, что у меня есть, безусловно, работоспособно (хотя и немного медленно), но я подумал, что задам вопрос здесь, если будет что-то, чего мне не хватало, чтобы сделать этот процесс более эффективным, при этом сохраняя функциональность конвейера CI.

...