Şu anda, Jenkins temsilcilerimiz Rails projelerimizin her biri için bir docker-compose.yml oluşturuyor ve ardından docker-compose up çalıştırıyor. Docker-compose.yml, içinde rbenv ve diğer tüm Rails bağımlılıklarının bulunduğu bir ana "web" kabına sahiptir. Test Postgres DB'yi içeren bir DB kapsayıcısına bağlıdır.
Sorun, testleri gerçekten çalıştırmamız ve çıkış kodları oluşturmamız gerektiğinde ortaya çıkar. CI sunucumuz yalnızca test komut dosyası çıkış 0'ı döndürürse devreye girer, ancak docker-compose, kapsayıcı komutlarından biri başarısız olsa bile her zaman 0 döndürür.
Diğer bir sorun da, DB kapsayıcısının, web kapsayıcısı testleri çalıştırdıktan sonra bile süresiz olarak çalışmasıdır, bu nedenle docker-compose up
asla geri dönmez.
Bu işlem için docker-compose kullanmanın bir yolu var mı? Kapsayıcıları çalıştırabilmemiz gerekir, ancak web kapsayıcısı tamamlandıktan ve çıkış kodunu döndürdükten sonra çıkın. Şu anda, DB kapsayıcısını döndürmek ve web kapsayıcısını --link seçeneğiyle çalıştırmak için docker'ı manuel olarak kullanıyoruz.
docker-compose
1.12.0 ve üstünü kullanıyorsanız bunu yapmanın doğru yolu bu olmalıdır . Belki de senin davan. Bir örnek olabilir:docker-compose up --exit-code-from test-unit
. Senaryomunset -e
başına bir ekleyene kadar benim için çalışmadığını unutmayın .