首先,背景这样一个有趣的挑战。 持续集成构建经常可以导致一个永无止境的测试死锁,循环,或其他问题的开发和测试过程中的故障。 因此,所有的机制用于通知build失败时变得毫无用处。
该解决方案将有构建脚本超时,如果有零点输出为超过5分钟生成日志文件,因为构建定期写出单元测试的名字因为它的收益。 所以这是识别它的“冻结”的最佳途径。
好的。 现在细节问题了...
构建服务器使用Hudson来运行调用基于南特和MSBuild的(所有在Windows上)的更复杂的构建脚本一个简单的bash脚本。
到目前为止,围绕网上,所有的解决方案包括对命令的总运行时间超时。 但是,这个解决方案在这种情况下将失败,因为测试可能会挂起,或在第5分钟冻结。
我们已经想到至今:
首先,这里的高层bash命令运行完整测试套件哈德森。
build.sh clean free test
这个命令只是将所有的南特和MSBuild的建立记录到标准输出。
很明显,我们需要的是三通输出到文件:
build.sh clean free test 2>&1 | tee build.out
然后在平行的命令需要睡觉,检查文件的修改时间,如果超过5分钟杀死主处理。 一个kill -9
将被罚款在这一点上-什么优美需要一旦冻结。
这是你可以帮助的部分。
事实上,我做了一个这样的剧本早在15年前杀人的休止期之后的数据电话线来日本的连接,但不记得我是怎么做的。
真诚,韦恩