2017-04-06 66 views
0

在說明問題之前,我知道這可能是更多的服務器管理問題,但我正在尋求一個解決方案,涉及修復/修改VSTS發佈過程而不是處理服務器權限(我不相信這是服務器問題)。VSTS發佈由於在遠程服務器上使用的文件而失敗

我有一個VSTS構建定義和發佈定義。 版本定義將構建中的文件複製到遠程服務器(IIS站點)。

我的問題是,這個過程大概60%的時間內失敗。

日誌文件表示失敗的錯誤:

2017-04-06T17:06:07.3886551Z Executing the powershell script: D:\BuildAgent\agent\tasks\IISWebAppDeploy\1.4.3\Main.ps1 
2017-04-06T17:06:07.5605268Z Starting deployment of IIS Web Deploy Package : \\server01\Deploy\patrol\dev\rest_service\822\822.zip 
2017-04-06T17:06:07.6542742Z Performing deployment in parallel on all the machines. 
2017-04-06T17:06:07.6542742Z Deployment started for machine: SERVER01 with port 5985. 
2017-04-06T17:06:27.9820654Z Deployment status for machine SERVER01 : Failed 
2017-04-06T17:06:28.0133029Z Deployment failed on machine SERVER01 with following message : System.Exception: Error Code: ERROR_FILE_IN_USE 
2017-04-06T17:06:28.0445759Z ##[error]Microsoft.PowerShell.Commands.WriteErrorException: Deployment on one or more machines failed. 
2017-04-06T17:06:28.0445759Z ##[error]For more info please refer to http://aka.ms/iisextnreadme 

我通過手動遠程處理到服務器並手動刪除目標目錄的內容circumvate的問題。我發現每次發佈失敗時,我的手動刪除都會導致一個警告,以彈出另一個進程正在使用某個.exe文件。我的懷疑是這是釋放失敗的原因。

是否有一些額外的步驟可以添加到發佈強制刪除/清除目標目錄?

+2

您應該改爲識別*使用該文件的進程*。然後作出安排,停止該過程作爲您的發行版的一部分,然後重新啓動它。或者消除這個過程。請參閱[如何找到在Windows中打開文件的過程?](http://serverfault.com/questions/1966) – mason

+0

您可以共享哪個文件正在使用以及哪個進程正在使用它,就像mason提到的那樣? –

+0

IIS Web部署步驟/任務有Take App Offline選項,請嘗試檢查此選項。另一方面,在部署之前嘗試停止相應的網站。 (https://marketplace.visualstudio.com/items?itemName=Lemoinek.IISutilities) –

回答

0

您可以使用Windows Machine File Copy任務將構建中的文件複製到遠程服務器。並選擇清理目標,以便在將文件複製到遠程服務器之前,首先清理目標目標文件夾。

enter image description here

+0

是的,這是我遵循的過程。我在我的發佈中有這一步。我認爲問題在於,由於文件被鎖定我不明白爲什麼它只是失敗了一些時間,雖然....被複制的文件是一個.net核心mvc應用程序,並且服務器使用IIS 7. –

+0

但是Windows機器文件的電源shell腳本副本應該調用'\ path \ to \ agent/\ _ work \ _tasks \ WindowsMachineFileCopy_731004d4-1d66-4f70-8c05-638018b22210 \ 1.0.40 \ WindowsMachineFileCopy.ps1'。 –

相關問題