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 Workflows
观看:开始使用 EAS Workflows

了解如何自动化每个应用开发团队都必须处理的一些最常见流程:创建开发构建、发布预览更新,以及部署到生产环境。


快速开始

下面的 eas 命令需要 EAS CLI。有关更多信息,请参阅如何安装 EAS CLI

工作流定义为项目根目录下 .eas/workflows/ 目录中的 YAML 文件。每个文件指定一个 name、可选的触发器(on),以及一个或多个在云端运行的 jobs。你可以使用以下命令通过 EAS CLI 运行工作流:

Terminal
eas workflow:run .eas/workflows/your-workflow.yml

主要特性

  • 为 React Native/Expo 预打包:提供可直接使用的任务类型(buildsubmitupdatemaestrodeploy 等),抽象掉实现复杂度
  • 无需管理基础设施:运行在带有 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 服务则会为其他类型的工作流提供更好的体验。

我可以在没有 GitHub 的情况下触发工作流吗?

可以。无论 on 触发配置如何,任何工作流都可以使用 eas workflow:run 手动运行。你也可以使用 cron 语法配置定时触发。

工作流运行在哪些云机器上?

工作流运行在 EAS 的托管基础设施上:

  • Linux workers: linux-medium(4 vCPU,16 GB RAM)或 linux-large(8 vCPU,32 GB RAM)
  • 支持嵌套虚拟化的 Linux,用于 Android 模拟器:linux-medium-nested-virtualizationlinux-large-nested-virtualization
  • 用于 iOS 构建和模拟器的 macOS workersmacos-medium(5 核,20 GB RAM)或 macos-large(10 核,40 GB RAM)
工作流可以并行运行任务吗?

可以。没有依赖关系的任务默认会并行运行。

使用 needs 指定某个任务应等待另一个任务成功,或使用 after 等待某个任务完成,无论成功或失败。

我可以在工作流中使用环境变量吗?

可以。工作流支持 EAS 环境变量 和内联 env 值。可以使用 ${{ env.VARIABLE_NAME }} 语法引用环境变量。

当前有哪些限制?

没有共享的工作流配置(每个工作流都必须独立定义),也没有矩阵构建(无法并行运行具有不同配置的多个变体)。有关更多细节和更新,请参阅限制

我可以在工作流中运行自定义脚本吗?

可以。自定义任务 配合 steps 可让你运行 shell 命令、使用内置函数如 eas/checkouteas/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 同步幻灯片

了解使用 EAS Workflows 自动化你的 CI/CD 流程的好处。

开始使用

创建你的第一个工作流

了解如何创建并运行你的第一个工作流。

预打包任务

使用可直接使用的任务来构建、提交、更新、测试并部署你的应用。

工作流语法参考

了解用于定义工作流的 YAML 语法。

示例工作流

查看用于开发构建、预览更新和生产部署的常见工作流。