Estoy creando algunas pruebas de integración para mis imágenes acoplables usando docker-compose . docker-compose tiene una bandera ordenada --exit-code-from para permitir detener todas las ventanas acoplables y devolver el código de salida de la ventana acoplable de prueba una vez que finalizan las pruebas.
Sin embargo, el problema es que --exit-code-from incluye automáticamente el indicador --abort-on-container-exit . Esto es bastante lógico, pero crea el siguiente problema:
Caso normal
caso problema
Puede reproducir esto con los siguientes archivos:
Dockerfile
FROM alpine as development ENTRYPOINT [ "/bin/false" ] FROM alpine as test ENTRYPOINT [ "/bin/sleep", "3" ]docker-compose.yml
version: "3.5" services: sut: build: context: . target: development test: build: context: . target: testy luego corriendo
docker-compose up --build --exit-code-from test echo $? # print exit code from previous commandque devolverá el código de salida 0.
Me gustaría que el código de salida 0 signifique: las pruebas de integración realmente se ejecutaron y fueron exitosas.
EDITAR: después de ver este problema, https://github.com/docker/compose/pull/6077/commits se fusionó con docker-compose 1.22.0; Volví a ejecutar con la última versión de docker-compose (1.24.1 a partir de ahora), pero todavía me encuentro con mi problema.
Esta es la única solución que he encontrado hasta ahora. No es la solución más limpia, pero funciona:
docker-compose up --build --exit-code-from test | grep -q "_test_1 exited with code 0" $TMPuna versión más larga en un script bash limpio con análisis de opciones, que muestra el resultado de docker-compose: https://gist.github.com/chrismaes87/7297d34d356b07a00a5da5f8e425326c