Как напечатать вывод в Travis Каждые 5 минут - PullRequest
0 голосов
/ 25 июня 2019

У меня есть сборка travis CI, которая продолжает давать сбой.Ошибка: ..

Задание превысило максимальную длину журнала и было прервано.

Я погуглил возможные причины ... одна из которых ..

... Если из сборки не получен вывод в течение 10 минут, предполагается, что он остановился по неизвестным причинам и впоследствии уничтожен.

Итак, чтобы проверить, является ли этоэто реальная ошибка, я хотел добавить таймер, который регистрирует вывод каждые 5 минут.Раньше я никогда не играл с языком Ansible.

Это мой текущий код ..

before_script:
  - |
      - while sleep 5m; do echo "=====[ $SECONDS seconds, buildroot still building... ]====="

Это то, чего я хочу достичь .. Следуя советам из этого блога https://blog.humphd.org/building-large-code-on-travis/

=====[ 495 seconds, buildroot still building... ]=====
=====[ 795 seconds, buildroot still building... ]=====
=====[ 1095 seconds, buildroot still building... ]=====
=====[ 1395 seconds, buildroot still building... ]=====
=====[ 1695 seconds, buildroot still building... ]=====
=====[ 1995 seconds, buildroot still building... ]=====
=====[ 2295 seconds, buildroot still building... ]=====
=====[ 2595 seconds, buildroot still building... ]=====
=====[ 2895 seconds, buildroot still building... ]=====

1 Ответ

0 голосов
/ 29 июня 2019

Вы можете печатать на выходе внутри .travis.yml примерно так:

language: sh
before_script:
  - while travis_wait 50 sleep 300 &> /tmp/build.log || (tail -n 100 /tmp/build.log && exit 1); do echo "=====[ $SECONDS seconds, buildroot still building... ]====="; done

В этом примере мы используем функцию travis_wait для команды сна.Чтобы избежать распечатки внутреннего содержимого на консоль, мы выводим вывод из travis_wait во временный файл журнала, если это удалось, в противном случае мы печатаем последние 100 строк журнала и завершаем работу с кодом состояния 1 перед фактическим выводом.

...