【问题标题】:Deploying webjob with "Azure app service deploy" and Remove additional files at destination option使用“Azure 应用服务部署”部署 webjob 并在目标选项中删除其他文件
【发布时间】:2017-03-17 07:41:52
【问题描述】:

我正在尝试在 VSTS 上的单个版本定义中部署多个 Web 作业。

我的问题是我的网络作业中包含的文件可能会更改(添加/更新/删除)。默认情况下,当使用任务Azure app service deploy 部署新版本时,不会从服务器中删除现有文件。这会导致我的网络作业中已弃用的文件保留在我的服务器上并导致错误。

为了解决我的问题,我尝试启用“在目标位置删除其他文件”。但由于我必须在单独的任务中部署每个 webjob(Azure app service deploy 仅支持单个 web 包),因此每次连续部署都会删除先前部署的 webjob 的文件。

知道如何轻松解决这个问题吗?

目前我唯一的猜测是通过 powershell 连接到 web 应用程序并使用 commandlet Remove-AzureWebsiteJob 删除现有的 webjob。
但我对此的主要担忧是删除整个网络作业,我认为这也会删除他们的日志和执行历史......

【问题讨论】:

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


【解决方案1】:

通过使用wawsdeploy tool,有一种方法可以做到这一点,但没有详细记录。

从 Chocolatey 获得工具后:

  • 从门户下载应用的发布配置文件。
  • 转到包含要为特定 WebJob 部署的文件的文件夹。
  • 运行:wawsdeploy . c:\folderwithyourprofile\YourApp.PublishSettings /t D:\home\site\wwwroot\App_Data\jobs\continuous\YourJob /d

在这里,/d 会导致它删除该文件夹中的所有未知文件,因此它不会触及您的其他 WebJobs。您可以先尝试在不使用 /d 的情况下运行它,以熟悉该工具并确保它在开始删除内容之前将文件放在正确的位置。

请注意,仅使用 msdeploy 命令行也可以执行类似的操作,但它需要一组极其复杂的参数。请参阅我的post 了解有关此的一些详细信息。

【讨论】:

  • 感谢您的解释,但我的构建/发布定义在 VSTS 托管代理上运行,它不允许我任何管理权限(例如使用 choco 或在代理上安装新软件包)。我会看看你的文章,好像 WAWSDeploy 只是 msdeploy 的一个包装器,如果我能通过开销,我应该能够达到相同的结果
  • 是的,您应该可以直接使用 msdeploy.exe,但命令行语法令人生畏。 VSTS 没有你可以使用的 msdeploy 任务吗?
  • 这些都不允许我只清理我的 azure web 应用程序上的 webjob 文件夹
  • 那么他们可能不会暴露 msdeploy 的全部功能。指定物理目标的能力是一个相当高级(并且很少使用)的 msdeploy 功能。我实际上并不完全确定如何通过直接的 msdeploy cmd 行来做到这一点(但它必须是可能的)。
  • 你可以使用这个powershell stackoverflow.com/questions/43801618/…
猜你喜欢
  • 2019-10-01
  • 2019-08-02
  • 1970-01-01
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-18
相关资源
最近更新 更多