Подтвердить что ты не робот

Предоставляет ли какой-либо сервис CI возможность создавать контейнеры Docker и использовать кеш сборки докеров?

У меня есть куча контейнеров Docker, все подключенные с помощью докеры-компоновки (ранее рис.). Я обнаружил, что услуги, которые рекламируют себя как сервисы Docker CI, как правило, просто говорят об использовании Docker для запуска своих рабочих.

Я хотел бы использовать службу непрерывной интеграции, которая сохраняет кеш сборки Docker между запусками, вместо того, чтобы разворачивать полностью новый контекст рабочей/файловой системы/сборки. В противном случае, сборки берутся абсолютно навсегда. Идеально управляемый (в отличие от https://github.com/groupon/DotCi, который не поставляется с готовой к запуску базой данных CircleCI).

Единственное, что я нашел, это TeamCity (старый, вы не можете выполнять задачи сборки в файле yaml, как вы можете, с CircleCI, вам нужно поддерживать инфраструктуру и т.д.). Quay.io не предоставляет такую ​​базу данных, как CircleCI и Travis, поэтому вам нужно раздвоить dev и prod и установить его внутри контейнера и выполнить модульные тесты во время сборки контейнера (ew - вы не можете появиться в незастроенном контейнере, чтобы отлаживайте вещи!).

Как вы выполняете непрерывную интеграцию в кластере контейнеров Docker?

4b9b3361

Ответ 1

Обновить: CircleCI 2.0 ориентирован на докеры. Вы можете создавать изображения Docker, использовать кеширование слоев, использовать Docker Compose и даже использовать официальные и пользовательские изображения Docker в качестве среды сборки.


CircleCI позволяет создавать контейнеры Docker как часть вашей сборки: https://circleci.com/integrations/docker

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

В то же время ряд клиентов кэшировали его с помощью встроенного кеширования CircleCI (без докеров), используя docker save/docker load: https://circleci.com/docs/docker#caching-docker-layers. Это не идеальный вариант, но он должен перевести вас, пока мы не сможем поддерживать это намного лучше.

Ответ 2

В настоящее время я использую CircleCI, см. http://tschottdorf.github.io/cockroach-docker-circleci-continuous-integration для хорошего руководства по использованию кеша докеров

shippable также стоит проверить, так как вся их инфраструктура основана на докере и организует несколько контейнеров докеров с судоходными формациями.

Ответ 3

Теперь Codeship поддерживает хранение кэша изображений Docker и возвращает его, чтобы ускорить ваши сборки.

https://codeship.com/documentation/docker/caching/

Ответ 4

Существует связанный с этим вопрос "Как я могу позволить промежуточным изображениям кэша изображений DinD для gitlab-ci-runner?" .

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

В принципе, мы не запускаем Docker в Docker, но мы создаем отдельную виртуальную машину только для бегунов. Это имеет некоторые последствия для задач безопасности и очистки, см. Также README нашего бегуна.

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

Ответ 5

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

Даунсайд: для него требуется слишком много разрешений GitHub.