Сохраняйте конвейер Gitlab CI на одном сервере, чтобы обеспечить совместное использование кэша - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть локальный сервер gitlab, работающий с несколькими бегунами Gitlab CI.В прошлом у каждого бегуна была настройка concurrent = 1, а затем при запуске конвейера любой доступный бегун выполняет любую работу на каждом этапе.

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

Возможно ли, чтобы весь конвейер был назначен бегуном?Но работают ли конвейеры 2+ одновременно на нескольких бегунах?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

То, что вы хотите в настоящее время (GitLab 11.7), невозможно (по крайней мере, в Windows, кажется) без значительных административных издержек, связанных с назначением каждого участника конкретно для каждого из ваших заданий.Прикрепление определенного участника к вашему проекту и отключение всех общих тоже подойдет.

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

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

То, что мы пробовали:

  1. Совместное использование кэша с использованием папки SMB, доступной на всех компьютерах бегуна
  2. Использование minio для совместного использованиякеш

Наш билет с ошибками можно найти здесь: https://gitlab.com/gitlab-org/gitlab-runner/issues/3920

0 голосов
/ 03 января 2019

Кэш всегда хранится в том же месте, где установлен и работает бегун [1].Поэтому, чтобы разделить кеш между всеми вашими бегунами, вам нужно установить замену S3, например, minio [2], и настроить своих бегунов на использование этого кэша.
Без загрузки (и выгрузки) кэша в центральное хранилище это не так.Возможно, что каждый бегун может получить доступ к кешу другого бегуна.

[1] https://docs.gitlab.com/ce/ci/caching/#cache-vs-artifacts
[2] https://docs.gitlab.com/runner/install/registry_and_cache_servers.html#install-your-own-cache-server

Возможно ли для всего конвейерабыть назначенным бегуном?

Да.Просто дайте каждому бегуну уникальный тег.Чем помечать каждую работу в вашем конвейере с пометкой одного бегуна.Это гарантирует, что ваш конвейер будет выполняться только одним бегуном.Подробнее см. https://docs.gitlab.com/ce/ci/runners/#using-tags

...