Някоя CI услуга позволява ли ви да създавате Docker контейнери и да използвате кеша за изграждане на docker?

Имам куп Docker контейнери, всички свързани с помощта на docker-compose (преди фиг.). Открих, че услугите, които се рекламират като "Docker CI" услуги, обикновено просто говорят за използването на Docker за изпълнение на техните строителни работници.

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

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

Как изпълнявате непрекъсната интеграция на вашия Docker контейнерен клъстер?


person user3906849    schedule 28.01.2015    source източник
comment
Имайте предвид, че вече е възможно да създавате докер изображения и на Travis, blog.travis-ci.com/2015-08-19-using-docker-on-travis-ci   -  person cboettig    schedule 19.07.2016


Отговори (5)


CircleCI 1.0

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

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

Междувременно редица клиенти са го кеширали с помощта на вграденото (не-Docker) кеширане на CircleCI, използвайки docker save/docker load: https://circleci.com/docs/docker#caching-docker-слоеве. Не е идеално, но би трябвало да ви натовари, докато не успеем да поддържаме това много по-добре.

Актуализиран за CircleCI 2.0

CircleCI 2.0 е ориентиран към Docker. Можете да създавате Docker изображения, да използвате кеширане на слоеве, да използвате Docker Compose и дори да използвате официални и персонализирани Docker изображения като среда за изграждане.

person Paul Biggar    schedule 28.01.2015
comment
Иска ми се docker load да направи това, но не запазва кеша за компилация. docker load отнема приблизително толкова време, колкото изтеглянето на пълно компилирано изображение от частно хранилище, така че не върши работа. - person user3906849; 29.01.2015
comment
Пол, бихте ли получили актуална информация относно планирането за справяне с тази част скоро? Би било интересно. - person user2707671; 18.02.2016
comment
Въз основа на моето тестване разбирам, че дори свързаната стратегия docker save/load не работи (командите за изграждане на докер се изпълняват напълно при всяко изграждане), според този коментар тук: discuss.circleci.com/t/docker-1-10-0-is-available-beta /2100/15 @paul-biggar или някой друг - има ли работещ пример? - person thisjustin; 19.08.2016

В момента използвам CircleCI, вижте http://tschottdorf.github.io/cockroach-docker-circleci-continuous-integration за добро ръководство за използване на докер кеша

shippable също си струва да се провери, тъй като цялата им инфраструктура е базирана на докери и оркестриране на множество докер контейнери с формации за изпращане.

person d3ming    schedule 21.08.2015
comment
просто бърза корекция, изглежда, че URL адресът за публикацията в блога работи само без наклонената черта в края, тъй като ще върне 404: tschottdorf.github.io/ - person fagiani; 27.10.2016

Codeship вече поддържа съхраняване на кеша на изображенията на Docker и извличане на това, за да ускорите вашите компилации.

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

person Aidan Feldman    schedule 26.11.2015

Има свързан въпрос "Как мога да позволя на gitlab-ci-runner DinD изображение да кешира междинни изображения?".

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

По принцип не изпълняваме Docker в Docker, но създаваме отделна виртуална машина само за runners. Това има някои последици за задачите за сигурност и почистване, моля, вижте също README на нашия runner .

Може би това решение ще остарее в бъдеще, тъй като поддръжката на Docker за различни CI системи се подобрява, но в момента това е добра комбинация между производителност, поддръжка и използваемост.

person schmunk    schedule 12.12.2016

Виждали ли сте wercker? Той поддържа „донесете свой собствен контейнер“, ще кешира вашите изображения (мисля, че на базата на всеки работник, но след няколко компилации обикновено стартирането намалява до няколко секунди с персонализирано изображение), а afaik също позволява изграждане на Docker изображения.

Недостатък: изисква твърде много разрешения за GitHub.

person krlmlr    schedule 05.02.2016
comment
Дори не ви позволява да използвате свой собствен Dockerfile, така че не е добро решение. - person Steffen Brem; 05.03.2016
comment
@SteffenBrem: Можете да създавате вашите изображения от вашите Dockerfiles в docker hub и да ги използвате във wercker. Работи за мен. - person krlmlr; 05.03.2016