如何每5分钟将输出打印到Travis

时间:2019-06-24 21:36:32

标签: ansible yaml travis-ci

我有一个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 :(得分:0)

您可以这样打印到.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终止。