GitLab Docker Runner для повторного использования установленных слоев программного обеспечения - PullRequest
0 голосов
/ 29 января 2020

Очень типичный сценарий с GitLab CI состоит в том, чтобы установить несколько пакетов, которые вам нужны для ваших заданий (линтеры, инструменты покрытия кода, помощники по развертыванию c и т. Д.), А затем выполнить ваши реальные этапы / шаги сборка, тестирование и развертывание вашего программного обеспечения.

Бегунок Docker - это очень аккуратное и чистое решение, но кажется очень расточительным всегда выполнять шаги, которые устанавливают базовое программное обеспечение. Обычно Docker может кэшировать такие слои, но с тем, как работает бегун GitLab Docker, этого не происходит.

Мы понимаем, что настраиваем другой проект для создания предварительно сконфигурированных Docker изображений будет одним из решений, но есть ли лучшие? По сути, мы хотим сказать следующее: " Если раздел before не изменился, вы можете повторно использовать образ с прошлого раза, не нужно переустанавливать wget или что-то еще".

Есть какое-нибудь подобное решение?

1 Ответ

1 голос
/ 29 января 2020

Вы можете использовать реестр вашего проекта gitlab.

например.

images:
    stage: build
    image: docker
    services:
        - docker:dind
    script:
        - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY # login
        # pull the current image or in case the image does not exit, do not stop the script:
        - docker pull $CI_REGISTRY_IMAGE:latest || true
        # build with the pulled image as cache:
        - docker build --pull --cache-from $CI_REGISTRY_IMAGE:latest -t "$CI_REGISTRY_IMAGE:latest" .
        # push the final image:
        - docker push "$CI_REGISTRY_IMAGE:latest"

Таким образом docker build будет приносить прибыль от работы, выполненной последний запуск работы. См. документы . Может быть, вы хотите избежать ненужных запусков по некоторым правилам .

...