CI/CD 工具

GitHub Actions 表达式求值提交前看清条件结果

输入一条表达式,编辑模拟上下文,查看返回值与条件真假。

GitHub Actions 表达式求值

表达式

模拟上下文 JSON

结果

返回值
暂无结果

类型: 暂无结果

if 条件: 暂无结果

表达式与模拟上下文只在浏览器内处理,不会发送至 GitHub 或本站服务器。

选项

只有状态函数会使用这个模拟值。

结果已过期。

分支判断看上去正确,推送后作业却被跳过?用 GitHub Actions 表达式求值先代入当时的 ref、事件和输入值,单独检查 if 条件,不必为了验证一个布尔结果反复提交。

这里也可做 GitHub Actions 表达式测试:修改上下文中的 github.ref、env 或 inputs,观察结果。它不会从仓库读取真实运行数据,也不会替你执行完整工作流。

为什么用 GitHub Actions 表达式求值?

把模拟值与判断结果放在同一处,区分函数返回值和 if 所采用的真假。

换一组上下文,立即看到差异

同一条分支条件在 main 和 feature 引用下会给出不同结果。GitHub Actions 表达式求值允许直接改写模拟上下文,无须再推送一次测试提交。

可编辑的上下文对象连接到两种不同的布尔结果状态。

分开看原值与条件真假

逻辑或可能返回一个字符串,而 if 条件会把它视为真。页面将原值和真假分别显示,避免把返回值误看成布尔值。

逻辑表达式分出蓝色原值与绿色真值的示意图。

看懂一次条件判断的三个关键点

01

确认表达式边界

可粘贴裸表达式、完整的 `${{ … }}` 或单行 `if:`。如果外壳之外还有比较文字,工具会报错,不会只抽取一段就声称完成测试。

  • 示例列表里有故意写错的表达式,可查看错误定位。
02

补齐模拟上下文

在 JSON 中填写 github、env、inputs 或 matrix。状态选择器只为 success() 等函数提供模拟状态,不能代表真实作业链。

  • env.DEPLOY 默认是字符串;需要布尔值时可用 fromJSON。
03

同时看值与真假

逻辑表达式可能返回字符串,而 if 仍将它视为真。修改输入后自动求值会刷新结果;关闭自动模式可按 Ctrl/Cmd+Enter 手动运行。

  • 结果过期时复制和下载会禁用,避免带走旧值。

比较、函数与上下文一次核对

官方语义引擎

支持 contains、startsWith、endsWith、format、join、toJSON、fromJSON、case、逻辑运算和对象筛选器,不用 JavaScript eval 猜测结果。

可编辑的 GitHub Actions 上下文

自己填 github.event_name、github.ref 和其他字段。缺失的顶层名称会报错,页面不会伪造 runner 的事件载荷。

分开呈现值和类型

可同时看到原始 JSON 值、类型和 if 条件真假;`&&` 或 `||` 返回操作数时尤其容易发现误判。

单条求值能回答什么,不能回答什么

不运行整条工作流
页面不展开 matrix,也不模拟 on: 的分支、路径过滤;因此单条表达式为真,不等于作业一定执行。
状态函数只读模拟状态
success()、failure()、cancelled() 和 always() 不知道真实前置步骤或依赖作业的结果。
不伪造文件哈希
hashFiles() 需要 GITHUB_WORKSPACE 中的实际文件;这里会明确报无法求值,不返回占位摘要。
上下文由用户提供
页面不读取 secrets、GitHub API 或实时事件。测试时请只放必要的模拟字段,不要粘贴真实令牌。

GitHub Actions 表达式求值常见问题

GitHub Actions 的 if 条件为什么没有按预期运行?

先核对模拟上下文中的事件与 ref,再看返回值和条件真假。本工具能定位表达式问题;依赖作业与事件过滤仍需在工作流中检查。

表达式里的字符串和布尔值会怎样比较?

GitHub 会对不同类型做宽松数值转换,例如字符串 `1` 与布尔 true 可以相等。GitHub Actions 表达式求值按官方引擎显示这种结果。

什么时候可以省略 `${{ }}`?

在工作流的 if 条件中通常可以省略,其他位置通常需要外壳。这里接受裸表达式或完整外壳,不接受两者与额外文字混排。

如何用 fromJSON 把字符串转为数字或布尔值?

把代表 JSON 值的字符串传给 fromJSON,例如 fromJSON(env.DEPLOY)。如果内容不是合法 JSON,函数会报错。

哪些上下文能在 if 条件中使用?

可用名称随作业或步骤的位置而变;本页仅对你填入的模拟上下文求值。请对照 GitHub 文档核查目标位置允许的上下文。

发现某个 workflow 被判错了?

现在核对你的 if 条件

带着真实条件和脱敏后的模拟上下文返回工具面板,在提交工作流前核对原值与真假。

全部解析都在浏览器本地完成。