首页 > 解决方案 > 提交时 Azure 管道筛选器 github 用户

问题描述

如果推送提交,是否可以过滤 github 用户以不触发管道?

例如,如果机器人用户推送了一些更改,则不应触发 git 管道。我只找到触发更改的文件或分支名称的信息。

标签: gitazureazure-pipelines

解决方案


如果推送提交,是否可以过滤 github 用户以不触发管道?

,目前 Azure Devops CI 触发器仅支持过滤器Branches,如PathsTags。它没有针对特定用户的过滤器,因此如果提交更改,管道将始终被触发。(无论谁推送提交)

可能的解决方法:

一种替代解决方法是添加 PS 任务以过滤用户并在该任务中失败/完成管道,这将节省大量时间。在这种情况下,管道将被触发,但它会立即完成。

我们可以使用git log --format='%ae' $(Build.SourceVersion)^!命令来获取提交用户的 ID。$(Build.SourceVersion)表示提交 ID。

在我的测试中,github组织中的一个用户的Id格式如下xxxxxx+accountName@users.noreply.github.com。(可以使用命令先找到要过滤的用户的Id)

简单的例子:

trigger:
- master

pool:
  vmImage: 'windows-latest'

steps:
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      $Id = (git log --format='%ae' $(Build.SourceVersion)^!)
      if ($Id -like "5xxxxxx6+lancexxx@users.noreply.github.com")
          {
            Write-Host "##vso[task.complete result=Failed;]"
          }
      if ($Id -like "xxx")
          {
            Write-Host "##vso[task.complete result=Failed;]"
          }

- task: CmdLine@2
  inputs:
    script: |
      echo Hello world
...

我们可以在管道的第一个添加一个 PS 任务,它将用于过滤特定用户。如果推送提交的作者是某人,则任务将失败5xxxxxx6+lancexxx@users.noreply.github.com

如果您不想让管道运行失败,您可以使用条件步骤跳过以下任务,这样管道运行就会报告succeed并且不会花费太多时间。请参阅条件步骤


推荐阅读