清除App Service实例并从zip文件上载新内容

Ale*_*zzi 4 deployment azure azure-web-sites

在App Service上,从zip文件部署新内容的最佳方式是什么,以便替换任何现有内容?

请注意:

  • 我在linux上运行
  • 我不能使用msdeploy
  • 我不能用git
  • 我不能使用VSTS
  • 它需要简单
  • 它不容易超时
  • 它必须得到App Service所有订阅级别的支持
  • 命令只应在各自的操作完成后返回
  • 我可以访问ARM模板
  • 如果它不那么困难,我相信我可以将文件上传到存储blob

有关详细信息,请参阅此处的讨论:https://github.com/projectkudu/kudu/issues/2367

Dav*_*bbo 8

有一个解决方案,包括调用ARM msdeploy提供程序来部署云托管zip包.这在您的客户端上不需要msdeploy,因此涉及msdeploy技术的事实主要是您可以忽略的实现细节.

我最后会打电话给几个陷阱.

步骤是:

  • 首先,将您的zip托管在云中.例如,我在这里有一个测试,你可以玩:https://davidebbostorage.blob.core.windows.net/arm/FunctionMsDeploy.zip(注意这个zip使用特殊的msdeploy包装,但你也可以使用普通的只用你的文件压缩).
  • 然后使用cli 2.0运行以下命令,替换您的资源组,应用程序名称和zip url:

    az resource update --resource-group MyRG --namespace Microsoft.Web --parent sites/MySite --resource-type Extensions --name MSDeploy --set properties.packageUri=https://davidebbostorage.blob.core.windows.net/arm/FunctionMsDeploy.zip --api-version 2015-08-01
    
    Run Code Online (Sandbox Code Playgroud)

这将导致程序包部署到您的wwwroot,并且任何不在zip中的现有内容都将被删除.这是有效的,因为它不会触及任何已经存在的文件,并且与zip中的文件相同.所以它比试图清理所有东西和解压缩干净要快得多(但结果是相同的).

现在有几个陷阱:

  • 由于CLI 2.0中的错误,我无法传递包含等号的URL,这会排除SAS URL.我会向他们报告.现在,使用公共zip测试流程,就像上面的测试包一样.
  • 命令行比它应该更复杂.我还会向CLI小组询问此事.