git push

时间:2018-01-18 19:20:26

标签: azure-web-sites azure-deployment

简短版本:如何在不首先手动停止应用服务的情况下部署新版本?

长版: 我正在使用以下工作流程将新版本的ASP.NET Core应用程序发布到Azure App-Service。

App-Service正在基本实例上运行。我知道这不是真正的用途,但我希望在我们投入生产(标准实例)之前有一个很好的方法让这个工作流程运行。

这有效,但我怎样才能避免第4步到第7步?

  1. 将解决方案发布到本地文件夹。
  2. 将发布的内容移动到本地git仓库。
  3. 提交所有文件并推送到app-service。
  4. 从门户网站停止应用服务
  5. 进入控制台并删除wwwroot文件夹中的所有文件
  6. 从门户网站重新部署提交
  7. 启动app-service
  8. 我希望第3步中的推送会自动触发剩余的步骤。 在第3步之后,我可以看到文件已经更新,新的静态文件被提供给浏览器,但旧的二进制文件仍在运行。

    同样,我可以在门户网站上的部署插槽之间切换。我得到了新的静态文件,但之前部署的二进制文件仍在回答所有调用。

    这不起作用,静态文件已更改,但旧的二进制文件仍在响应调用。

    1. 从门户网站重新部署
    2. 重新启动app-service
    3. 仍旧提供旧二进制文件。

      这很有效。

      1. 停止app-service
      2. 从门户网站部署
      3. 启动app-service
      4. 运行的二进制文件似乎阻止了部署。 如何使用git push或门户网站自动部署,而无需手动停止服务?

        应用程序设置 App service Application settings

2 个答案:

答案 0 :(得分:1)

您需要在Azure App Service应用程序设置中启用msdeploy标志MSDEPLOY_RENAME_LOCKED_FILES = 1。如果设置了该选项,则msdeploy将重命名在应用程序部署期间锁定的锁定文件

单击应用程序设置并向下滚动,直至看到应用程序设置。 设置此键:MSDEPLOY_RENAME_LOCKED_FILES,其值为1

答案 1 :(得分:0)

  

如果没有先手动停止应用服务,我该如何部署新版本?

当我通过VS开发我的.Net Core Web应用程序时,我会利用发布向导,选中删除目的地的其他文件选项并通过设置{{1}来使用App offline support在发布配置文件下,将我的应用程序发布到Azure Web App。

enter image description here

根据您当前的部署工作流程,我假设您正在使用本地Git存储库对Azure App Service进行持续部署。更改源代码后,将更改提交到本地存储库,然后将源代码推送到我的Web应用程序远程存储库,源代码将构建并复制到Azure端的EnableMSDeployAppOffline。您可以关注的详细信息Local Git Deployment to Azure App Service

对于您的步骤1到3,我只是将代码更改从本地存储库推送到我的应用服务远程存储库。 Azure将生成部署脚本,以便您构建源代码项目并将构建的内容移动到D:\home\site\wwwroot。此外,您可以Custom Deployment Script来满足您的额外要求。