Recientemente conecté nuestros servidores CI para construir imágenes de acoplador en git commit.
Tenemos alrededor de 8 contenedores diferentes que se crean, cada uno con su propio lenguaje / framework. Algunos son nodos y tienen un paquete .json, otros son servicios de Python que no contienen información de versión semántica.
Mi pregunta no se trata de cómo crear etiquetas, se trata de crear los valores para la etiqueta.
¿Cómo asegurarse de que cada etiqueta tenga un número de versión semántico único para las imágenes específicas? ¿Quién debería ser la autoridad para rastrear / incrementar una versión de compilación?
docker
continuous-integration
versioning
Jack Murphy
fuente
fuente
Respuestas:
Le dirigiría a mi registro de acoplamiento acoplable y control de fuente donde dmaze respondió desde los foros oficiales.docker.com . Comprometer hash y nombre de sucursal o etiquetas es suficiente.
Actualmente estamos utilizando una combinación de nombre de sucursal / commit hash. Para nosotros eso parece ser suficiente. marcas de tiempo mientras son útiles IMO simplemente agregue desorden ya que no proporcionan nada que el hash commit no proporcione.
Estoy de acuerdo con 030 con respecto a:
El 100% es responsabilidad del CI para mantener tales cosas, con una comunicación adecuada entre otros equipos.
fuente
Se podría crear una etiqueta que consta de múltiples elementos, por ejemplo, una combinación de una marca de tiempo, git commit hash y una versión semántica. Este último tiene que configurarse manualmente, mientras que los dos primeros podrían automatizarse. Tal etiqueta podría verse de la siguiente manera:
Esta etiqueta contiene la fecha de compilación, el compromiso y la versión semántica. Si una imagen de Docker se ejecuta en producción y se encuentra un error, entonces se conoce la versión del producto, el código que está dentro y cuándo se creó la imagen y en qué circunstancias.
En mi opinión, esto debería ser responsabilidad del CI, ya que es capaz de automatizar procesos y, dado que la creación de etiquetas podría automatizarse, dicha herramienta es la herramienta adecuada para el trabajo.
fuente
Supongo que utiliza una de las herramientas de DevOps para CI / CD como Jenkins, sugiero el siguiente enfoque,
Si usas algo como Jenkins
ex:-
sudo docker build -t <image_name>:<BUILD_ID>
Entonces, si tiene un mecanismo similar a una etiqueta para su SCM, puede verificar la etiqueta en la ID de compilación respectiva, ya sea en compilaciones basadas en trabajos o en config.xml de la ID de compilación en JENKINS HOME_FOLDER.
fuente