适用场景
当需要帮助理解和编写 Expo 项目的 EAS 工作流 YAML 文件时使用本技能。当用户询问 Expo 或 EAS 环境下的 CI/CD 或工作流、提到 .eas/workflows/,或希望获得 EAS 构建流水线或部署自动化方面的帮助时适用。本技能帮助开发者编写和编辑 EAS CI/CD 工作流 YAML 文件。
参考文档
在生成或验证工作流文件之前,先抓取以下资源。首先解析本技能所在目录,然后使用其 scripts/ 目录中的 fetch 脚本。该脚本使用 Node.js 实现,并利用 ETag 缓存响应以提高效率:
抓取资源
node <skill-dir>/scripts/fetch.js <url>
JSON Schema — https://api.expo.dev/v2/workflows/schema
必须抓取此 schema
验证的权威来源
所有作业类型及其必需/可选参数
触发器类型与配置
运行器类型、VM 镜像及所有枚举值
语法文档 — https://raw.githubusercontent.com/expo/expo/refs/heads/main/docs/pages/eas/workflows/syntax.mdx
工作流 YAML 语法概览
示例与英文说明
表达式语法与上下文
预打包作业 — https://raw.githubusercontent.com/expo/expo/refs/heads/main/docs/pages/eas/workflows/pre-packaged-jobs.mdx
受支持的预打包作业类型的文档
各作业的参数与输出
不要依赖记忆中的值;这些资源会随新功能的加入而变化。
工作流文件位置
工作流位于 .eas/workflows/*.yml(或 *.yaml)。
顶层结构
工作流文件包含以下顶层键:
name — 工作流的显示名称
on — 启动工作流的触发器(至少需要一个)
jobs — 作业定义(必需)
defaults — 所有作业共享的默认值
concurrency — 控制并行工作流运行
各节的完整规范请查阅 schema。
表达式
使用 ${{ }} 语法表示动态值。schema 定义了可用的上下文:
github.* — GitHub 仓库与事件信息
inputs.* — workflow_dispatch 输入的值
needs.* — 依赖作业的输出与状态
jobs.* — 作业输出(替代语法)
steps.* — 自定义作业中步骤的输出
workflow.* — 工作流元数据
生成工作流
在生成或编辑工作流时:
抓取 schema 以获取当前作业类型、参数和允许值
验证每种作业类型的必需字段是否齐全
核实 needs 和 after 中引用的作业在工作流中确实存在
检查表达式引用了有效的上下文与输出
确保 if 条件符合 schema 的长度约束
验证
生成或编辑工作流文件后,对照 schema 进行验证:
如缺少依赖则安装
[ -d "<skill-dir>/scripts/node_modules" ] || npm install --prefix <skill-dir>/scripts
node <skill-dir>/scripts/validate.js <workflow.yml> [workflow2.yml ...]
验证器会抓取最新 schema 并检查 YAML 结构。在认为工作流完成之前,修复所有报告的错误。
回答问题
当用户询问可用选项(作业类型、触发器、运行器类型等)时,抓取 schema 并从中得出答案,而不是依赖可能过时的信息。
限制
仅在任务明确匹配其上游产品或 API 范围时使用本技能。
在做出更改前,对照当前官方文档核实命令、API 行为、定价、配额、凭据和部署影响。
不要将生成的示例视为环境特定测试、安全审查或对破坏性或高成本操作的用户批准的替代品。