【问题标题】:Can I have one Azure Dev release pipeline that does PR releases to different environments based on the target branch of the PR?我是否可以拥有一个 Azure Dev 发布管道,根据 PR 的目标分支将 PR 发布到不同的环境?
【发布时间】:2021-10-20 05:23:48
【问题描述】:

我已经为此奋斗了一段时间。我已经能够让它与两个单独的发布管道一起工作,但不是一个。似乎在一个管道中,用于发布的 PR 触发器会针对所有环境触发,即使使用单独的构建工件也是如此。

目标是在一个发布管道中包含以下内容:

PR 到 dev 并合并到 dev 部署到开发环境

PR 到主要部署到 QA 环境

将上述 PR 版本的主要内容合并到 prod(通过手动批准步骤)。

如果能得到这个单一的发布管道会很棒,因为这将减少开销和管理等。

我已经尝试了各种关于工件发布触发器和环境预部署条件的变体,但无济于事。

我什至尝试过使用 2 个单独的构建管道(一个用于主管道,一个用于开发),然后将两者作为工件加载并尝试以这种方式分离,但即使只有 1 个构建管道运行,它也会触发 PR 发布条件两种环境。

【问题讨论】:

  • 将 PR 部署到静态环境并没有真正的意义。不同的 PR 将相互叠加部署,甚至存在多个 PR 尝试同时部署的竞争条件。如果您希望部署 PR,请设计您的部署过程以建立一个临时环境,该环境在 PR 关闭时可以轻松拆除。
  • 您使用的是经典版本还是较新的管道?
  • 虽然我同意建立一个临时环境会更好,但我不同意 PR 进入静态环境没有价值。
  • 使用我认为是“经典”的版本。您可以查看 yml,但不能直接对其进行编辑。我们正在使用基于 Yyml 的构建管道。我相信您现在可以将发布步骤放入其中,这可能是一个解决方案。

标签: azure-devops git-flow


【解决方案1】:

如果您使用新的 YAML 管道实现发布管道,您应该能够实现这一点。

最简单的选择(这与您所要求的不完全一样,但应该得到相同的结果)是使用您的核心部署逻辑创建一个 template,然后创建重复使用此模板的单独管道。这应该允许您复制您已经为两个发布管道工作的触发器,而无需复制部署代码。

或者,您可以为 Dev、QA 和 Prod 设置一个包含 Stages 的 YAML 管道,并根据源分支和/或构建原因在这些阶段上设置 conditions

【讨论】:

  • 很酷,会试一试。谢谢!
猜你喜欢
  • 2019-11-08
  • 2023-01-20
  • 1970-01-01
  • 1970-01-01
  • 2021-03-20
  • 2013-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多