GitHub Actions:更智能的编辑、更清晰的调试和新的 case 函数
Source: GitHub Actions Blog
我们已经发布了多项改进,使 GitHub Actions 更易于编写、验证和排查工作流逻辑,尤其是在使用 if: 条件控制运行内容时。
- 全新
case函数,实现更具表现力的条件逻辑 - 扩展表达式日志,帮助你 了解作业被跳过的原因
- 在 VS Code、网页编辑器及其他 IDE 中提供更好的工作流编写体验
- 为
action.yml文件提供编辑器支持 - 改进
if:条件的处理
使用 case 函数编写更具表现力的表达式
GitHub Actions 表达式现在支持 case 函数,可执行真正的逻辑运算,类似于 SQL 中的 case 表达式。它让你能够处理多种逻辑操作,包括 if‑else、if‑else if、if‑else if‑else 以及 switch‑case。该函数使用布尔值,避免了 当前变通方案 的限制。更多信息请参阅 表达式文档。
了解作业被跳过的原因
当作业因 if: 条件被跳过时,你现在可以准确看到原因。作业日志会显示原始表达式以及在运行时展开后的版本,其中包含所有上下文的实际值。获取这些日志的详细方法请参阅 作业条件日志文档。
跨编辑器的更佳工作流编写体验
我们已将 GitHub Actions VS Code 扩展中的增强工作流编写体验移植到网页编辑器和其他 IDE。改进包括:
- 更智能的自动完成:基于上下文的表达式、事件负载、
needs输出和matrix值补全。 - 表达式校验:捕获无效的上下文访问、未识别的函数以及
if条件中的文字文本。 - 悬停文档:在行内查看函数签名和上下文描述。
- 独立二进制文件:在 NeoVim、Emacs、Sublime 或其他编辑器中使用语言服务。
- 以及内联 cron 调度提示、更智能的语法补全等功能。
对 action.yml 文件的编辑器支持
动作作者现在也能获得与工作流作者相同的编辑体验。当你在 VS Code、网页编辑器或任何使用独立二进制文件的编辑器中打开 action.yml 文件时,你将得到:
- 自动完成:针对动作元数据字段(
name、description、inputs、outputs、runs等)。 - 上下文感知的
runs完成:根据你的动作类型(Node.js、复合或 Docker)进行过滤。 - 校验:检查模式合规性、必填字段和表达式。
- 脚手架代码片段:快速启动新动作。
改进 if: 条件的处理
我们添加了改进,以捕获 if: 条件和其他工作流字段中的常见陷阱。具体包括:
if条件中出现${{ }}标记之外的文本,这会导致整个表达式成为字符串(始终为真)。现在 VS Code 和网页编辑器的编辑器校验会捕获此问题,并在工作流运行时生成注释。- 无效的
format字符串,也会被编辑器校验捕获。 - 自动去除尾随换行符。
实际意义
- 减少因始终为真的字符串导致的意外作业和步骤。
- 更早获得对格式错误条件的反馈。
从编写到调试,你的工作流体验变得更加顺畅。
加入 GitHub Community 的讨论吧。