Создание версий образов Docker для непрерывной интеграции / непрерывного развертывания

Мы реализуем процессы Continuous Integration и Continuous Delivery с использованием двух известных концепций: бинарных пакетов Linux и Docker изображений.

Большая часть работы уже выполнена: мы берем код из GitLab репо, скомпилируйте его и поместите в deb пакеты хранятся в Aptlyтогда мы создаем Docker изображения для каждой услуги, которую мы имеем, и помещаем изображения в приват Docker Registry сервер. После этого эти изображения переносятся в среду тестирования. Наконец мы запускаем услуги и проводим приемочные испытания. Это непрерывный процесс, который начинается каждый раз, когда кто-то подталкивает к origin/master,

Что до сих пор не ясно, как отличить стабильные изображения, хранящиеся в реестре Docker?

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

Похоже, что по умолчанию эта функция не реализована:

  1. Изображение по умолчанию repo/tag простая тривиальная строка, которая не может содержать ни номер версии, ни дату сборки, ни метки QA.
  2. Labels (введено в 1.6) может быть хорошей отправной точкой для обходного пути, но мы не смогли найти возможность перемаркировки существующих изображений (обратите внимание, что нам необходимо обновить "метаданные" изображения с учетом результатов QA). Не существует подходящего метода запроса изображения по значениям метки, но мы, вероятно, можем обернуть Docker API.

Итак, как правильно назначить версии для образов Docker? Как можно хранить информацию, связанную с QA? Как мы можем "выделить" стабильные сборки изображений? Какие особенности Jenkins CI может быть использован для достижения этих целей? Пожалуйста, поделитесь своим опытом.

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

1 ответ

Похоже, что на ваш вопрос уже есть ответ в этой ссылке для обсуждения, однако я хотел бы только отметить, что в отчете Bleacher Report мы никогда не помещали изображения в концентратор докеров (частный или размещенный), который сначала не проходил CI.

  • Код нажал
  • CircleCI создает помеченную сборку
  • Тесты выполняются внутри помеченного контейнера
  • Если тесты пройдены, CircleCI помещает помеченный контейнер в концентратор

Детальное объяснение

Другие вопросы по тегам