gpt4 book ai didi

azure-devops - Azure YAML 管道是否支持触发器路径过滤器中的通配符?

转载 作者:行者123 更新时间:2023-12-04 15:58:24 25 4
gpt4 key购买 nike

我在 git 存储库中有这样的项目(文件夹)结构:

/src
/src/Sample.Backend.Common
/src/Sample.Backend.Common.Tests
/src/Sample.Backend.Common.Domain
/src/Sample.Backend.Common.Domain.Tests
/src/Sample.Backend.Pricing.Abstractions
/src/Sample.Backend.Pricing.Domain
/src/Sample.Backend.Pricing.Domain.Tests
/src/Sample.Backend.Pricing.Persistence
/src/Sample.Backend.Pricing.Persistence.Tests
/src/Sample.Backend.Accounting.Abstractions
/src/Sample.Backend.Accounting.Domain
/src/Sample.Backend.Accounting.Domain.Tests
/src/Sample.Backend.Accounting.Persistence
/src/Sample.Backend.Accounting.Persistence.Tests
/src/Sample.Backend.Api
/src/Sample.Common
/src/Sample.Frontend.Common
/src/Sample.Frontend.Web
/src/Sample.Tests.Common
(示例已简化,实际上有更多的项目/文件夹。)
我想要不同部分的不同管道。例如,每当在 master 中提交任何文件时都会触发管道。分行在 任何后端 项目。像这样的东西:
trigger:
branches:
include:
- master
paths:
include:
- src/Sample.Backend.*
- src/Sample.Common
- src/Sample.Tests.Common
问题是,那个过滤器 src/Sample.Backend.*不管用。我必须添加每个后端文件夹的确切名称才能使其正常工作。我可以用 exclude但我有同样的问题 - 还有许多其他项目,我必须全部命名。
我发现不支持通配符: https://github.com/MicrosoftDocs/azure-devops-docs/issues/397#issuecomment-422958966
有没有其他方法可以达到相同的结果?

最佳答案

Does Azure YAML pipelne support wildcards in path filter in trigger?


这是我们主要产品论坛上的一个已知请求:
Support wildcards (*) in Trigger > Path Filters
此功能尚未实现,您可以添加您的评论并投票给该用户的声音。
作为解决方法 对我们来说,我们添加了一个内联 powershell 任务作为 第一 执行git命令行的任务 git diff HEAD HEAD~ --name-only获取修改后的文件名并过滤最新提交中的文件名,使用 Logging Command设置变量,然后在构建管道的后续步骤中在自定义条件中引用这些变量:
and(succeeded(), eq(variables['CustomVar'], 'True'))
我们的内联 powershell 脚本:
cd $(System.DefaultWorkingDirectory)

$editedFiles = git diff HEAD HEAD~ --name-only

echo "$($editedFiles.Length) files modified:"

$editedFiles | ForEach-Object {
echo $_
Switch -Wildcard ($_ ) {
'XXXX/Src/Sample.Backend.*' {
Write-Host ("##vso[task.setvariable variable=CustomVar]True")
}
'XXXX/Src/Sample.Common*' {
Write-Host ("##vso[task.setvariable variable=CustomVar]True")}
'XXXX/Src/Sample.Tests.Common' {
Write-Host ("##vso[task.setvariable variable=CustomVar]True")}

}
}
然后为所有剩余任务添加条件:
enter image description here
在这种情况下,如果更改文件不符合我们的过滤器,则将跳过所有剩余的任务。

关于azure-devops - Azure YAML 管道是否支持触发器路径过滤器中的通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63800001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com