1

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

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

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

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

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

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

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

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

4

1 回答 1

3

例如,您可以尝试创建部署组,例如第一组和第二组 - 将您的代理/虚拟机注册到组,然后在发布管道中,为第一组创建部署组作业,然后添加步骤以验证部署成功并启动/运行,并在同一管道中为第二个部署组创建另一个部署组作业。(注意:您可以为任何手动干预创建无代理作业)


编辑

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

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

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

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

于 2020-03-17T14:24:38.820 回答