現在、JenkinsエージェントはRailsプロジェクトごとにdocker-compose.ymlを生成してから、docker-composeupを実行します。docker-compose.ymlには、rbenvと他のすべてのRails依存関係を内部に持つメインの「web」コンテナーがあります。これは、テストPostgresDBを含むDBコンテナーにリンクされています。
問題は、実際にテストを実行して終了コードを生成する必要がある場合に発生します。CIサーバーは、テストスクリプトがexit 0を返した場合にのみデプロイされますが、docker-composeは、コンテナーコマンドの1つが失敗した場合でも、常に0を返します。
もう1つの問題は、Webコンテナーがテストの実行を完了した後でも、DBコンテナーが無期限に実行されるため、docker-compose up
戻らないことです。
このプロセスにdocker-composeを使用する方法はありますか?コンテナを実行できる必要がありますが、Webコンテナが完了したら終了し、その終了コードを返します。現在、dockerを使用して手動でスタックし、DBコンテナーを起動し、-linkオプションを指定してWebコンテナーを実行しています。
docker-compose
1.12.0以降を使用している場合は、これが正しい方法です。多分それはあなたの場合でもあります。例は次のとおりdocker-compose up --exit-code-from test-unit
です。set -e
スクリプトの最初にを追加するまで、機能しなかったことに注意してください。