我目前正在使用 Azure DevOps Release Pipelines(经典 UI,而不是 YAML)开发一个整体应用程序。该应用程序需要部署到 11 个生产环境,每个环境都需要自己独特的任务集,以确保零停机更新。
我面临的问题是:
复杂的 UI:为了适应所有 11 个生产环境,发布管道现在具有大量阶段。我已经到了 29 个阶段,而且我还没有完成所有环境的配置。管理和可视化管道变得异常困难。
重新运行失败的阶段:如果我尝试将多个环境分组在一个阶段中以减少阶段数量,问题是如果该阶段中的任何作业失败,我将被迫重新运行整个阶段。 Azure DevOps 经典管道不允许在一个阶段内重新运行单个作业,当只有一个环境发生故障时,这会令人沮丧。
无停机时间:每个环境都需要特定的任务和作业,以确保无停机更新。这些任务因环境而异,因此我无法使用“一刀切”的方法或共享模板。
我想要一种更清晰的方式来构建此发布管道以实现以下目标:
我尝试过的:
是否有更好的方法来简化这个经典的 Azure DevOps 发布管道?我需要这样的东西:
必须有一种方法可以做到这一点,或者发布管道是否不适合单片应用程序需要通过一个阶段?我只能使用 YAML 吗?
提前致谢!
这可能不是您期望听到的答案,但是巨大的管道或阶段将如何解决您面临的问题?您的第一个(可能也是最重要的)目标应该是减少复杂性,而不是管道、阶段和/或作业的数量。
在短期/中期策略中)考虑:
为每组任务创建任务组,以便跨管道/阶段/作业重用功能
为每个环境创建管道,以降低复杂性并能够独立管理每个环境
根据功能逻辑地组织阶段和作业,并考虑哪些阶段和作业可以(或应该)一起运行,以防失败
这 3 个步骤应该可以帮助您解决大部分问题。
长期策略是使用 YAML 管道和可重用的模板来管理您的管道。