首先介紹這個有趣的挑戰。在開發和測試死鎖,循環或導致永無止境的測試的其他問題期間,持續集成構建通常會失敗。所以通知構建失敗的所有機制都變得毫無用處。針對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