通过 Azure DevOps 将多个应用程序部署到同一个 Azure Web 应用程序

Posted

技术标签:

【中文标题】通过 Azure DevOps 将多个应用程序部署到同一个 Azure Web 应用程序【英文标题】:Deploy multiple Application to the same Azure web app viaAzure DevOps 【发布时间】:2021-03-01 20:19:18 【问题描述】:

我有两个应用程序,后端和前端,托管在同一个 Azure Web 应用 (os : windows)

其实我是通过FTP/S来部署这两个artficats的。

我在前面使用wwwroot folder,在后端使用wwwroot folder 中的子文件夹

我会使用 Azure Devops 创建一个 Azure Release,以将这两个应用程序部署到我的 Web 应用程序。

我不能为后端和前端使用两个应用服务。

部署的最佳方法是什么?并且可以将 Azure App 服务中的子文件夹目标指定到 Azure 版本中吗?

问候

【问题讨论】:

【参考方案1】:

无法使用deployment tasks 在 azure 发布管道中指定要部署到的子文件夹。默认情况下,工件将部署到 wwwroot 文件夹。

但是,您可以在发布管道中使用 copy files task 将后端工件复制到位于前端工件文件夹中的子文件夹中。然后部署前端工件文件夹,该文件夹在其子文件夹中包含后端工件。见下文:

您还可以在azure powershell task 中运行Kudu rest api 以部署到Azure Web 应用服务。

您可以先使用command api 在 wwwroot 中创建一个子文件夹。


 "command" = 'md subfolder',
 "dir"='D:\home\site\wwwroot'

然后您可以使用 zip deploy api 将后端工件部署到子文件夹

$apiUrl = "https://sitename.scm.azurewebsites.net/api/zip/site/wwwroot/subfolder"

请查看this blog 了解更多信息。参见this thread 例如使用 azure powershell 任务调用 kudu rest api

【讨论】:

部署前端时,后端的文件夹会被删除,是吗? @Andrelemarchand 我测试并发现子文件夹是否是由 kudu api 创建的。将前端部署到wwwroot时不会删除子文件夹。 使用 azure devops 部署时? @Andrelemarchand 是的 wwwroot文件夹有两个artficats,如果我用kudu api将后端部署到wwwroot的子文件夹,如果我部署前端,这个文件夹不会被删除?

以上是关于通过 Azure DevOps 将多个应用程序部署到同一个 Azure Web 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 azure devops YAML 管道中将单个代理用于多个作业/阶段

Azure DevOps - 将 Web 应用程序部署到 IIS

使用 Azure DevOps 部署具有不同名称的 Service Fabric 服务

通过 Terraform Helm 提供程序和 Azure DevOps 部署 helm 图表,同时从 ACR 获取 helm 图表

DevOps 和 Azure 应用服务中的环境变量

如何通过 SSH 在 azure devops 管道复制文件中使用公钥