【问题标题】:Multiple Projects and One Solution - DevOps Best Practice多个项目和一个解决方案 - DevOps 最佳实践
【发布时间】:2021-06-30 10:32:03
【问题描述】:

例如,我有一个解决方案和多个项目。基本上,多个项目是:

  • 解决方案
    • REST API Web 应用程序
    • 管理 UI Web 应用程序
    • 共享库

如果我想为 REST API 和管理 UI 建立 Azure DevOps 管道,最好的方法是什么?

  1. 如果解决方案发生任何变化,请触发构建所有内容并部署两个 Web 应用
  2. 每个可部署项目的 CI/CD 触发器; IE。如果 Admin UI 中只有 UI 发生变化,那么只会为此而构建

我喜欢#2。我在想,如果只有 REST API 发生变化,那么只有 REST API 会为自己触发 CI/CD。如果 Admin UI 发生变化,只会触发它的 CI / CD。如果共享库发生更改,则 CI/CD 都会触发。

我相信这可以使用路径过滤器作为触发器来完成。但是,如果将来我有一个新的共享库2 怎么办?我需要为该新项目编辑管道触发器。所以我不确定这是否是一种好习惯(可能忘记添加触发器?)

【问题讨论】:

    标签: azure-devops azure-pipelines


    【解决方案1】:

    要回答您关于最佳实践的问题,它会以这样一种方式打破部署,以最大限度地减少潜在影响,同时确保合理的功能,同时确保一致的集成和高质量的代码流。

    如果您想保持对这两种情况的控制,我建议您结合使用这些方法。这可以通过将每个部署分解成它自己的阶段,然后将该阶段与需要批准的环境联系起来来实现。对于 Dev 建议做一个完整的 CD 来捕捉任何可能失败的东西,然后批准你的其他环境。您的管道可能如下所示:

    构建阶段:

    • 构建和发布 REST API Web 应用程序
    • 构建和发布管理 UI Web 应用程序
    • 构建和发布共享库

    部署 Rest API 阶段 [Dev]

    • 部署 API 的作业

    部署 Admin UI Web Stage [Dev]

    • 部署 UI 的作业

    部署共享库阶段 [Dev]

    • 部署共享库的工作

    部署 Rest API 阶段 [UAT]...

    部署 Admin UI Web Stage [UAT]...

    部署共享库阶段 [UAT]..

    为每个环境执行此模式并配置环境批准。这将允许每次在没有批准的情况下在 Dev 中进行完整的部署,并且在其他环境中能够批准需要哪些部署。另外,如果执行多个地理/实例可以在该阶段的作业中调用它,以允许不同组件的可扩展性。此外,作业和任务可以模板化以优化可重用性并减少复制和粘贴。

    此外,如果这样做会强烈推荐使用 YAML 模板,因为这将允许您一次性定义阶段所需的作业/步骤并重复使用。

    Here is how to set up environment approval

    Here is how to look at configuring stage templates

    【讨论】:

      【解决方案2】:

      没有一种方法可以解决它。您实际上可以考虑的是 - 我是否要始终一起部署所有应用程序?如果是,那么您可以使用一条管道。如果不是,您应该使用单独的管道。

      第二种解决方案有点复杂,但是您可以使用以下功能使这项工作更容易:

      • path filters 并在添加下一个共享库时避免潜在的变化:
      trigger:
        branches:
          include:
          - master
          - releases/*
        paths:
          include:
          - sharedA
          exclude:
          - '*'
      

      但是如果您的项目很小,请考虑第一种方法,因为它可能运行得足够快,并且可以节省您在复杂管道结构上的时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-08
        • 2019-07-29
        • 2011-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-11
        相关资源
        最近更新 更多