如何让 Azure Devops Pipelines 由 Prs 而不是由其他提交触发

How to have Azure Devops Pipelines triggered by Prs but not by other commits

我在 Azure DevOps Pipelines 中使用 yaml 管道,我看到它们有两个特定的触发键 triggerpr

我想要设置它,以便在创建(或附加到)功能分支或错误修复分支上的 PR 时,我必须 运行 仅 运行 测试和安全检查一些管道,但是当他们只是推送到一个还没有 PR 的功能或错误修复分支时。

这是我的 pr 键:

pr:
  branches:
    include:
      - bugfix/*
      - feature/*
  paths:
    include:
      - Source/Frontend/*

这是用于 运行 测试、linting 和覆盖率的 js 前端管道,因此我将其限制为仅更改包含前端代码的文件夹。

我应该如何设置 trigger 键才能实现上述目标?

我尝试通过在我的 yaml 文件中排除 trigger 键来将其保留为默认值,但这只会获取任何文件夹中的每个提交。我也试过 trigger: none 但这似乎完全阻止了它 运行ning。我也试过让 trigger 键与 pr 键相同,但是当我进行 PR 时,它没有被触发。

我已确保 Azure DevOps 中的触发器覆盖已关闭,因此它应该关闭 yaml 中的任何内容。

请参阅有关 pr 块的文档。它仅适用于 GitHub 回购。对于 Azure DevOps 存储库,使用分支策略来配置 PR 构建。

您想要 trigger: none 附带分支策略。

我测试了添加trigger: none,可以防止管道被CI触发。

trigger: none 
pr:
  branches:
    include:
    - master

此外,您还可以告诉 Azure Pipelines 跳过 运行 提交通常会触发的管道。只需在提交消息或 HEAD 提交的描述中包含 [skip ci],Azure Pipelines 就会 skip running CI.

您可以使用以下任何变体:

  • [skip ci][ci skip]
  • skip-checks: trueskip-checks:true
  • [skip azurepipelines][azurepipelines skip]
  • [skip azpipelines][azpipelines skip]
  • [skip azp][azp skip]
  • ***NO_CI***

原来我的问题有两个方面。

@Hugh Lin - MSFT 有点帮助,但阻止它工作的原因如下:

  1. 我认为 pr key 中包含的分支是 PR 的来源而不是合并到的地方,所以我将其从 bugfix/*feature/* 更改为仅 develop
  2. pipeline yaml只存在于develop的分支中,不存在于develop分支中。