【问题标题】:Azure DevOps branch/pipeline setup for Dev and Release and hotfix branches用于开发和发布以及修补程序分支的 Azure DevOps 分支/管道设置
【发布时间】:2020-04-23 15:53:06
【问题描述】:

我在为开发和发布工作设置我的项目时遇到了困难。我浏览了各种文章,但我无法就如何为不同的分支设置我的开发和发布管道得出一个明确的结论。我需要这方面的帮助。

例如,假设我在 /azure-pipelines.yml 中有一个带有管道 DevPipeline 的 Dev 分支。 该管道具有如下 CI 触发器:

trigger:

Dev
features/*
  1. 现在,当我创建分支 Release/R1.0 时,我究竟需要做什么?
  2. 我是否创建一个新管道,比如 Release-R1.0。这个管道的 .yml 应该在哪里?
  3. 应该覆盖 /azure-pipelines.yml 还是应该创建 /Release-R1.0.yml?

  4. 如果开发人员想要为 R1.0 开发修复/修补程序,他们应该在 hotfix/R1.0 分支下工作吗?在这种情况下,我必须在 R1.0 yaml 中相应地调整我的触发器?

非常感谢任何帮助。

谢谢

【问题讨论】:

    标签: azure-devops


    【解决方案1】:
    1. 现在,当我创建分支 Release/R1.0 时,我到底需要做什么?
    2. 我是否创建一个新管道,比如 Release-R1.0。此管道的 .yml 应该在哪里?

    这取决于您新创建的管道是否与Dev 分支上的管道具有相同的构建。如果是,您可以在azure-pipelines.yml 中再添加一个触发器Release/R1.0

    trigger:
    
    Dev
    features/*
    Release/R1.0
    

    如果他们没有相同的管道,或者您不想为分支Release/R1.0 使用相同的管道,则需要创建一个新的管道,例如Release-R1.0。并且此管道的.yml 应设置R1.0 分支中Release 文件夹下的yaml 文件。详情请查看my previous thread

    应该覆盖 /azure-pipelines.yml 还是应该创建 /Release-R1.0.yml?

    由于他们有不同的触发器或不同的构建任务,它不应该覆盖/azure-pipelines.yml,你需要创建一个新的/Release-R1.0.yml

    如果开发人员想要为 R1.0 开发修复程序/热修复程序,他们应该工作吗? 在 hotfix/R1.0 分支下?在这种情况下,我将不得不调整我的 在 R1.0 yaml 中相应触发?

    如果我的理解是正确的,如果你想为R1.0 开发一个修补程序,最好基于R1.0 创建一个分支Release/hotfix-R1.0,并且在R1.0 yaml 中,你可以设置触发器:

    trigger:
    Release/*
    

    因此,您不必在 R1.0 yaml 中相应地调整我的触发器。

    希望这会有所帮助。

    【讨论】:

    • 谢谢。这当然是非常有用的信息。我认为我赞成为 Release 1.0 分支建立一个单独的管道,即使目前我不会有任何不同的构建任务。这是因为我会有不同的版本号。我尝试使用条件表达式来拥有一个通用管道,但被自定义版本号挂断了。 developercommunity.visualstudio.com/content/problem/872081/…
    • 我试图在基于发布流和主干的开发环境中理解这一点。这是根据文章docs.microsoft.com/en-us/azure/devops/learn/devops-at-microsoft/…,其中发布分支是完全可有可无的。根据我的理解,核心概念是所有更改都将在主分支/主干中进行,然后将樱桃挑选到发布分支中(嗯,几乎所有)。如果我将此概念叠加到您的回复中,那么 IMO 的 Release/R1.0 分支及其 .yaml 也将位于主分支中。这是正确的理解吗?
    • @Chubsdad,恐怕不是。这个问题与帖子中的第四个问题不同。这个问题是必须调整你的触发器,但是如果你遵循基于 Release Flow & Trunk 的开发流程,最好不要设置 Release/R1.0 分支,它的 .yaml 将在 master 分支,不建议在主触发器发布中进行任何更改。正确的做法是在 master 分支中进行所有更改,然后创建一个 pull request 将更改从 master 合并到 release,然后触发要部署的 release。
    • 让我们看看我的 R1.0 版本将在 .net framework 4.7 上,而 master 分支(以及更多版本)将在 dotnet core 3.1 上的情况。在这种情况下,我的管道将有所不同(不同的工具链)。鉴于在我的情况下,Release R1.0 必须是一个长期运行的分支,这里的建议是什么。我很迷惑。我可能会绕圈子,但我很难将所有点连接起来。
    • @Chubsdad,由于它们位于不同的目标框架中,并且 Release R1.0 在您的情况下必须是一个长期运行的分支,为什么不考虑创建一个新的发布分支,例如基于 Release R2.0在 dotnet core 3.1 上的 master 上?
    猜你喜欢
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多