在Azure App Service Deploy中查找Azure插槽位置

时间:2019-05-23 19:56:59

标签: azure azure-devops azure-pipelines-release-pipeline

如何在Azure App Service Deploy-Azure Slot上查找已部署网站的目标路径?

我需要删除目标特定文件夹中的现有旧文件,这些文件是在每个发行版中唯一生成的(在构建过程中)。

这必须在预部署期间完成。

我使用了“不删除文件任务”。这是YAML。

在Kudu中,我可以看到我的网站位置是D:\ home \ site \ wwwroot \

我想从路径 D:\ home \ site \ wwwroot \ scripts \ libs>

中删除文件

步骤:

  • 任务:DeleteFiles @ 1

    displayName:“从$(build.artifactstagingdirectory)中删除文件”

    输入:

    SourceFolder:'$(build.artifactstagingdirectory)'

    内容:“ scripts \ libs **”

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

您不必手动删除App Service实例或其部署插槽上的旧文件。使用Azure App Service部署任务时,您可以使用内置选项删除目标上的所有未使用文件(在本例中为App Service实例/部署插槽)。这是方法。

在“ Azure App Service部署”任务上,

  1. 展开其他部署选项
  2. 确保已选中选择部署方法复选框
  3. 部署方法下拉列表中,选择 Web部署
  4. 选中删除目标位置的其他文件复选框
  5. 如果您想保留与App Service Extensions或WebJobs一起安装的任何文件,请选择从App_Data文件夹中排除文件

这将执行的操作是将目标(应用程序服务)处已存在的文件与将从工件中复制过来的文件进行比较。然后它将删除您要部署的工件中不可用的任何文件。

答案 1 :(得分:0)

  

在azure App Service Deploy中查找Azure插槽位置

您可能无法删除正确的文件夹。

根据您问题中的第一张图片,我们可以知道您正在从文件夹$(build.artifactstagingdirectory)中删除文件。

我们知道,文件夹$(build.artifactstagingdirectory)代理上任何工件被复制到目的地之前被复制到的本地路径

检查Build variables了解更多详细信息。

但是,我没有在您的构建定义中找到任何将文件复制到工件的任务。

此外,您说的是删除目标特定文件夹中的现有旧文件,这些文件是在构建过程中唯一生成的。

所以,我大胆地猜测要删除的文件应该位于System.DefaultWorkingDirectory中,而不是artifacts中。但是我对此不太确定,因为我无法从路径D:\home\site\wwwroot\scripts\libs>区分文件夹类型。

因此,要解决此问题,您可以尝试从$(System.DefaultWorkingDirectory)删除文件。

或者您可以使用Inline Powershell任务得出$(build.artifactstagingdirectory)的值:

Write-Output '$(Build.ArtifactStagingDirectory)'

然后检查该值是否与您要删除的文件夹D:\home\site\wwwroot\scripts\libs>的路径匹配。

希望这会有所帮助。