哪个分支保存管道 YAMl 文件?

问题描述 投票:0回答:1

作为前言,我的组织使用 Github 作为其代码库,并使用 Azure DevOps 管道作为其 CI/CD。

我正在为我的组织构建 DevOps CI/CD 系统,并且已经概述了构建和部署的任务、作业和步骤。但我不确定在哪个分支保留我的 YAML 文件以获得最佳实践,并且开发人员在管道启动后必须尽可能少地修改。

我的第一反应是将 YAML 文件放入我们的

develop
分支,因为这是研究期间大多数稳定更改所在的位置。触发器将在任何 PR 或提交到
develop
时触发。

我对这种方法的问题是,如果开发人员从

develop
分支分支一个功能或错误修复,那么触发器仍然来自该功能或错误修复分支中的
develop
,这将导致触发多个管道运行,对于修改
develop
时仍在运行的每个活动功能或错误修复分支一次。
我们可以要求开发人员在创建分支后手动将 YAML 文件中的触发器从
develop
更改为其他内容,但理想情况下,该过程尽可能不干涉。

我的下一个想法是在仅包含 YAML 文件的存储库中创建一个名为

DevOps
的专用分支。这将在
develop
上触发。

但是,这会导致

develop
上的任何 PR 都没有“预检查”,如果 YAML 文件位于
develop
中,则会自动显示该“预检查”。

所以我问,保存 YML 文件和设置触发器的标准或最佳实践是什么?您如何在项目中构建它?

azure-devops continuous-integration azure-pipelines devops cicd
1个回答
0
投票

YAML 管道中的 CI 触发器:

如果您希望可以为某个分支触发管道,则该分支中必须存在 YAML 文件,并且 CI 触发器上设置的 branches 过滤器 应至少包括当前分支。

  1. 在以下场景中,可以为

    bugfix
    分支触发 YAML 管道:

    • YAML 文件位于
      bugfix
      分支中,并具有如下分支过滤器。
      trigger:
        branches:
          include:
          - bugfix  # Include bugfix branch.
          . . .
      
      或者
      trigger:
        branches:
          include:
          - '*'  # Include any branch.
          . . .
      
  2. 以下场景无法触发

    bugfix
    分支的YAML管道:

    • YAML 文件位于

      bugfix
      分支中,并具有如下所示的分支过滤器。

      trigger:
        branches:
          exclude:
          - bugfix  # Exclude bugfix branch.
          . . .
      
    • YAML 文件不在

      bugfix
      分支中,并且具有如下所示的分支过滤器。

      trigger:
        branches:
          include:
          - bugfix  # Include bugfix branch.
          . . .
      

      trigger:
        branches:
          include:
          - '*'  # Include any branch.
          . . .
      

GitHub 的 YAML 管道中的 PR 触发器:

建议确保 PR 的源分支和目标分支中都存在 YAML 文件。并确保 PR 触发器上设置的分支过滤器应至少包括目标分支。


© www.soinside.com 2019 - 2024. All rights reserved.