Когда я запускаю совершенно новый git-репозиторий с только README.md
и .gitlab-ci.yml
и использую стандартный shell
executor в GitLab, вся работа занимает 4 секунды. Когда я делаю то же самое с помощью исполнителя docker-windows, это занимает 33 секунды!
My .gitlab-ci.yml
:
no_git_nor_submodules:
image: base_on_python36:ltsc2019
stage: build
tags:
- docker-windows
variables:
GIT_SUBMODULE_STRATEGY: none
GIT_STRATEGY: none
script:
- echo test
no_docker_no_git_nor_submodules:
stage: build
tags:
- normal_runner
variables:
GIT_SUBMODULE_STRATEGY: none
GIT_STRATEGY: none
script:
- echo test
Одна проблема, которая, как я думал, может быть, заключается в том, что образы Dockerна Windows, как правило, огромные. Тот, который я тестировал здесь, составляет 5,8 ГБ. Когда я запускаю контейнер вручную на сервере, для его запуска требуется всего несколько секунд. Я также провел тестирование с еще большим изображением, 36 ГБ, но для работы с этим образом также требуется около 33 секунд.
Поскольку эти задания ничего не делают и не имеют никакого git-клона илисубмодули, что это занимает время?
Я знаю, что GitLab использует таинственный образ помощника для клонирования репозитория git и для других подобных вещей. Может ли это быть изображение, которое делает его очень медленным для запуска?
Обновление 2019-11-04
Я посмотрел немного больше, используя docker events
. Он показал, что GitLab запускает в общей сложности 7 контейнеров, 6 из их собственного образа помощника и один из образа, который я определил в .gitlab-ci.yml
. Каждый из этих док-контейнеров занимает около 5 секунд на создание, запуск и уничтожение, что объясняет время. Единственный вопрос сейчас заключается в том, является ли это нормальным поведением для docker-windows
исполнителя или если я что-то настроил неправильно, что делает это супер медленным.