【问题标题】:Error "Web Deploy cannot modify the file on the destination because it is locked by an external process" in Octopus deployOctopus deploy 中的错误“Web Deploy 无法修改目标上的文件,因为它已被外部进程锁定”
【发布时间】:2019-01-08 12:25:10
【问题描述】:

我们正在使用 Octopus deploy 部署到 azure。我们使用它已经一年多了,突然间(大约 3 周前)我们开始在少数部署中遇到错误。

Microsoft.Web.Deployment.DeploymentDetailedClientServerException:Web 部署无法修改目标上的文件“msvcr120.dll”,因为它已被外部进程锁定。为了使发布操作成功,您可能需要重新启动应用程序以释放锁定,或者在下次尝试发布时为 .Net 应用程序使用 AppOffline 规则处理程序。了解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE

我们的 web 应用程序一直在运行,并且我们将应用程序设置为 'MSDEPLOY_RENAME_LOCKED_FILES' 为 1,理论上可以防止这种情况发生。

有人知道 azure 或 octopus 中是否发生了某些变化吗?

【问题讨论】:

  • 嗨,Adria,您最近升级了 Octopus 还是在没有任何更改的情况下开始发生这种情况?
  • 我们没有升级八达通,我不认为我们对流程有任何改变

标签: azure octopus-deploy octopus


【解决方案1】:

在部署期间文件可能被锁定的原因有很多。您应该能够使用kudu process explorer 了解可能锁定文件的内容,您可以使用网址{yoursite}.scm.azurewebsites.net 访问它。

为了完全避免锁定问题,如果您愿意,可以使用插槽来实现零停机部署。在这种情况下,您可以停止站点或启用 App Offline,这应该解锁任何文件并允许部署成功,之后插槽交换将使部署生效。 App Offline 优先于使用 MSDEPLOY_RENAME_LOCKED_FILES,但会在部署期间使应用程序脱机。 Octopus 也支持此作为 Deploy an Azure Web App 步骤本身的选项,因此即使没有插槽也值得一试。

您可以使用自定义的部署前/部署后脚本作为 Deploy an Azure Web App 的一部分,以利用 Stop-AzureRmWebAppSlotStart-AzureRmWebAppSlotSwitch-AzureRmWebAppSlot Powershell commands Azure 命令行开关来实现上述目的。

另一种方法可能是使用 zip 部署,但是,Deploy an Azure Web App Octopus 步骤还没有对此提供一流的支持。如果这是您想要做的,它仍然可以使用 Run an Azure PowerShell Script 以及包引用来实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    相关资源
    最近更新 更多