azure-devops - 不要为 Azure DevOps 中已有拉取请求的分支触发构建

标签 azure-devops continuous-integration pull-request build-triggers

我们使用 Azure DevOps 进行持续集成。管道配置为在将更改推送到功能分支时运行构建。这是快速反馈所需要的。

此外,我们对 master 分支制定了政策,即在合并功能分支之前需要成功的验证构建。当为功能分支创建拉取请求 (PR) 时,Azure DevOps 现在会自动触发相应的验证构建。

所有这一切都很好,但是有一个不幸的事情:如果已经创建了 PR 并且更新了功能分支,则会触发两个构建(一个单独用于功能分支,一个用于合并的结果,即验证构建)。

我知道有些人可能想要两个构建,但在我们的情况下(可能在每个正常情况下)如果只触发验证构建会更好。

问题:有没有办法告诉 Azure DevOps 它应该忽略任何已经有 PR 的分支的分支触发器?当然,我们也欢迎具有同等结果的解决方法。

该问题已作为问题发布 here , 但我在回复中找不到满意的答案(例如,分支过滤器和命名策略不能解决问题)。

最佳答案

“开箱即用”- 你不能。然而,作为一种解决方法,您可以使用 rest API 来检查事件的拉取请求,如果它们存在,则只会使您不需要的构建失败:

  1. Get Pull Requests - Targeting a specific branch
  2. Use the system access token from your build pipeline . Access repositories, artifacts, and other resources
  3. 使用 Powershell 从构建中退出:exit 1

关于azure-devops - 不要为 Azure DevOps 中已有拉取请求的分支触发构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71500900/

相关文章:

windows - 在 Windows 构建服务器上使用 Internet Explorer 驱动程序截屏时出现黑屏

git - 提交 PR 并提交更改后,是否可以压缩 Git 提交?

bash - 如何使用 Bash 在 Azure DevOps 中设置构建变量?

azure - 在主题分支中创建了 Azure 管道 yaml 文件,我可以从主题分支运行它吗?

xamarin.forms - 仍然收到 ITMS-90809 : Deprecated API Usage after using --optimize=force-rejected-types-removal

c# - 如何使用 TFS 客户端库获取 PullRequest 的 Web URL?

git - 来自同一分支的多个 pull 请求

azure - Terraform 启用 VM Insights

msbuild - XmlMassUpdate 多个值(MSBuild 社区任务)

git - 是否有可能在 gitlab ci 上仅基于标签推送事件构建?