EAS Workflows 简介
编辑页面
EAS Workflows 是一项用于自动化 React Native 和 Expo 应用的构建、更新、提交和测试的 CI/CD 服务。
For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.
EAS Workflows 是 EAS(Expo Application Services)提供的一项 CI/CD 服务,可帮助团队自动化重复任务,例如构建 Android 和 iOS 二进制文件、发布空中更新、提交到应用商店、使用 Maestro 运行 E2E 测试,以及将 Web 应用部署到 EAS Hosting。
EAS Workflows 运行在托管的云环境中,提供专为移动应用开发设计的预打包任务类型。当你的 EAS 项目关联到 GitHub 后,团队可以通过 GitHub 事件(push、pull request、labels)或计划(cron)触发工作流,也可以通过 EAS CLI 手动运行。

了解如何自动化每个应用开发团队都必须处理的一些最常见流程:创建开发构建、发布预览更新,以及部署到生产环境。
快速开始
下面的eas命令需要 EAS CLI。有关更多信息,请参阅如何安装 EAS CLI。
工作流定义为项目根目录下 .eas/workflows/ 目录中的 YAML 文件。每个文件指定一个 name、可选的触发器(on),以及一个或多个在云端运行的 jobs。你可以使用以下命令通过 EAS CLI 运行工作流:
- eas workflow:run .eas/workflows/your-workflow.yml主要特性
- 为 React Native/Expo 预打包:提供可直接使用的任务类型(
build、submit、update、maestro、deploy等),抽象掉实现复杂度 - 无需管理基础设施:运行在带有 macOS 和 Linux worker 的 EAS 上,因此你无需维护 CI 服务器或配置 Android Studio/Xcode
- 统一的产物管理:所有构建产物、更新和日志都会显示在 EAS 仪表板上
- GitHub 集成:可通过 push、pull request 或 label 事件自动触发工作流,并支持分支和路径过滤
- 更快的迭代:结合 Fingerprint、Get Build 和 Update 任务,避免重复的原生构建,并在可能时发布 OTA(空中)更新
- 内置 E2E 测试:直接在工作流中于 Android 模拟器和 iOS 模拟器上运行 Maestro 测试
- Slack 通知:工作流成功或失败时向 Slack 频道发送通知
- Repack:复用现有构建的元数据和 JavaScript bundle,以更快创建兼容的构建
工作流触发类型
Push 工作流
当提交被推送到匹配的分支或标签时运行。支持使用 glob 模式进行分支、标签和路径过滤。
Pull request 工作流
当 pull request 被打开、更新或添加标签时运行。适用于预览构建以及合并前的自动化测试。
定时工作流
按 cron 计划运行(例如夜间构建或每周回归测试)。定时工作流仅在默认分支上运行。
手动工作流
使用 eas workflow:run 命令按需运行。支持参数化输入,便于灵活执行。
App Store Connect 工作流
当发生选定的 App Store Connect 事件时运行(例如应用版本状态变更、构建上传状态、外部测试版状态或测试反馈事件)。
要使用 App Store Connect 触发器,请在 EAS 仪表板中配置 App Store Connect 连接:项目设置 > 常规 > 连接。
有关配置细节和受支持值,请参阅 on.app_store_connect 语法参考。
何时使用 EAS Workflows
| 场景 | 推荐 |
|---|---|
| 为你的 Expo 和 React Native 应用自动化 Android 和 iOS 构建 | |
| 自动将构建提交到 App Store 和 Google Play | |
| 在每次提交或合并时发布空中更新 | |
| 将 Maestro E2E 测试作为 CI 的一部分运行 | |
| 通过 GitHub push 或 pull request 事件触发构建和更新 | |
| 将 Web 应用部署到 EAS Hosting | |
| 使用基于 fingerprint 的逻辑跳过重复的原生构建 | |
| 无需管理自己的基础设施或 macOS 机器即可实现 CI/CD | |
| 使用非 EAS 服务(如 Docker、自定义 runner)构建高度定制化的流水线 | |
| 具有多种配置变体并行运行的矩阵构建 | |
| 用于非 React Native 项目的 CI/CD |
常见问题(FAQ)
工作流与其他 CI 服务相比如何?
EAS Workflows 旨在帮助你和你的团队发布应用。它预先配置了可打包的任务类型,可以构建、提交、更新、运行 Maestro 测试等。所有任务类型都运行在 EAS 上,因此你只需管理一组 YAML 文件,并且任务运行产生的所有产物都会显示在 expo.dev 上。
其他 CI 服务,如 CircleCI 和 GitHub Actions,功能更通用,能够做的事情比工作流更多。不过,这些服务也要求你理解每个任务的实现方式。在某些情况下这很有必要,但工作流通过预打包应用开发者最核心的任务类型,帮助你更快完成常见任务。此外,工作流的设计目标是为当前任务提供尽可能快的云端机器,并且我们会持续为你更新这些能力。
EAS Workflows 非常适合与你的 Expo 应用相关的操作,而其他 CI/CD 服务则会为其他类型的工作流提供更好的体验。
工作流运行在哪些云机器上?
工作流运行在 EAS 的托管基础设施上:
- Linux workers:
linux-medium(4 vCPU,16 GB RAM)或linux-large(8 vCPU,32 GB RAM) - 支持嵌套虚拟化的 Linux,用于 Android 模拟器:
linux-medium-nested-virtualization或linux-large-nested-virtualization - 用于 iOS 构建和模拟器的 macOS workers:
macos-medium(5 核,20 GB RAM)或macos-large(10 核,40 GB RAM)
我可以在工作流中使用环境变量吗?
可以。工作流支持 EAS 环境变量 和内联 env 值。可以使用 ${{ env.VARIABLE_NAME }} 语法引用环境变量。
当前有哪些限制?
没有共享的工作流配置(每个工作流都必须独立定义),也没有矩阵构建(无法并行运行具有不同配置的多个变体)。有关更多细节和更新,请参阅限制。
我可以在工作流中运行自定义脚本吗?
可以。自定义任务 配合 steps 可让你运行 shell 命令、使用内置函数如 eas/checkout 和 eas/install_node_modules,并为下游任务设置输出。
EAS Workflows 是否适用于现有的 React Native 项目?
可以。只要项目已配置为 EAS Build,EAS Workflows 就同时适用于 CNG(Continuous Native Generation) 和现有的 React Native 项目。
在考虑使用 EAS Workflows?请在下次团队会议中分享以下幻灯片
在下次团队会议中分享以下幻灯片,讨论 EAS Workflows 是什么,以及它如何帮助你的团队:

EAS Workflows CI/CD 同步幻灯片
了解使用 EAS Workflows 自动化你的 CI/CD 流程的好处。
开始使用
了解如何创建并运行你的第一个工作流。
使用可直接使用的任务来构建、提交、更新、测试并部署你的应用。
了解用于定义工作流的 YAML 语法。
查看用于开发构建、预览更新和生产部署的常见工作流。