Почему gitlab-ci по умолчанию использует git clone для каждого задания вместо того, чтобы сначала создавать образ докера? - PullRequest
1 голос
/ 23 декабря 2019

По умолчанию Gitlab-ci использует git clone в каждом задании в конвейере. Это отнимает много времени, тем более что после клонирования нам нужно установить / обновить все зависимости. Я хотел бы изменить порядок наших конвейеров и начать с git clone + docker build, а затем запускать все последующие задания с использованием этого образа без клонирования и перестроения для каждого задания.

Я что-то упустил? Есть ли причина, по которой я бы хотел клонировать репо отдельно для каждой работы, если у меня уже есть изображение с текущим кодом?

Ответы [ 2 ]

0 голосов
/ 30 декабря 2019

Вы ничего не пропустили. Если вы знаете, что делаете, вам не нужно клонировать репо для каждой стадии вашего конвейера. Если вы установите для переменной GIT_STRATEGY значение none, ваши тестовые задания или что-то еще, они будут выполняться быстрее, и вы можете просто запускать команды Docker Pull и необходимые вам тесты. Просто убедитесь, что вы используете правильные образы докеров, даже если вы запускаете много параллельных заданий. Например, вы можете использовать CI_COMMIT_REF_NAME как часть имени образа докера.

Что касается того, почему GitLab по умолчанию использует git clone, я предполагаю, что это наименее удивительное поведение. Если вы представите кого-то новичка в GitLab и новичка в CI, им будет намного легче начать работу, если каждая работа просто клонирует весь репозиторий. Вы также должны помнить, что не все создают образы докеров на своих рабочих местах. Я полагаю, что наиболее распространенный способ настройки - либо с языками программирования, которые не нужно компилировать, например, python, либо с заданием build, которое создает двоичные файлы, а затем * 1008. * Работа, которая запускает двоичные файлы. Затем они могут использовать artifacts для отправки двоичных файлов из задания сборки в тестовое задание.

Это просто и работает. Когда люди понимают, что большая часть их тестовых заданий тратится только на клонирование репозитория, они могут изучить, как изменить GIT_STRATEGY, и сделать другие вещи для оптимизации их конкретной сборки.

0 голосов
/ 24 декабря 2019

Одной из причин использования КИ является выполнение вашего репо в свежем состоянии. Это невозможно сделать, если вы пропустите процесс git clone в определенных заданиях. Задание может изменить состояние репо, удалив его файл или создав новые;только artifacts, которые явно задокументированы в конвейере, должны быть разделены между заданиями - ничего больше.

...