如何在 Azure DevOps 中定义发布管道以实现可维护的蓝绿部署

How to define release pipeline in Azure DevOps for maintainable blue-green deployment

我正在 Azure DevOps 中重新创建我们非常 复杂的部署过程。 目前,我们的实时环境由负载均衡器后面的 4 个虚拟机组成。

我考虑的策略是一种蓝绿部署,只是每次我将处理 一半 (2) 个虚拟机。
这不像滚动部署,因为不会有 2 个版本同时 运行。

一旦我完成前半部分的部署并确保它已启动并 运行ning,我将连接它并立即断开另一半以将新版本也部署到它。

我现在不能按照书本(在新版本中部署完整的独立 VM 集)进行蓝绿,因为不幸的是 IP 是硬编码的。仅在部署时间使用 2 个虚拟机,实时环境就可以了。

我的问题是如何在 Azure DevOps 中为这种解决方案配置发布管道(我使用的是 GUI 版本,而不是 YAML)? (这些是阶段)

DbConversionDev > FirstHalfDev > SecondHalfDev > DbConversionQA > FirstHalfQA > SecondHalfQA > DbConversionProd > FirstHalfProd > SecondHalfProd

也许数据库转换阶段可以并行。

看起来很复杂,很难维护。 有什么建议么? 提前致谢:)

例如,您可以尝试为第一个组创建 deployment groups, e.g. First Group and Second Group - register your agents/VMs to the groups, and in the release pipeline, create Deployment Group job,然后添加验证部署是否成功的步骤 up/running,并在同一管道中创建另一个部署组第二个部署组的作业。 (注意:您可以为任何手动干预创建无代理作业)


编辑

以下是作为对话摘要的完整解决方案:

为每个环境(例如 Dev、QA、Prod)创建一个部署组,并将部署组中 Agents/VMs 的前半部分标记为蓝色,另一半标记为绿色。

在发布管道中,为每个环境(例如 Dev、QA、Prod)创建一个 Stage,并在一个 Stage 中为相应的部署组(Dev Stage -> Dev Deployment Group)创建 2 个 Deployment Group Jobs,每个 Job带有不同的标签:蓝色和绿色。这将确保在一个作业中一半的 VM 将受到部署的影响。

出于可重用性目的,将您的任务分组到任务组中,以便在您的部署组作业中重用它们。