0

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

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

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

有谁知道天蓝色或章鱼是否发生了变化?

4

1 回答 1

0

部署期间文件可能被锁定的原因有很多。通过使用kudu 进程浏览器,您应该能够了解可能锁定文件的内容,您可以使用 url 访问该浏览器{yoursite}.scm.azurewebsites.net

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

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

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

于 2019-01-10T02:58:51.707 回答