Paralel dişli kumaş komutu için Jenkins gerçek zamanlı konsol çıkışı [kapalı]


22

Buna benzer bir şekilde birkaç ana bilgisayara paralel olarak çalışan bir Python kumaş komutumuz var:

$ fab --hosts=prod1.server,prod2.server,prod3.server --parallel copy_cache

Bu, önbelleği paralel olarak listelenen üretim sunucularına kopyalar. İşlem boyunca, XXgig önbellek dizinleri için saatlerce alabileceğimizden beri ne kadar uzak olduğumuzu gösteren çeşitli kayıtlar vardır. Kopyalama aynı anda gerçekleştiğinden, komut satırında çalıştırıldığında çıkan çıktı gerçek zamanlı olarak tekrar titreşimli hale gelir, şöyle:

[prod1.server] Executing task 'nginx_cache_copy'
[prod2.server] Executing task 'nginx_cache_copy'
[prod3.server] Executing task 'nginx_cache_copy'
2014-09-16 10:02:29.688243
[prod1.server] INFO: rsyncing cache dir
[prod1.server] run: rsync -a -q cache.server:"repo/cache/some.site.com" \
                                             "repo/cache/."
2014-09-16 10:02:29.716345
[prod2.server] INFO: rsyncing cache dir
[prod2.server] run: rsync -a -q cache.server:"repo/cache/some.site.com" \
                                             "repo/cache/."
2014-09-16 10:02:29.853275
[prod3.server] INFO: rsyncing cache dir
[prod3.server] run: rsync -a -q cache.server:"repo/cache/some.site.com" \
                                             "repo/cache/."
2014-09-16 10:02:29.984154
[prod1.server] INFO: Reloading nginx config
[prod1.server] run: sbin/nginx -s reload -c "repo/nginx.conf"
2014-09-16 10:02:30.025155
[prod2.server] INFO: Reloading nginx config
[prod2.server] run: sbin/nginx -s reload -c "repo/nginx.conf"
2014-09-16 10:02:30.100169
[prod1.server] SUCCESS: CACHE COPY COMPLETE

2014-09-16 10:02:30.181938
[prod2.server] SUCCESS: CACHE COPY COMPLETE

2014-09-16 10:02:30.331402
[prod3.server] INFO: Reloading nginx config
[prod3.server] run: sbin/nginx -s reload -c "repo/nginx.conf"
2014-09-16 10:02:30.559271
[prod3.server] SUCCESS: CACHE COPY COMPLETE

Done.

Ancak, görev Jenkins tarafından gerçekleştirildiğinde, tüm görevler tamamlanıncaya kadar konsol çıktısı görüntülenmez, çünkü Jenkins, tüm iş parçacıkları tamamlandığında iş parçacıkları birleştirildikten SONRA çıkışı gruplandırır. Böylece, tüm komutlar tamamlandıktan sonra, çıkış şöyle görünür:

[prod1.server] Executing task 'nginx_cache_copy'
2014-09-16 10:02:29.688243
[prod1.server] INFO: rsyncing cache dir
[prod1.server] run: rsync -a -q cache.server:"repo/cache/some.site.com" \
                                             "repo/cache/."
2014-09-16 10:02:29.984154
[prod1.server] INFO: Reloading nginx config
[prod1.server] run: sbin/nginx -s reload -c "repo/nginx.conf"
2014-09-16 10:02:30.100169
[prod1.server] SUCCESS: CACHE COPY COMPLETE

[prod2.server] Executing task 'nginx_cache_copy'
2014-09-16 10:02:29.716345
[prod2.server] INFO: rsyncing cache dir
[prod2.server] run: rsync -a -q cache.server:"repo/cache/some.site.com" \
                                             "repo/cache/."
2014-09-16 10:02:30.025155
[prod2.server] INFO: Reloading nginx config
[prod2.server] run: sbin/nginx -s reload -c "repo/nginx.conf"
2014-09-16 10:02:30.181938
[prod2.server] SUCCESS: CACHE COPY COMPLETE

[prod3.server] Executing task 'nginx_cache_copy'
2014-09-16 10:02:29.853275
[prod3.server] INFO: rsyncing cache dir
[prod3.server] run: rsync -a -q cache.server:"repo/cache/some.site.com" \
                                             "repo/cache/."
2014-09-16 10:02:30.331402
[prod3.server] INFO: Reloading nginx config
[prod3.server] run: sbin/nginx -s reload -c "repo/nginx.conf"
2014-09-16 10:02:30.559271
[prod3.server] SUCCESS: CACHE COPY COMPLETE

Done.

Bu daha okunaklı olsa da, ideal değil çünkü konsol çıktısını gerçek zamanlı olarak okuyarak sürecin durumunu takip etmek istiyoruz. Bu kumaş komutu çalıştırıldığında bu Not olmadan--parallel seçeneği konsol çıkış gerçek zamanlı olarak meydana seri işlem çalıştırmak için çok daha uzun sürer, çünkü ancak belli ki bu uygulanabilir değil.

Jenkins'te bu konu grubunu etkisiz hale getirecek bir ayar bulamadım. Bir fikri olan var mı?


4
Bunun için hiçbir zaman tam bir çözüm bulamadım, ancak çalıştırma, PYTHONUNBUFFERED=1 && fab ...her bir sunucunun, tamamının tamamlanmasını beklemek yerine, tamamlandığını göstererek biraz yardımcı olur. Yine de tamamen gerçek zamanlı bir çözüm bulmak istiyorum.
mVChr

3
Bu soruyu konu dışı olarak kapatmak için oy kullanıyorum, çünkü Sunucu Arıza için daha uygun görünüyor
Tamara Wijsman

1
unix komutlarından önce "stdbuf -oL" komutunu denediniz mi?
strobelight

Bay VarCharCharcoal Black broiled - Superuser.com'dan bu sorunun cevabını vermesine ne kadar memnun kaldınız? Hala ek bir ilgiye mi ihtiyacınız var? Belki sizin için keşfedebileceğimiz başka seçenekler de vardır. Başlığı, dikkat çekmek için daha çekici bir şeyle değiştirmeyi düşünebilirsiniz, örneğin uygulayabileceğiniz hızlı bir düşünce taktiği; Denemenin zararı ne?
Pezevenk Suyu BT

4
Bu soruyu konu dışı olarak kapatmak için oy kullanıyorum, çünkü burada tatmin edici bir cevap alamadı ve ServerFault'da daha fazla / daha iyi ilgi gösterebilir.
music2myear
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.