首先介绍这个有趣的挑战。在开发和测试死锁,循环或导致永无止境的测试的其他问题期间,持续集成构建通常会失败。所以通知构建失败的所有机制都变得毫无用处。针对Linux命令的I/O上的简单超时
该解决方案将有构建脚本超时,如果有零点输出为超过5分钟生成日志文件,因为构建定期写出单元测试的名字因为它的收益。所以这是识别“冻结”的最佳方式。
好的。现在的基本...
构建服务器使用Hudson运行一个简单的bash脚本,该脚本调用基于Nant和MSBuild(全部在Windows上)的更复杂的构建脚本。
到目前为止四处撒网的所有解决方案涉及的命令的总运行时间超时。但是这种解决方案在这种情况下失败了,因为测试可能会在前5分钟内挂起或冻结。
我们已经想到至今:
首先,这里的高层bash命令运行完整测试套件哈德森。
build.sh clean free test
,简单地命令将所有的南特和MSBuild的建立记录到标准输出。
很明显,我们需要三通是输出到文件:
build.sh clean free test 2>&1 | tee build.out
然后平行命令需要睡觉,检查修改文件的时间,如果超过5分钟杀死的主要过程。 A kill -9
在这一点上将会很好 - 一旦冻结就没有优雅的需要。
这是你可以帮助的部分。
其实,我做了这样一个剧本早在15年前杀人的休止期之后的数据电话线来日本的连接,但不记得我是怎么做的。
真诚, 韦恩
的OP被要求超时**没有书面内容五分钟后* *,而不是五分钟的挂钟时间,而不管输出。 (否则,问题将会是https://stackoverflow.com/questions/5161193/how-to-kill-a-child-process-after-a-given-timeout-in-bash的重复) – 2017-11-02 19:22:51