Azure devops 通过Azure DevOps通过一个发布过程部署多个应用程序

Azure devops 通过Azure DevOps通过一个发布过程部署多个应用程序,azure-devops,azure-pipelines,azure-pipelines-release-pipeline,octopus-deploy,Azure Devops,Azure Pipelines,Azure Pipelines Release Pipeline,Octopus Deploy,我需要使用Azure DevOps将许多类似的应用部署到相同的环境中 有哪些方法可以共享和维护这些应用程序的发布过程…… 为了避免在每个应用程序的发布过程发生变化时进行更新 背景 我有几十个类似的应用程序,它们的发布过程都是相同的 每个应用程序(在其自己的回购协议中)都有自己的Azure管道 我对这个问题的自定义解决方案很满意 选项 为每个管道发布一个版本——不是粉丝! 缺点:Azure似乎希望在管道和发布之间建立1对1的关系 缺点:我想不惜一切代价避免发布很多版本,因为更改几乎无法维护 使

我需要使用Azure DevOps将许多类似的应用部署到相同的环境中

有哪些方法可以共享和维护这些应用程序的发布过程……
为了避免在每个应用程序的发布过程发生变化时进行更新

背景

  • 我有几十个类似的应用程序,它们的发布过程都是相同的
  • 每个应用程序(在其自己的回购协议中)都有自己的Azure管道
  • 我对这个问题的自定义解决方案很满意
  • 选项

  • 为每个管道发布一个版本——不是粉丝!
    • 缺点:Azure似乎希望在管道和发布之间建立1对1的关系
    • 缺点:我想不惜一切代价避免发布很多版本,因为更改几乎无法维护
  • 使用自定义阶段模板——无法满足我的需要

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

      您创建的自定义模板的范围是在其中创建它们的项目。[]

    • 缺点:自定义阶段模板无法更新(从本文开始)

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

  • 将发布过程放在Pipeline.yml文件中——似乎是可能的,但是

    • 赞成:该过程将存储在共享的“公共”回购协议中
    • 赞成:每个应用程序都有一个最小的Pipeline.yml文件,在运行共享进程之前设置一些参数
    • 缺点:如果没有发布门户UI,我将如何跟踪和手动部署发布?我是否遗漏了什么
  • 使用来自不同应用程序的工件触发同一版本——不确定这是否有效。。。。
    • 优点:一个发布过程,可通过发布门户用户界面根据需要轻松跟踪和部署
    • 缺点:我如何跟踪不同应用程序的发布?我会用应用程序名称命名发布吗
    • 缺点:我不知道如何设置它,因为发布绑定到主管道。 在将工件源链接到发布管道时。。。。[]

    • 缺点:尽管可以使用多个工件源,但发布需要一个默认工件管道或源repo。我需要以编程方式设置工件源吗? 当您将多个工件源链接到发布管道时,其中一个被指定为主要工件源。主要工件源用于设置许多预定义变量。它还可以用于命名发行版。[]

  • 使用多个工件源和工件变量——不确定这是否有效。。。。 当有多个工件源链接到发布管道时,您可以访问关于每个工件源的信息。[]

  • 底线


    我能够在八达通部署中解决许多这些问题。然而,我很难看到如何将我的DevOps进程移动到Azure DevOps中。您将如何处理这种情况?

    没有完美的解决方案来满足您的要求

    通常将多个应用程序部署到多个环境中,我们建议为每个管道发布一个版本。但正如您所提到的,它在构建管道和发布之间有1对1的关系,并且有许多发布

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

    另一种方法是
    克隆Stage
    ,您提到它们是相同的环境,因此您可以配置一个Stage,然后从现有的Stage克隆Stage,只需使用特定的应用程序名称相应地命名这些Stage。但是您仍然需要相应地更改设置,例如
    工件过滤器
    (请参阅),以确定触发特定阶段的条件。但是通过这种方式,当您添加多个工件源时,它将首先下载所有工件,这将需要很长时间才能获得源


    是否有关于否决票和要求关闭的反馈?我洗耳恭听。你考虑过任务小组吗?