其他
在 Expo/EAS 项目中编写或修改 EAS CI/CD…
适用于 Expo 项目需要理解、生成或编辑 `.eas/workflows/*.yml` 的 CI/CD 工作流,以及回答 EAS workflow 语法与选项问题。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 39/100 ×0.15
适用场景
在 Expo/EAS 项目中编写或修改 特定
解决思路
- 生成或编辑 workflow 文件、或回答语法问题前,先解析本 skill 的目录,再调用其 `scripts/` 目录下的 fetch 脚本抓取参考资料。
- 使用命令 `node <skill-dir>/scripts/fetch.js <url>` 抓取资源;该脚本用 Node.js 实现,并通过 ETags 缓存响应以提高效率。
- 必须抓取 JSON Schema:`https://api.expo.dev/v2/workflows/schema`,以获取当前 job 类型及必填/可选参数、触发器类型与配置、runner 类型、VM 镜像和所有枚举;它是 workflow YAML 结构的来源,EAS CLI 仍是最终权威验证器。
- 抓取语法文档:`https://raw.githubusercontent.com/expo/expo/refs/heads/main/docs/pages/eas/workflows/syntax.mdx`,了解 YAML 语法概览、示例、表达式语法和上下文。
- 抓取预打包 job 文档:`https://raw.githubusercontent.com/expo/expo/refs/heads/main/docs/pages/eas/workflows/pre-packaged-jobs.mdx`,了解支持的预打包 job 类型及其特定参数和输出。
- 不要依赖记忆中的值;这些资源会随新功能增加而变化。
- 把 workflow 文件放在 `.eas/workflows/*.yml` 或 `.eas/workflows/*.yaml`,并确保每个文件不超过 16 KiB。
- 按顶层键组织 workflow:`name`(显示名称)、`on`(至少一个触发器)、`jobs`(必需)、`defaults`(共享默认值)、`concurrency`(控制并行运行);完整规范查 schema。
- 动态值使用 `${{ }}` 表达式语法;可用上下文包括 `github.*`(GitHub 仓库和事件信息)、`inputs.*`(`workflow_dispatch` 输入值)、`needs.*`(依赖 job 的输出和状态)、`jobs.*`(job 输出,替代语法)、`steps.*`(自定义 job 内的步骤输出)、`workflow.*`(workflow 元数据)。
- 生成或编辑 workflow 时,抓取 schema 以获取当前 job 类型、参数和允许值。
- 生成或编辑 workflow 时,验证每种 job 类型的必需字段都已存在。
- 生成或编辑 workflow 时,验证 `needs` 和 `after` 中引用的 job 都存在于该 workflow 中。
- 生成或编辑 workflow 时,检查表达式引用了有效的上下文和输出。
- 生成或编辑 workflow 时,确保 `if` 条件遵守 schema 的长度约束。
- 生成或编辑 workflow 文件后,在 Expo 项目根目录用 EAS CLI 验证:`npx -y eas-cli@latest workflow:validate .eas/workflows/<workflow.yml> --non-interactive`。
- 对每个变更的 workflow 文件分别运行该验证命令。
- 该验证需要已登录的 EAS CLI 会话和已关联的 Expo 项目;它不仅做 schema 验证,还会根据项目的 `eas.json` 检查 build profile 引用,并执行 EAS 服务端验证。
- 修复所有报告的错误并重新运行验证命令,直到输出 `Workflow configuration YAML is valid.`。
- 不要用本地 YAML 或 JSON Schema 验证器替代 `workflow:validate` 命令。
- 当用户询问可用选项(job 类型、触发器、runner 类型等)时,抓取 schema 并从 schema 推导答案,而不是依赖可能过时的信息。
- 如果遇到错误、误导或过时信息,可提交反馈:`npx --yes submit-expo-feedback@latest --category skills --subject "eas-workflows" "<actionable feedback>"`;仅在具体且可操作时提交,并包含尽可能多的相关上下文。
- 如果 AI agent 反复失败或用户不得不接管 Expo 任务,加载 `expo-skill-feedback` skill 并按其 eval-candidate 流程操作,而不是重复使用上述反馈命令。
适用边界 · 注意事项
- 项目不是使用 Expo/EAS 的 Expo 项目,或不使用 `.eas/workflows/` CI/CD 时。
- 没有 EAS 付费计划/免费额度不足,或需要构建/提交的 job 缺少付费 Apple Developer 和 Google Play 账号时;触发运行前需查看 https://expo.dev/pricing。
- 无法登录 EAS CLI 或未关联 Expo 项目时,无法完成最终权威验证。