Im Moment generieren unsere Jenkins-Agenten ein docker-compose.yml für jedes unserer Rails-Projekte und führen dann docker-compose up aus. Das docker-compose.yml hat einen Haupt "web" -Container, in dem rbenv und all unsere anderen Rails-Abhängigkeiten enthalten sind. Es ist mit einem DB-Container verbunden, der die Test-Postgres-DB enthält.Verwenden von docker-compose mit CI - Wie wird mit Exit-Codes und dämonisierten verknüpften Containern umgegangen?
Das Problem kommt, wenn wir die Tests tatsächlich ausführen und Exit-Codes generieren müssen. Unser CI-Server wird nur bereitgestellt, wenn das Testskript exit 0 zurückgibt, docker-compose jedoch immer 0 zurückgibt, auch wenn einer der Containerbefehle fehlschlägt.
Das andere Problem besteht darin, dass der DB-Container unbegrenzt ausgeführt wird, selbst nachdem der Webcontainer die Tests ausgeführt hat, sodass docker-compose up
nie zurückkehrt.
Gibt es eine Möglichkeit, docker-compose für diesen Prozess zu verwenden? Wir müssten die Container ausführen können, aber nach Abschluss des Webcontainers beenden und den Exit-Code zurückgeben. Jetzt stecken wir fest, indem wir den Docker mit dem Andockfenster festmachen und den Web-Container mit der Option --link starten.
Das Problem mit Docker Lauf ist, dass es keine Ausgabe geben, wenn sie mit -T laufen, und wir wollen, dass die Ausgabe so können wir baut inspect gescheitert. –
@LoganSerman Sie können die Ausgabe mit 'docker-compose logs' überprüfen – kojiro
Gibt es eine Möglichkeit, diese Protokolle während des Laufs konstant zu STDOUT zu leiten, damit wir es sehen können, während der CI-Build läuft? –