En este momento, nuestros agentes de Jenkins generan un docker-compose.yml para cada uno de nuestros proyectos de Rails y luego ejecutan docker-compose. El docker-compose.yml tiene un contenedor "web" principal que tiene rbenv y todas nuestras otras dependencias de Rails dentro. Está vinculado a un contenedor de base de datos que contiene la base de datos de Postgres de prueba.
El problema surge cuando realmente necesitamos ejecutar las pruebas y generar códigos de salida. Nuestro servidor de CI solo se implementará si el script de prueba devuelve exit 0, pero docker-compose siempre devuelve 0, incluso si uno de los comandos del contenedor falla.
El otro problema es que el contenedor DB se ejecuta indefinidamente, incluso después de que el contenedor web haya terminado de ejecutar las pruebas, por lo que docker-compose up
nunca regresa.
¿Hay alguna forma en que podamos usar docker-compose para este proceso? Necesitaríamos poder ejecutar los contenedores, pero salir después de que el contenedor web esté completo y devolver su código de salida. En este momento, estamos atascados manualmente al usar la ventana acoplable para activar el contenedor de base de datos y ejecutar el contenedor web con la opción --link.
docker-compose
1.12.0 y superior. Quizás también sea tu caso. Un ejemplo podría ser:docker-compose up --exit-code-from test-unit
. Tenga en cuenta que no funcionó para mí hasta que agregué unset -e
al principio de mi script.