es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

GitLab CI ejecuta un contenedor Docker de otro Repositorio.

Soy generalmente relativamente nuevo en el tema de GitLab CI y desafortunadamente aún no puedo probar esto yo mismo, por lo que esto es más un intento teórico.
Quiero iniciar un contenedor Docker desde uno de mis otros proyectos en Gitlab en la canalización de CI de mi proyecto principal.
Este contenedor (que ahora llamo Contenedor de Mock) se crea y publica en la canalización de CI de GitLab del proyecto correspondiente y contiene varios servicios simulados.
En el proyecto en el que quiero ejecutar el Contenedor de Mock, debería poder iniciar ese contenedor en GitLab CI.

Sé que es posible utilizar una compilación del proyecto en una etapa diferente en la misma canalización, como aquí, por ejemplo:

variables:
DOCKER_HOST: tcp://docker:2376
DOCKER_TLS_CERTDIR: "/certs"
CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:latest

¿Es posible, por ejemplo, si el $CIREGISTRYIMAGE utilizado en las variables de CONTAINER-IMAGE es algo como:

registry.gitlab.com/foo/bar/mainproject

agregar una variable aquí como:

MOCK_CONTAINER_IMAGE: registry.gitlab.com/foo/bar/mockproject:latest

así podría, por ejemplo, usarlo en la lista de servicios en la etapa de prueba:

build:
stage: construir
image: quay.io/podman/stable
script:
– podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY –log-level=debug
– podman build –format docker –pull -t $CONTAINER_TEST_IMAGE .
– podman push $CONTAINER_TEST_IMAGE

test:
stage: prueba
image:
name: postman/newman
entrypoint: [ "" ]
services:
– name: $CONTAINER_TEST_IMAGE
alias: proyecto-principal
– name: $MOCK_CONTAINER_IMAGE
alias: contenedor-mock

¿Es esto posible o hay una mejor manera de lograr esto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible iniciar un contenedor de Docker desde uno de tus otros proyectos en GitLab en el pipeline de CI de tu proyecto principal. Para hacer esto, puedes usar la variable $CI_REGISTRY_IMAGE para referirte a la imagen en el Registro de Contenedores de GitLab.

    Para iniciar el Mock-Container en el CI de GitLab de tu proyecto principal, puedes definir la variable MOCK_CONTAINER_IMAGE con la ruta de la imagen de tu proyecto Mock-Container como lo has hecho en tu ejemplo.

    Luego, puedes usar la palabra clave services en tu etapa de pruebas para especificar la imagen de Mock-Container como un servicio que se debe iniciar antes de ejecutar las pruebas. En el ejemplo que proporcionaste, has definido correctamente la imagen de Mock-Container como un servicio usando las palabras clave name y alias.

    Una vez que el servicio de Mock-Container se haya iniciado, puedes acceder a él en la etapa de pruebas utilizando el nombre de host definido en la palabra clave alias (mock-container en tu ejemplo).

    En general, tu enfoque parece correcto y debería funcionar como se pretende. Solo asegúrate de que el proyecto Mock-Container esté publicado en el Registro de Contenedores de GitLab antes de hacer referencia a él en el pipeline de CI de tu proyecto principal.

Comments are closed.