TeamCity配置触发器等待composite build完成却未触发问题
无法触发D的核心原因
- 完成触发器分支匹配规则不匹配
你给D配置的Finish Build Trigger默认启用了仅当被监听的构建分支与D的默认分支一致时触发的规则,你的Composite构建由Github VCS触发器触发,运行分支和D的分支配置(比如D未关联对应VCS根、分支匹配范围过窄)不一致,直接导致触发条件不满足。 - Composite构建的状态广播限制
Composite作为聚合类型的构建配置,本身没有独立的工作目录和构建产物,部分版本的TeamCity中,无自定义步骤的Composite构建完成后不会主动广播完成事件给无依赖的下游构建,只有存在快照/工件依赖的下游配置才能捕获到它的完成状态,这就是你加了快照依赖就能触发的原因。 - 触发器筛选规则遗漏
如果你在Finish Trigger中配置了额外的构建状态筛选、标签筛选,或者没勾选包含重试触发的构建这类选项,也会导致符合条件的Composite构建完成后无法触发D。
符合预期的配置方案(无需快照依赖,不打乱构建链视图)
- 先调整D的完成触发器配置:
- 选中监听Composite构建配置后,取消勾选仅当构建在同一分支上运行时触发的选项,或者在分支过滤器中添加
+:refs/heads/*匹配Composite所有可能运行的分支 - 触发规则明确配置
+:status=<SUCCESS>,+:status=<FAILURE>,+:status=<CANCELED>覆盖所有你需要触发的场景 - 检查并关闭D的其他互斥限制:比如并发构建限制、触发器静默期设置过长等
- 选中监听Composite构建配置后,取消勾选仅当构建在同一分支上运行时触发的选项,或者在分支过滤器中添加
- 如果上述配置仍不生效,给Composite构建添加一个空的命令行步骤(仅执行
echo "build finished"即可),强制Composite生成完整的运行状态记录,即可正常广播完成事件触发D。
内容的提问来源于stack exchange,提问作者Đrakenus
相关产品推荐
相关产品推荐

