在Team Services中,我正在尝试为一个包含不同产品的子文件夹的Team Project设置多个构建定义(遵循single Team Project方法)。我遇到的问题是CI构建似乎是从TFVC repo的任何更改中触发而不考虑CI触发器过滤器。
回购看起来像:
MyProject
Product1
Product2
Product3
我有3个单独的构建定义,每个定义包含一个子文件夹的映射(例如$ / MyProject / Product1)和一个带有“include”过滤器的CI触发器,用于同一个文件夹。
当我在$ / MyProject / Product1中检查对文件的更改时,VSTS启动三个新构建,每个构建来自三个定义。每个构建声明与相同变更集的关联。
我期待一个基于构建定义的构建,其中包含“$ / MyProject / Product1”的包含过滤器。
我尝试了其他一些事情:
docs读取:
TFVC包含
选择要包含和排除的版本控制路径。在 大多数情况下,您应该确保这些过滤器是一致的 使用“存储库”选项卡上的TFVC映射。
我是否误解了过滤器的预期行为或这是一个错误?还有其他人经历过吗?任何解决方法的想法?
注意:我确实看过this answer,但我不清楚它是否涵盖了多重构建定义的皱纹。如果您使用一个定义来构建多个分支并映射了一个共同的父分支,则过滤器可能无法发挥作用。
答案 0 :(得分:2)
此问题现已修复。请再试一次。有关详细信息,请参阅此链接:CI Builds may not trigger as expected。
最终更新:2016年6月27日星期一22:53 UTC
修复程序部署于2016年6月27日21:26 UTC完成,我们有 确认我们无法再重现该问题。我们理解这一点 客户依赖VS Team Services作为关键服务并道歉 对于此事件造成的任何影响。
此致,Arvin
答案 1 :(得分:1)
我相信我发现了这个错误!看起来构建的构建定义触发器不遵循映射,但它们过去曾经使用过。我使用了历史记录并在我的2个构建定义中做了一个diff,而json为一个(旧的构建定义)在branchFilters中的映射集中为触发器定义了完整的分支路径,但是新的分支定义只有branchFilters中的存储库路径,即使存储库映射指向分支。
旧的正确的构建定义:
"triggers": [
{
"branchFilters": [
"+$/WF.Workflow/Main/!v09"
新的构建定义(错误并为存储库中的每个签入运行)
"triggers": [
{
"branchFilters": [
"+$/WF.Workflow"
这个新的应该指向“+ $ / WF.Workflow / Main /!v08”
我在Eddie使用此信息创建的Connect问题中添加了评论。我希望它有所帮助。
作为临时解决方法,我尝试使用Gated CheckIn,它似乎现在可以使用。它为登记过程增加了一些统治,但这是我现在所能做的。我希望很快得到解决。