GitHub Actions 条件判断避坑指南:AI编程工具中 7 个常用表达式写法
1. 条件判断不是“if else”的翻译,而是工作流的呼吸节奏我第一次用 AI 编程工具生成 GitHub Actions 工作流时,让它写一个“仅在 main 分支推送且文件变更包含 src/ 时运行测试”的条件判断。它输出了:if: github.event_name == 'push' contains(github.event.head_commit.message, 'test')CI 流水线跑起来后,测试步骤永远跳过——哪怕我刚 push 了一堆 .spec.ts 文件。查了半小时日志才发现:github.event.head_commit.message在push事件里根本不可靠,它只反映最后一次提交的信息,而 GitHub Actions 的push事件触发时,github.event.commits才是真实变更集合;更关键的是,contains()函数压根不支持路径匹配,它只能查字符串子串。这个坑让我意识到:AI 编程工具(比如 Cursor、Trae、Claude Code)在生成条件表达式时,默认套用的是通用编程逻辑,而非 GitHub Actions 的 DSL 语义。它把“判断是否修改了 src 目录”当成一个字符串查找问题,却忽略了 Actions 的上下文对象结构、函数能力边界和事件数据模型。这不是语法错误,而是语义误判。真正可靠的写法是: