Keluaran konsol realtime Jenkins untuk perintah fabric berulir paralel [ditutup]

22

Kami memiliki perintah fabric Python yang berjalan secara paralel di beberapa host, seperti ini:

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

Ini akan menyalin cache ke server produksi yang terdaftar secara paralel. Ada berbagai pencatatan yang terjadi di seluruh proses untuk menunjukkan seberapa jauh kita karena dibutuhkan waktu berjam-jam untuk direktori cache XXgig. Karena penyalinan terjadi secara bersamaan, output ketika dijalankan pada baris perintah kembali bertautan secara real-time, seperti:

[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.

Namun, ketika tugas dijalankan melalui Jenkins, output konsol tidak ditampilkan sampai semua tugas selesai karena Jenkins mengelompokkan output SETELAH utas bergabung ketika semua utas selesai. Jadi, setelah semua perintah selesai outputnya terlihat seperti ini:

[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.

Meskipun ini lebih mudah dibaca, itu tidak ideal karena kami ingin melacak keadaan proses dengan membaca output konsol secara realtime. Perhatikan bahwa ketika perintah kain ini dijalankan tanpa yang --parallelpilihan output konsol tidak terjadi secara realtime , namun jelas ini bukan bisa diterapkan karena proses serial memakan waktu lebih lama untuk menjalankan.

Saya belum dapat menemukan pengaturan di Jenkins yang akan menonaktifkan pengelompokan utas ini. Adakah yang punya ide?

mVChr
sumber
4
Tidak pernah menemukan solusi lengkap untuk ini, tetapi menjalankan PYTHONUNBUFFERED=1 && fab ...sedikit membantu dengan menunjukkan setiap server saat selesai alih-alih menunggu semua selesai. Masih ingin mencari solusi yang sepenuhnya realtime.
mVChr
3
Saya memberikan suara untuk menutup pertanyaan ini sebagai di luar topik karena sepertinya lebih cocok untuk Kesalahan Server
Tamara Wijsman
1
sudahkah Anda mencoba sebelumnya dengan perintah unix dengan "stdbuf -oL"?
strobelight
Mr. VarCharpanggang Charcoal Black - Seberapa puas Anda dengan Superuser.com membantu memberikan jawaban untuk pertanyaan ini? Apakah Anda masih membutuhkan perhatian tambahan? Mungkin ada opsi lebih lanjut yang dapat kami jelajahi untuk Anda. Anda dapat mempertimbangkan mengubah judul menjadi sesuatu yang lebih menarik untuk menarik perhatian misalnya sebagai satu taktik berpikir cepat yang bisa Anda terapkan; apa salahnya mencoba.
Pimp Juice
4
Saya memberikan suara untuk menutup pertanyaan ini sebagai di luar topik karena belum mendapatkan jawaban yang memuaskan di sini dan dapat menerima lebih banyak / lebih banyak perhatian di ServerFault.
music2myear