Azure DevOps 动态发布管道创建

标签 azure azure-devops azure-web-app-service

我目前正在规划一种 Multi-Tenancy 系统,通过 ARM 模板为客户部署具有一组应用服务的不同资源组。因此,每个客户都有自己的资源组和一组应用服务。目前,我们使用 Azure DevOps 部署到一组用于开发和质量保证的应用服务,然后再投入生产。我现在正在尝试将 DevOps 纳入其中,自动创建某种管道...(它将是现有管道的副本,但仅更改目标应用程序服务)。我的问题来自于,有没有一种方法可以动态创建或编辑发布管道来添加这些新应用程序服务的部署,而不需要手动编辑或创建管道并添加这些新创建的应用程序服务,我在想一些事情围绕能够复制 yaml 文件模板,然后在创建这些 AppServices 后替换必要的信息以指向它们,但我不完全确定在哪里可以存储新的 yaml 文件以便 Azure 拾取它DevOps,或者我如何才能完成这些,主要思想是所有这些仍然是自动化流程的一部分(如果可能的话)。

非常感谢您的帮助,如有建议,我们将不胜感激。

编辑:

问题不在于如何通过 DevOps 发布管道部署 ARM 模板(我计划使用 PowerShell 脚本/REST API 来完成此任务),而是关于何时创建 AppServices 资源,我需要部署将代码添加到那些新创建的 AppServices 中,并在必要时更新该代码(希望通过发布管道),每次部署一组新资源时都会以某种方式生成一个新的发布管道。这样,当有新的更新时,我可以轻松触发该管道并设置 AppService 是否可以更新(作为“动态”自动化过程的一部分创建)。 (我已经有一个类似的管道,可以部署到一组“静态”AppServices)。

最佳答案

正如您使用 YAML Pipelines 所逃避的那样,这是可能的。根据您订阅的场景,每个存储库都会有自己的 pipeline.yml 文件,用于定义触发器、池等。它还将引用一个用于容纳您的 yaml 模板的存储库。

模板将接受您可能需要的任何参数(资源组、应用服务名称等)。与每个存储库关联的触发管道将利用团队板传递此信息。

通过执行此操作,可以将 CI/CD 设置为在各个管道上触发并部署适当的代码,同时利用相同的 YAML 模板。

存储库引用类似于:

resources:
  repositories:
  - repository: YAMLTemplates
    type: git
    name: OrginazationName/YAML Project Name

对模板的调用类似于:

- template: azure-ARM-template.yml@YAMLTemplate
  parameters:
    appServiceName: 'AppServiceName'
    resourceGroupName: 'ResourceGroupName'

更新
在较高级别上,YAML 管道将由以下部分组成。如果所有应用服务都与所述类似,并且 ARM 模板也类似,那么如何根据文件夹路径构建和触发它:

在适当的阶段发布每个环境的部署部分,以帮助减少复制和粘贴的工作量。上述每个任务可以是模板的一部分,可以单独作为任务、任务组合或全部作为模板的一部分。这将允许定义一次 YAML 并引用它,并根据需要包含应用程序特定组件作为模板的参数。

关于Azure DevOps 动态发布管道创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64433399/

相关文章:

azure - Azure Linux Web 应用程序上的 ASP.NET Core NodeServices

spring - 使用 Gradle 将 Spring Boot JAR 部署到 Azure Web 服务

azure - 使用ARM模板部署时如何获取Application Insights应用程序ID?

azure - 是否有 VSTS 构建任务可以从注册表中删除未使用的 Docker 容器?

swift - 如何修复azure devops构建代理中的 ' *pod* does not support provisioning profiles'

.net - HTTPS 重定向在本地有效,但在 azure 上无效

azure - 无法在 azure 媒体服务 v3 中对包含两个视频的 Assets 进行编码

azure - 如何使用 Azure 资源管理器模板创建虚拟应用程序/文件夹?

azure - 什么是 Azure Web 角色

azure - ADF CI 构建错误 : Command failed: node/home/shaadmin/myagent/_work/5/s/adf/build/downloads/main. js 验证