git - 提交时 Azure 管道筛选器 github 用户
问题描述
如果推送提交,是否可以过滤 github 用户以不触发管道?
例如,如果机器人用户推送了一些更改,则不应触发 git 管道。我只找到触发更改的文件或分支名称的信息。
解决方案
如果推送提交,是否可以过滤 github 用户以不触发管道?
不,目前 Azure Devops CI 触发器仅支持过滤器Branches
,如Paths
和Tags
。它没有针对特定用户的过滤器,因此如果提交更改,管道将始终被触发。(无论谁推送提交)
可能的解决方法:
一种替代解决方法是添加 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
并且不会花费太多时间。请参阅条件步骤。
推荐阅读
- php - Laravel:使用带有 where 子句的数据透视表获取单个模型
- javascript - 如何将 3 维张量传递到密集层(tensorflow.js)
- django - 在 Heroku 上部署 Django 后 Chart.js 无法正常工作
- python - 如何使用 tweepy 3.10.0 从特定消息 id 读取 dm 的 twitter 列表
- selenium - Robotframework - Pycharm 没有显示建议
- python - Django:将“名称”传递给 Client.post()
- python - 错误消息:无法对切片索引
使用这些索引器 [True] - javascript - 等待使用 puppeteer 显示 Google Captcha
- ios - Swift IOS UIDatepicker - UIDatepicker 显示不正确
- python - 添加和打印项目,使用 python 使用列表