快速结论:出现“Run tests and type checking on lts branch”相关问题时,通常发生在向 LTS 分支提交 PR 或回迁补丁(backport)的场景:CI 不会被触发,导致测试与类型检查被跳过,问题直到部署到 UAT 环境才暴露。优先排查调用方工作流的触发条件是否只过滤了 main。
适用环境:Dify 仓库的 GitHub Actions CI;涉及 main-ci.yml、workflow_call 复用的 API 测试 / Web 测试 / 样式工作流,以及 lts/1.17.x 分支的对应副本。Issue 未提供操作系统、Python、CUDA 或显卡信息。
最快修复方案:暂无确认的一步修复方案。Issue 只完成源码检查,未实际运行 CI 或验证分支保护设置。可优先尝试的方向是在调用方工作流的 pull_request 过滤中补充受支持的 LTS 基础分支,并按需同步 merge_group 覆盖。
注意事项:该方向来自Issue评论中的源码检查,并非已合并的修复;改动只解决触发问题,不保证 LTS 分支保护规则和必需检查名称已正确配置。每个受支持的 LTS 线都需要同步修改。
问题场景
用户向 Dify 的 LTS 分支提交 PR(典型场景是把补丁回迁到 lts 分支)时,CI 中的测试与类型检查没有运行。由于这些检查没有执行,回迁补丁引入的缺陷未被拦截,最终在 UAT 部署阶段才被发现。
报错原文
Run tests and type checking on lts branch
The tests and type checkings are skipped for PRs targeting lts branches
原因分析
可能原因是触发覆盖范围存在缺口:调用方工作流 main-ci.yml 在 pull_request 和 merge_group 上都只过滤了 main 分支;lts/1.17.x 分支的副本中也是同样的过滤条件。API 测试、Web 测试和样式工作流通过 workflow_call 被复用,不会独立为 LTS PR 启动运行,因此当 PR 目标为 LTS 分支时,整套检查都不会被触发。
环境排查
- 确认目标 PR 的基础分支是否为 LTS 分支(例如
lts/1.17.x)。 - 检查对应分支上
main-ci.yml的pull_request与merge_group分支过滤条件。 - 确认 API 测试、Web 测试、样式工作流是否仅通过
workflow_call调用,而不是独立触发。 - 确认该 LTS 分支是否使用 merge queue;若使用,需要一并覆盖
merge_group。 - 确认分支保护中的必需检查(required check)名称与工作流中的 finalizer 名称一致。
解决步骤
- 定位调用方工作流
main-ci.yml,查看on.pull_request.branches与on.merge_group.branches的过滤列表。 - 将受支持的 LTS 基础分支加入调用方的
pull_request过滤;如果这些分支使用 merge queue,同步加入merge_group过滤。 - 保留现有的路径分类逻辑、可复用工作流调用方式以及必需检查 finalizer 名称,避免改动检查结果的上报方式。
- 对每一条受支持的 LTS 线执行同样的修改,包括各 LTS 分支上的
main-ci.yml副本。 - 向 LTS 基础分支提交一个改动了 API 或 Web 路径的回迁 PR,观察对应测试与类型检查是否自动启动。
验证方法
在 LTS 基础分支上打开一个会改动 API 或 Web 路径的 PR,确认对应的测试和类型检查被触发并运行。进一步可故意引入一个失败的测试或类型检查,确认该 PR 的必需检查显示失败,说明触发与结果上报链路均已生效。该验证思路来自 Issue 中的验收建议,尚未在 Issue 中被实际执行。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


![[Custom Node Registration] ANIMA_BOOSTER (BSS)](https://www.chat-gpts.plus/wp-content/uploads/2026/11/2893-6536225a-768x403.jpg)