2016-04-14 113 views
0

我正面臨着下面的問題.. 假設你運行一個詹金斯工作,由於某種原因,詹金斯死亡,它可能是一個超時問題,或類似這樣的.. 。詹金斯,工作死亡,工作區被鎖定

Build timed out (after 40 minutes). Marking the build as aborted. 
Build was aborted 

的問題是,同樣的工作在下次運行時,它失敗,因爲:

ERROR: Cannot delete workspace: remote file operation failed: C:/Jenkins /workspace/... at [email protected]:WIN-CI: java.nio.file.FileSystemException: C:\Jenkins\workspace\....cucumber-html-report\report.js: The process cannot access the file because it is being used by another process. 

任何想法?這似乎是一個容易解決的問題,但事實並非如此,因爲似乎刪除工作區的唯一方法是停止代理程序刪除代理程序並重新啓動代理程序,這聽起來有點與解決方案相反從詹金斯跑,我的意思是,如果刪除工作空間的條件是停止代理,這不能被管理遠程...

我覺得是非常普遍的東西,所以我會等待你的偉大建議! :)

+0

也許值得在Jenkins中止構建失敗後檢查哪個進程鎖定了文件'... \ report.js'。 – SubOptimal

+0

已經知道,它是一個運行googlechrome驅動的黃瓜插件,最後鎖定目錄,不幸的是插件團隊無法修復它...聽起來總是一樣的故事:) – ivoruJavaBoy

+0

您的構建通常需要多長時間?如果接近40分鐘,增加構建超時可能會阻止這種情況。如果它通常比40分鐘短得多。我不知道是否有辦法從遠程殺死黃瓜插件。 – SubOptimal

回答

0

也許你可以在你的pre-SCM build step中使用Sysinternals handle.exe來解鎖report.js

當我們的環境中發生類似的故障時,當一個新的補丁集被推送到相應的Gerrit變更(JENKINS-12513)時,Jenkins Gerrit插件會在運行中途中止中構建git-checkout

要解決這個問題,我們增加了一個pre-SCM build step調用所使用handle.exe所有打開的句柄報告index.lock在工作區中,關閉它們,然後刪除鎖定文件(S)的Python腳本。這是安全的,因爲我們的工作有自己的工作空間,沒有併發。