İlk önce fareyi aşağıdaki gri alanın üzerine getirin. Cevabın bir parçası değil, ama kesinlikle söylenmesi gerekiyor:
Tek başına "kullanıma alma, oluşturma, dağıtma" yapan bir kabuk betiğiniz varsa, neden Jenkins kullanıyorsunuz? Onu olduğu gibi yapan Jenkins'in tüm özelliklerinden bahsediyorsunuz. Bir cron veya SVN post-commit kancasına sahip olabilirsiniz, betiği doğrudan çağırın. SVN kontrolünü kendisi yapan Jenkins çok önemlidir. Derlemelerin yalnızca değişiklik olduğunda (veya isterseniz zamanlayıcıda veya manuel olarak) tetiklenmesini sağlar. Yapılar arasındaki değişiklikleri takip eder. Bu değişiklikleri gösterir, böylece hangi yapının hangi değişiklik kümesi için olduğunu görebilirsiniz. Yapım işlemlerinin başarılı veya başarısız olmasına neden olduğunda işleyicileri e-posta ile gönderir (yine tercih ettiğiniz şekilde yapılandırılır). Düzeltmeleri başarısız olan yapıyı düzelttiğinde işleyenlere e-posta gönderecektir. Ve daha fazlası. Yapıtları arşivleyen Jenkins, bunları derleme başına doğrudan Jenkins'ten erişilebilir kılar. SVN kontrolü kadar önemli olmasa da, bu bir kez daha onu Jenkins yapan şeyin ayrılmaz bir parçası. Konuşlandırmayla aynı. Tek bir ortamınız olmadığı sürece, dağıtım genellikle birden çok ortamda gerçekleşir. Jenkins, Promosyonları kullanarak belirli bir yapının (belirli SVN değişiklikleri ile) hangi ortamda dağıtıldığını takip edebilir. Tüm bunlardan vazgeçiyorsunuz. Görünüşe göre "Jenkins kullanmak zorundasın" söylendi ama gerçekten istemiyorsun ve bunu sadece patronlarını arkandan çekmek için yapıyorsun, sadece "evet, Jenkins'i kullandım" işareti koymak için
Kısa cevap şudur: Jenkin'in Execute Shell oluşturma adımının son komutunun çıkış kodu , Oluşturma Adımının başarısını / başarısızlığını belirleyen şeydir . - başarı, - başarısızlık. Unutmayın, bu, çalıştırılan tüm işin değil, oluşturma adımının başarısını / başarısızlığını belirler . Tüm iş çalışmasının başarısı / başarısızlığı, birden çok derleme adımından ve derleme sonrası eylemlerden ve eklentilerden de etkilenebilir.0
anything else
Bahsetmiştiniz Build step 'Execute shell' marked build as failure
, bu yüzden sadece tek bir inşa adımına odaklanacağız. Senin Eğer Yürütme kabuk yapı adım yalnızca shell script çağıran tek bir satır vardır, sonra kabuk komut çıkış kodu inşa adımının başarı / başarısızlık belirleyecektir. Eğer daha fazla hattınız varsa, sonra onlar başarısızlık neden olabilecek olanlar gibi kabuk komut yürütme, sonra dikkatlice, bunları gözden.
Son olarak, Google Test çalıştırıldıktan sonra Jenkins Build Script'in çıktığını buradan okuyun . Bu doğrudan sorunuzla ilgili değildir, ancak Jenkins'in Execute Shell oluşturma adımını başlatan kısmına , bir kabuk betiği olarak/bin/sh -xe
-e
Kabuk komut dosyası olacağı anlamına gelir çıkmak , sadece 1 komut başarısız olsa bile, yetmezliği olan bile o komutu için hata denetimi yapmak eğer (script çıkar çünkü sizin hata kontrolü ulaşmadan durdurur). Bu, genellikle başarısız olan komut için hata mesajını yazdıran (veya onu boşa yönlendirip başka yollarla işleyen) ve devam eden kabuk komut dosyalarının normal yürütülmesine aykırıdır.
Bunu aşmak set +e
için, kabuk betiğinizin üstüne ekleyin .
Senaryonuzun yapması gereken her şeyi yaptığını söylediğiniz için, başarısız olan komut betiğin sonunda bir yerdedir. Belki son bir yankı? Veya bir yerlerde eserlerin kopyası? Tam konsol çıktısını görmeden sadece tahmin ediyoruz.
Lütfen job run'un konsol çıktısını ve tercihen kabuk betiğinin kendisini de gönderin, sonra size tam olarak hangi satırın başarısız olduğunu söyleyebiliriz.