SuperAPI AI 工具集

eas-workflows

部署与运维

查看项目

更新于 10-27 13:02

技能介绍

用途

该技能用于帮助开发者理解并编写 Expo 项目的 EAS CI/CD 工作流 YAML 文件。当用户询问 Expo 或 EAS 环境下的 CI/CD 或工作流相关问题时,可使用此技能。

主要能力

  • 生成和编辑 EAS 工作流 YAML 文件。
  • 回答关于工作流语法、可用选项(作业类型、触发器、运行器类型等)的问题。
  • 在生成或编辑前获取官方参考文档,避免依赖可能过时的记忆信息。

使用方式

参考文档获取

在生成或编辑工作流文件,或回答语法问题时,应先解析该技能所在目录,然后使用其 scripts/ 目录中的 fetch 脚本获取资源。该脚本使用 Node.js 实现,并通过 ETags 缓存响应以提高效率:

# Fetch resources
node <skill-dir>/scripts/fetch.js <url>

需要获取的资源包括:

  • JSON Schema — https://api.expo.dev/v2/workflows/schema
    • 必须获取此 schema。
    • 它是工作流 YAML 结构的权威来源;EAS CLI 仍是最终权威验证器。
    • 包含所有作业类型及其必填/可选参数、触发器类型与配置、运行器类型、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)。每个文件必须不超过 16 KiB。

顶层结构

工作流文件包含以下顶层键:

  • name — 工作流的显示名称
  • on — 启动工作流的触发器(至少需要一个)
  • jobs — 作业定义(必填)
  • defaults — 所有作业的共享默认值
  • concurrency — 控制并行工作流运行

各部分的完整规范请查阅 schema。

表达式

使用 ${{ }} 语法表示动态值。schema 定义了可用的上下文:

  • github.* — GitHub 仓库与事件信息
  • inputs.* — 来自 workflow_dispatch 输入的值
  • needs.* — 依赖作业的输出与状态
  • jobs.* — 作业输出(替代语法)
  • steps.* — 自定义作业内的步骤输出
  • workflow.* — 工作流元数据

生成工作流

生成或编辑工作流时:

  1. 获取 schema 以了解当前作业类型、参数和允许值。
  2. 验证每种作业类型的必填字段是否齐全。
  3. 验证 needs 和 after 中引用的作业在工作流中存在。
  4. 检查表达式引用了有效的上下文和输出。
  5. 确保 if 条件符合 schema 的长度约束。

验证

生成或编辑工作流文件后,从 Expo 项目根目录使用 EAS CLI 进行验证:

npx -y eas-cli@latest workflow:validate .eas/workflows/<workflow.yml> --non-interactive

对每个更改的工作流文件分别运行该命令。它需要已登录的 EAS CLI 会话和已关联的 Expo 项目。与仅 schema 验证不同,它还会根据项目的 eas.json 检查构建配置文件引用,并执行 EAS 服务端验证。修复所有报告的错误并重新运行命令,直到输出 Workflow configuration YAML is valid。不要用本地 YAML 或 JSON Schema 验证器替代此命令。

回答问题

当用户询问可用选项(作业类型、触发器、运行器类型等)时,应获取 schema 并据此作答,而不是依赖可能过时的信息。

提交反馈

如果在该技能中遇到错误、误导性或过时信息,可向 Expo 报告以便改进:

npx --yes submit-expo-feedback@latest --category skills --subject "eas-workflows" "<actionable feedback>"

仅在确有具体且可操作的内容需要报告时提交。尽可能包含相关上下文。如果 AI 代理反复失败或用户不得不接管 Expo 任务,请加载 expo-skill-feedback 技能并遵循其 eval-candidate 流程,而不是重复使用上述命令。

适用场景

  • 为 Expo 项目编写或修改 EAS CI/CD 工作流 YAML。
  • 解答 EAS 工作流语法、作业类型、触发器、运行器等问题。
  • 需要依据官方 schema 和文档生成准确工作流配置的场景。

限制

  • EAS 是付费服务,有免费额度限制。每个工作流作业会消耗套餐的构建/计算分钟数,构建或提交作业还需要付费的 Apple Developer 和 Google Play 账号。触发运行前请查看 https://expo.dev/pricing。
  • 工作流文件必须不超过 16 KiB。
  • 验证命令需要已登录的 EAS CLI 会话和已关联的 Expo 项目。
  • 不要依赖记忆中的值,应获取官方资源。
  • 不要用本地 YAML 或 JSON Schema 验证器替代 EAS CLI 验证命令。