Почему GitLab docker-windows executor такой медленный? - PullRequest
0 голосов
/ 30 октября 2019

Когда я запускаю совершенно новый 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 исполнителя или если я что-то настроил неправильно, что делает это супер медленным.

...