Saat ini agen Jenkins kami membuat docker-compose.yml untuk setiap project Rails kami dan kemudian menjalankan docker-compose up. Docker-compose.yml memiliki container "web" utama yang memiliki rbenv dan semua dependensi Rails lainnya di dalamnya. Ini ditautkan ke penampung DB yang berisi tes Postgres DB.
Masalahnya muncul ketika kita benar-benar perlu menjalankan tes dan menghasilkan kode keluar. Server CI kami hanya akan men-deploy jika skrip pengujian menampilkan exit 0, tetapi docker-compose selalu menampilkan 0, bahkan jika salah satu perintah container gagal.
Masalah lainnya adalah penampung DB berjalan tanpa batas, bahkan setelah penampung web selesai menjalankan pengujian, jadi docker-compose up
tidak pernah kembali.
Adakah cara agar kami dapat menggunakan docker-compose untuk proses ini? Kita harus dapat menjalankan penampung, tetapi keluar setelah penampung web selesai dan mengembalikan kode keluarnya. Saat ini kami terjebak secara manual menggunakan buruh pelabuhan untuk memutar wadah DB dan menjalankan wadah web dengan opsi --link.
docker-compose
1.12.0 dan yang lebih baru. Mungkin itu kasusmu juga. Contoh bisa menjadi:docker-compose up --exit-code-from test-unit
. Perhatikan bahwa itu tidak berhasil untuk saya sampai saya menambahkanset -e
di awal skrip saya.