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

时间:2017-03-20 02:34:23

标签: azure deployment azure-web-sites

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

请注意:

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

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

1 个答案:

答案 0 :(得分:8)

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

最后我会问到几个问题。

步骤如下:

  • 首先,将您的zip托管在云中。例如我在这里有一个测试,您可以使用:https://davidebbostorage.blob.core.windows.net/arm/FunctionMsDeploy.zip(请注意,此zip使用特殊的msdeploy打包,但您也可以使用普通的旧zip,只包含您的文件)。
  • 然后使用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
    

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

现在有几个陷阱:

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