
关于
帮助理解和编写 Expo 项目的 EAS 工作流 YAML 文件。适用于用户询问 Expo 或 EAS 上下文中的 CI/CD 或工作流、提及 .eas/workflows/ 或需要 EAS 构建管道或部署自动化帮助。
name: expo-cicd-workflows description: 帮助理解和编写 Expo 项目的 EAS 工作流 YAML 文件。当用户在 Expo 或 EAS 上下文中询问 CI/CD 或工作流、提到 .eas/workflows/、或需要 EAS 构建管道或部署自动化方面的帮助时使用此技能。 allowed-tools: "Read,Write,Bash(node:*)" risk: unknown source: community version: 1.0.0 license: MIT License
EAS 工作流技能
帮助开发者编写和编辑 EAS CI/CD 工作流 YAML 文件。
何时使用
- 你需要为 Expo 项目创建、编辑或验证
.eas/workflows/*.yml文件。 - 任务涉及 EAS 构建管道、部署自动化、工作流触发器或 Expo CI/CD 配置。
- 你需要基于 schema 的工作流指导,而不是依赖过时的记忆语法。
参考文档
在生成或验证工作流文件之前获取这些资源。使用此技能 scripts/ 目录中的获取脚本(使用 Node.js 实现);它使用 ETag 缓存响应以提高效率:
# Fetch resources
node {baseDir}/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 进行验证:
# Install dependencies if missing
[ -d "{baseDir}/scripts/node_modules" ] || npm install --prefix {baseDir}/scripts
node {baseDir}/scripts/validate.js <workflow.yml> [workflow2.yml ...]
验证器会获取最新的 schema 并检查 YAML 结构。在认为工作流完成之前修复所有报告的错误。
回答问题
当用户询问可用选项(作业类型、触发器、运行器类型等)时,获取 schema 并从中推导答案,而不是依赖可能过时的信息。
限制
- 仅在任务明确匹配上述范围时使用此技能。
- 不要将输出视为特定环境验证、测试或专家审查的替代品。
- 如果缺少必需的输入、权限、安全边界或成功标准,请停下来并要求澄清。