持续部署触发器和拉取请求触发器有什么区别?

What is the difference between Continuous deployment trigger and Pull request trigger?

Azure DevOps 发布管道项目设置有 2 个选项:

  1. 持续部署触发器 - 每次启用触发器都会创建一个新版本有新版本可用
  2. 拉取请求触发器 - 每次 选定的工件可用时启用此功能都会创建一个版本 作为拉取请求工作流程的一部分

我试图了解这些选项之间关于突出显示部分的区别是什么,以及构建验证策略是否会导致发布同时触发这两个选项,如果是这样,那么为什么我们有拉取请求触发器?

这很好地解释了这一点(摘自 documentation):

Pull requests (PRs) provide an effective way to have code reviewed before it is merged to the codebase. However, certain issues can be tricky to find until the code is built and deployed to an environment. Before the introduction of pull request release triggers, when a PR was raised, you could trigger a build, but not a deployment. Pull request triggers enable you to create pull request releases that deploy your PR code or PR builds to detect deployment issues before the code changes are merged. You can use pull request triggers with code hosted on Azure Repos or GitHub.

New build 基本上意味着你的流水线被执行了。

创建 pull request trigger 您需要定义稍后将部署的工件。对于这种触发器,Azure Devops 运行您的管道并根据您的 pipeline/build 定义生成工件,然后使用此工件进行部署。

两个触发器很相似,区别在于你的代码在合并到主分支之前或之后部署的时间。

在我看来,这两个触发器的工作范围不同。

假设我们设置一个 CI 构建作为发布工件,根据我的测试:

1.持续部署触发器:

每当我们有新版本的构建时,它就会触发发布。这意味着无论构建管道是由手动 运行、CI 触发器还是分支策略中的构建验证触发的,只有在有一个较新的构建时才会触发发布。

2.拉取请求触发器:

它的范围更小,它将由构建管道触发,构建管道由分支策略中的构建验证触发。

(由PR触发,所以如果我们创建新PR=>它触发PR构建=>它触发PR发布)

如果我有任何误解,请随时纠正我。

更新1:

这是一张关于我的两次测试的照片:

Release-8 由我的手动 运行ning 构建管道触发,仅启用 CD 触发。 Release-7 由 PR 构建触发,仅启用 PR 触发。 (我只在第 1 阶段启用 Pull Request 部署)

除了工作范围之外,这两个触发器在这里也有一点不同。目前阶段的 Pull Request Deployment 仅用于 Artifact 中的 PR 触发。

PR 触发器是 CI 的一部分 - 当您将分支合并到 master

时适用

CD 触发器 - 仅适用于 master 分支