SuperAPI AI 工具集

expo-cicd-workflows-v55

部署与运维

查看项目

更新于 10-27 16:20

技能介绍

用途

该技能面向 Expo SDK 57 项目,帮助开发者理解并编写 EAS(Expo Application Services)CI/CD 工作流 YAML 文件。当用户询问 CI/CD 或工作流相关问题时,可使用本技能。

主要能力

  • 生成和编辑 EAS CI/CD 工作流 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.* — 工作流元数据

生成工作流时的要求

生成或编辑工作流时:

  • 获取 schema 以了解当前作业类型、参数和允许值。
  • 校验每种作业类型的必填字段是否齐全。
  • 验证 needs 和 after 中引用的作业确实存在于工作流中。
  • 检查表达式引用了有效的上下文和输出。
  • 确保 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 SDK 57 项目编写或修改 EAS CI/CD 工作流 YAML。
  • 查询 EAS 工作流的作业类型、触发器、运行器类型等配置选项。
  • 需要依据官方 schema 与文档校验工作流结构时。

限制

  • EAS 是付费服务,含免费额度限制;每个工作流作业会消耗套餐中的构建/计算分钟数。
  • 涉及构建或提交的作业还需要付费的 Apple Developer 和 Google Play 账号。
  • 触发运行前应查阅 https://expo.dev/pricing。
  • 工作流文件必须不超过 16 KiB。
  • 校验命令需要已登录的 EAS CLI 会话和已关联的 Expo 项目。
  • 具体价格、免费额度数值等细节暂未提供。