Azure 集成 CICD 的最佳实践
Best practice for Azure Integration CICD
我们有一堆逻辑应用程序、Azure 函数、服务总线等,可满足多种集成用例的需求。所有资源目前都在开发资源组中,我们希望将其发布到测试中,并最终使用 CICD 发布到生产资源组中。
问题
我们拥有所有资源,包括 ARM 模板中的逻辑应用程序,每次工作流程中的某些内容作为错误修复或新版本的一部分发生变化时,整个逻辑应用程序是否需要部署还是只能部署工作流?
如果没有对逻辑应用或任何其他资源进行任何更改,再次部署其 ARM 模板是否会产生任何副作用?
您的问题的答案将根据您将要使用的部署模式以及您的资源在 ARM 模板中定义的结构而改变。
将资源部署到 Azure 资源组时,必须设置部署模式:
- 完成:替换目标 RG 中的所有内容
- 增量:仅将更改应用于目标 RG 内的资源,这些资源是部署包的一部分。
查看完整文档here
根据您构建 ARM 模板的方式(所有资源都在一个 ARM 模板中,每个资源 1 个 ARM 模板,...),您将能够定义 Azure 资源的目标量单个部署管道。
现在,回答您的问题:
Q1:确保在您的 ARM 模板中具有定义明确的结构。
例如,创建一个 infrastructure-ARM 模板 + CI/CD-pipelines,它将只处理基本组件的 creation/configuration,例如存储帐户、服务总线、...
接下来,创建一个 domain/interface-specific 模板 + 管道,它只处理单个界面所需的那些逻辑应用程序等。
这样,如果您 modify/fix 作为特定界面一部分的逻辑应用程序,将仅重新部署该特定界面。
Q2:即使使用增量部署模式,所有设置也会重新应用 -> 确保您的部署过程可以处理(重新)存储状态(如果需要)。
我们有一堆逻辑应用程序、Azure 函数、服务总线等,可满足多种集成用例的需求。所有资源目前都在开发资源组中,我们希望将其发布到测试中,并最终使用 CICD 发布到生产资源组中。
问题
我们拥有所有资源,包括 ARM 模板中的逻辑应用程序,每次工作流程中的某些内容作为错误修复或新版本的一部分发生变化时,整个逻辑应用程序是否需要部署还是只能部署工作流?
如果没有对逻辑应用或任何其他资源进行任何更改,再次部署其 ARM 模板是否会产生任何副作用?
您的问题的答案将根据您将要使用的部署模式以及您的资源在 ARM 模板中定义的结构而改变。
将资源部署到 Azure 资源组时,必须设置部署模式:
- 完成:替换目标 RG 中的所有内容
- 增量:仅将更改应用于目标 RG 内的资源,这些资源是部署包的一部分。
查看完整文档here
根据您构建 ARM 模板的方式(所有资源都在一个 ARM 模板中,每个资源 1 个 ARM 模板,...),您将能够定义 Azure 资源的目标量单个部署管道。
现在,回答您的问题:
Q1:确保在您的 ARM 模板中具有定义明确的结构。 例如,创建一个 infrastructure-ARM 模板 + CI/CD-pipelines,它将只处理基本组件的 creation/configuration,例如存储帐户、服务总线、... 接下来,创建一个 domain/interface-specific 模板 + 管道,它只处理单个界面所需的那些逻辑应用程序等。 这样,如果您 modify/fix 作为特定界面一部分的逻辑应用程序,将仅重新部署该特定界面。
Q2:即使使用增量部署模式,所有设置也会重新应用 -> 确保您的部署过程可以处理(重新)存储状态(如果需要)。