提问人:user22830509 提问时间:10/31/2023 更新时间:10/31/2023 访问量:45
IaC 部署应该是 CI 生成还是发布的一部分?
Should the IaC deployment be part of the CI build or the release?
问:
我有一个用例,我想请您提供建议。我在 Azure 应用服务中托管了一个 .NET 应用程序。
我想控制基础结构的配置状态(Azure 应用服务 + 一些依赖项,如 Azure 存储 Application Insights)。我有一个 Azure ARM 模板,可以使用增量模式进行部署。
有两种不同的选项:
- 将 ARM 模板部署包含在生成管道中。
- 将 ARM 模板部署包含在发布管道中。
可能还有另一种选择 - 创建管道或发布并计划它(假设每晚触发它以部署 ARM 模板)。
您如何看待此案?这里的最佳实践是什么?
我想知道我应该在哪里运行 ARM 模板部署以及原因。
答:
最佳做法应该是选择最适合您需求的方法。
- 将 ARM 模板部署包含在生成管道中。
如果使用的是经典生成管道,它可以确保在更新代码时更新基础结构。同时,缺点是无论更新的代码是否与 arm 模板相关,都会重复部署。
如果使用的是 YAML 生成管道,则可以使用多阶段管道,该管道将生成和发布阶段合并到单个 YAML 文件中。这样,您可以在一个位置定义整个部署周期,并对 CI 和 CD 使用相同的语法和格式。多阶段管道还支持环境、部署策略和审批等功能。YAML 编辑器需要更熟悉 YAML 文件的语法和结构。请参阅示例:使用 Azure DevOps 创建多阶段管道See sample: Create a multistage pipeline with Azure DevOps
- 将 ARM 模板部署包含在发布管道中。
这样,就可以使用生成管道中的项目,并将其部署到各个阶段,例如开发、测试和生产。发布管道还可以具有其他功能,例如审批、用于控制部署过程的入口。经典发布流水线允许您使用图形界面来定义流水线步骤和任务,与 yaml 相比,这很容易使用。请参阅此处的文档。
您可以参考以下类似问题:Azure DevOps 中的管道和发布管道之间有什么区别?和Azure DevOps中的生成管道和发布管道有什么区别?。
然后,您可以决定哪种更适合您的情况。
评论