Recentemente, conectei nossos servidores de CI para criar imagens do docker com o git commit.
Temos cerca de 8 contêineres diferentes que são construídos, cada um com sua própria linguagem / estrutura. Alguns são node e possuem package.json, outros são serviços python que não contêm informações de versão semântica.
Minha pergunta não é sobre como criar tags, é sobre como criar os valores para a tag.
Como garantir que cada tag tenha um número de versão semântico exclusivo para as imagens específicas? Quem deve ser a autoridade para rastrear / incrementar uma versão de compilação?
docker
continuous-integration
versioning
Jack Murphy
fonte
fonte
Respostas:
Direcionaria você ao meu registro de acoplador e controle de origem da janela de encaixe, onde o dmaze respondeu a partir do forums.docker.com oficial . Confirme o hash e o nome ou as tags da filial.
No momento, estamos usando uma combinação de nome de filial / hash de confirmação. Para nós, isso parece ser suficiente. carimbos de data / hora enquanto são úteis OMI apenas adiciona confusão, pois eles não fornecem nada que o hash de confirmação não fornece.
Eu concordo com 030 em relação a:
100% é responsabilidade do IC para manter essas coisas, com comunicação adequada entre outras equipes.
fonte
Pode-se criar uma tag que consiste em vários elementos, por exemplo, uma combinação de carimbo de data / hora, hash de confirmação do git e versão semântica. O último deve ser definido manualmente, enquanto os dois primeiros podem ser automatizados. Essa tag pode ter a seguinte aparência:
Essa tag contém a data de construção, a confirmação e a versão semântica. Se uma imagem do Docker for executada em produção e um erro for encontrado, a pessoa saberá a versão do produto, o código que está dentro e quando a imagem foi criada e em que circunstâncias.
Na minha opinião, isso deve ser de responsabilidade do IC, pois ele é capaz de automatizar processos e, como a criação de tags pode ser automatizada, essa ferramenta é a ferramenta certa para o trabalho.
fonte
Suponho que você use uma das ferramentas do DevOps para CI / CD como Jenkins, sugiro a seguinte abordagem,
Se você usa algo como Jenkins-
ex:-
sudo docker build -t <image_name>:<BUILD_ID>
Portanto, se você tiver um mecanismo de tag como para o seu SCM, poderá verificar a tag no respectivo ID de compilação nas compilações baseadas em tarefas ou em config.xml da ID de compilação no JENKINS HOME_FOLDER.
fonte