Вывод на консоль Jenkins не сбрасывает строку за строкой, хотя сценарий сбрасывается в локальной консоли
Я использую Jenkins с Perl TAP::Harness::JUnit с множественными тестовыми сценариями. Я не могу заставить Дженкинса перейти на консоль, пока не закончится один тестовый сценарий. Он просто буферизирует весь набор тестов и сбрасывает все сразу после завершения. Я получаю такие случаи, как:
- 11:56:19 1..2
- 11:56:19 нормально 1 - Test1
- 11:56:19 Фактическое время: 11:55:59: сейчас спим 20 секунд...
- 11:56:19 Фактическое время: 11:56:19
- 11:56:19 хорошо 2 - Test2
Я потратил на это две недели и знаю все нормальные решения, но ни одно из них, похоже, не работает. Я поставил merge => 1
в моем Perl TAP::Harness::JUnit и я знаю, что переплетает STDOUT с STDERR, но я перепробовал все способы сброса, и ничего не работает на выводе Jenkins Console.
Имейте в виду, если я попробую использовать тот же жгут в командной строке моей машины, все мгновенно исчезнет. я пытался stdbuf -i0 -o0 -e0
, stdbuf -oL -eL
, $|=1
, autoflush STDOUT 1
, печать в файл CMD 1>console.log 2>&1
, Ничего не работает
Это раздражает при выполнении показателей производительности, потому что я не могу соотнести высокое давление на процессор в такое-то время с временными метками в конкретных тестах, потому что временные метки не имеют смысла. Однако самое неприятное следствие заключается в том, что когда тест зависает или падает в середине тестового сценария, выходные данные не печатаются, поэтому я не могу знать, почему тест потерпел крах.