拉取请求触发器正在为所有分支推送运行管道

时间:2020-03-23 14:48:34

标签: azure-devops azure-pipelines

我的开发分支受到保护,因此您必须向其提出请求。创建新的请求请求时,我试图创建一个管道来构建和运行单元测试。

但是,当我从开发创建功能分支并推送对功能分支的更改时,即使我尚未创建拉取请求,也正在触发管道。功能分支具有yaml文件,因为它是从developer派生的。

Yaml文件:

pr:
- develop

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    testSelector: testAssemblies
    testAssemblyVer2: |
     **\*unittests**.dll
     !**\*TestAdapter.dll
     !**\obj\**

仅当有来自功能分支的拉取请求要开发时,我应该怎么做才能运行管道?

3 个答案:

答案 0 :(得分:2)

按照documentation

YAML PR触发器仅在GitHub和Bitbucket Cloud中受支持。如果 您正在使用Azure Repos Git时,可以为 建立验证以触发您的验证管道。

答案 1 :(得分:1)

默认情况下,YAML管道在所有分支上都配置有CI触发器。

如果PR触发器不起作用,则YAML管道将由CI触发。

PR触发器不起作用的原因有两种:

  • 首先,仅GitHub和Bitbucket支持YAML PR触发器 云。
  • 在YAML管道中配置的
  • PR和CI触发器可以是 在管道设置中被覆盖,默认情况下是新管道 自动覆盖YAML PR触发器

    请检查您的YAML触发器是否被覆盖,要配置此设置,请在编辑YAML管道时从设置菜单中选择触发器

    enter image description here

    选择“持续集成”触发器或“拉取”请求验证触发器,然后从此处启用或禁用“覆盖YAML ...”触发器,以配置所需的设置。

    enter image description here

希望这很明显。

答案 2 :(得分:1)

添加

trigger: none

到您的 yml 文件。因为,如前所述,ADO 中的管道默认在所有提交的所有分支上运行。否则,你的东西是对的......添加 trigger: none 将意味着你的管道只会在以 Develop 分支为目标发出拉取请求时运行。