Я недавно подключил наши CI-серверы к созданию образов докеров после git commit.
У нас есть около 8 различных контейнеров, каждый из которых имеет свой собственный язык / фреймворки. Некоторые из них являются узлами и имеют package.json, другие - службы python, которые не содержат информации о семантической версии.
Мой вопрос не о том, как создавать теги, а о создании значений для тега.
Как обеспечить, чтобы каждый тег имел уникальный семантический номер версии для конкретных изображений? Кто должен быть органом по отслеживанию / увеличению версии сборки?
docker
continuous-integration
versioning
Джек Мерфи
источник
источник
Ответы:
Я бы направил вас в мой пост реестра регистрации и управления источниками Coupling, где dmaze ответил с официального форумов forum.docker.com . Фиксируйте хеш и имя ветви или теги достаточно.
В настоящее время мы используем комбинацию имени ветки / хэша коммита. Нам кажется, что этого достаточно. временные метки, в то время как они полезны IMO, просто добавьте беспорядок, поскольку они не предоставляют ничего, что не делает хеш коммита.
Я согласен с 030 относительно:
Ответственность за поддержание таких вещей при надлежащей связи между другими командами лежит на 100%.
источник
Можно создать тег, который состоит из нескольких элементов, например, комбинации временной метки, хеша git commit и семантической версии. Последний должен быть установлен вручную, в то время как первые два могут быть автоматизированы. Такой тег может выглядеть следующим образом:
Этот тег содержит дату сборки, фиксацию и семантическую версию. Если образ докера запускается в производство и обнаруживается ошибка, то известен вариант продукта, код, который находится внутри, когда образ был создан и при каких обстоятельствах.
По моему мнению, это должно быть обязанностью CI, так как он способен автоматизировать процессы и поскольку создание тегов может быть автоматизировано, такой инструмент является подходящим инструментом для работы.
источник
Я полагаю, что вы используете один из инструментов DevOps для CI / CD, такой как Jenkins, я предлагаю следующий подход,
Если вы используете что-то вроде Jenkins-
например: -
sudo docker build -t <image_name>:<BUILD_ID>
Итак, если у вас есть механизм, похожий на тег, для вашего SCM, вы можете проверить тег в соответствующем идентификаторе сборки либо в сборках на основе заданий, либо в config.xml идентификатора сборки в JENKINS HOME_FOLDER.
источник