通过Azure DevOps只需一个发布流程部署多个应用程序

3
我需要使用Azure DevOps将许多类似的应用程序部署到相同的环境中。
有哪些方法可以共享和维护这些应用程序的发布过程,以避免在更改时更新每个应用程序的发布过程?
背景:
1. 我有数十个具有相同发布流程的类似应用程序。 2. 每个应用程序(在其自己的存储库中)都将拥有自己的Azure Pipeline。 3. 我对此问题的自定义解决方案感到满意。
选项:
  1. 为每个管道创建一个发布版本 -- 不太喜欢!
    • 缺点:Azure似乎希望在管道和发布之间建立一对一的关系。
    • 缺点:我想尽可能避免创建许多发布版本,因为更改将几乎无法维护。
  2. 使用自定义阶段模板 -- 不符合我的需求

    • 缺点:发布不共享自定义阶段模板。

      您创建的自定义模板仅适用于创建它们的项目。[Azure Documentation]

    • 缺点:自定义阶段模板无法更新(截至本篇文章发布时)。

      要更新阶段模板,请删除发布管道中的现有模板,然后将该阶段另存为具有相同名称的模板。[Azure Documentation]

  3. 将发布过程放入Pipeline .yml文件中 -- 似乎是可能的,但....

    • 优点:进程将存储在共享的“common”库中。
    • 优点:每个应用程序都将具有最小的Pipeline .yml文件,在运行共享进程之前设置一些参数。
    • 缺点:如果没有发布门户UI,我将如何跟踪和手动部署发布?我错过了什么吗?
  4. 使用不同应用程序的工件触发相同的发布 -- 不确定是否可行....
    • 优点:一个发布过程,易于通过发布门户UI根据需要跟踪和部署。
    • 缺点:我将如何跟踪不同应用程序的发布?我会为应用程序命名发布吗?
    • 缺点:我不知道如何设置,因为发布与主管道相关联。

      在将工件源链接到发布管道时....[Azure Documentation]

    • 缺点:尽管可以使用多个工件源,但发布需要默认的工件管道或源存储库。我需要编写程序来设置工件源吗?

      当您将多个工件源链接到发布管道时,其中一个被指定为主要工件源。主要工件源用于设置许多预定义变量。它还可以用于命名发布。[Azure Documentation]

  5. 使用多个工件源和工件变量 -- 不确定是否可行....

    当有多个工件源链接到发布管道时,您可以访问每个工件源的信息。[Azure Documentation]

底线

我能够在Octopus Deploy中解决许多这些问题。然而,我在看如何将我的DevOps流程移至Azure DevOps时遇到了很大的困难。您会如何处理这种情况?


对于下投票和请求关闭的任何反馈?我全听着。 - AndrewRalon
你有没有考虑过任务组?https://learn.microsoft.com/zh-cn/azure/devops/pipelines/library/task-groups?view=azure-devops - Sourav Kundu
1个回答

0

没有完美的解决方案能够满足您的需求。

通常情况下,在多个环境部署多个应用程序,我们建议为每个流水线创建一个发布。但正如你所提到的,它在构建流水线和发布之间具有1对1的关系,并且有许多发布。

我们可以通过自定义模板将多个应用程序部署到多个环境中的一个发布中,就像您所提到的那样,我们还可以使用任务组将一组任务组合在一起,然后在不同阶段重复使用它们。但是一旦特定的任务组被更新,仍然需要相应地更新定义(更改任务组版本)。

另一种方法是使用Clone Stage,您提到它们是相同的环境,因此您可以配置一个阶段,然后从现有的阶段克隆阶段,只需根据特定的应用程序名称命名阶段即可。但是您仍然需要相应地更改设置,例如Artifact filters(请参见Release triggers),以确定触发特定阶段的条件。但是这样做会在添加多个工件源时首先下载所有工件,这将花费很长时间来获取源...

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接