Jenkins Docker kapsayıcısında bir C ++ projesi oluşturmak için kullanmaya çalışıyorum. Jenkins'te ya da Jenkins dışında bir kapta inşa etmekte sorun yaşamıyorum.
Aşağıda denedim. Netlik için cilt haritalamasını atlıyorum.
Dava 1
Aşağıdaki komut, bir kabukta bir derlemeyi başarıyla çalıştırır.
docker run --rm --interactive=true --tty=true $IMAGE make
Ancak Jenkins "kabuk yürütme" adımı olarak çalıştırıldığında Docker aşağıdaki hatayı döndürür.
cannot enable tty mode on non tty input
Durum 2
Aşağıdaki komut öncekine benzer ancak etkileşimi devre dışı bırakır.
docker run --rm $IMAGE make
Jenkins bir yapıyı başarıyla çalıştırabilir. Ancak bir yapıyı iptal ederken ciddi sorunlar var. Derleme derhal durduruldu olarak işaretlenir, ancak derleme tamamlanıncaya kadar kap çalışmaya devam eder. Ayrıca kap olup olmayan çıktıktan sonra çıkarıldı.
Bir kabukta çalıştırıldığında komut başarılı bir şekilde oluşturulur ancak kesilmesi mümkün değildir. Ayrıca kap çıktıktan sonra çıkarılır.
Soru
Jenkins'ten Docker kapsayıcılarında derlemeleri nasıl temizleyeceğini ve derlemeleri iptal etme özelliğini nasıl koruyacağını bilen var mı?
Docker çağrıları komut dosyalarının içinde olduğundan ve kolayca çıkarılamadığından Jenkins eklentilerinden herhangi birini kullanmak bir seçenek değildir.