SuperAPI AI 工具集

eas-build-and-submit

部署与运维

查看项目

更新于 10-18 18:02

技能介绍

用途

EAS Build and Submit 是一个面向 Expo 应用的构建与提交配置技能,围绕 eas.json 文件、版本号、指纹和商店提交流程提供一套可检查、可验证的规则。它主要服务于需要把 React Native 应用发布到 TestFlight 和 Google Play 内部测试的开发者与团队。

主要能力与规则

该技能覆盖以下配置与流程要点:

  • 操作确认:商店构建、每次 eas submit、eas build:version:set 以及任何凭据变更前,都必须先询问开发者,因为这些操作会上传内容、占用构建号或更改共享签名状态,且不可撤销。
  • eas.json 有效性:cli.version 为不低于 24.10.0 的下限,所有键值需通过 EAS CLI 自身 schema 校验,extends 链需可解析,可离线使用 eas config --eas-json-only 检查。
  • 远程递增构建号:cli.appVersionSource 设为 remote,每个商店配置启用 autoIncrement: true,应用配置保留字面量 version,不写 ios.buildNumber 或 android.versionCode。
  • 构建对应确切提交:cli.requireCommit 为 true,商店构建须从发布分支的干净工作树开始。
  • 按变体划分配置:development、development-simulator、preview、preview-simulator 和 production 五类配置,仅 production 为商店构建,构建 Android app bundle、签名,且不设 developmentClient、withoutCredentials 或 ios.simulator;内部配置不构建 AAB。
  • 固定 Node 版本:每份构建配置都固定项目所需的 Node 版本,与 .nvmrc 一致。
  • 提交配置:submit.production 固定生产标识(ios.ascAppId、ios.bundleIdentifier、android.applicationId),不使用 .dev 或 .preview 标识;Android track 为 internal(或 alpha、beta),releaseStatus 为 completed 或 draft。
  • 凭据管理:使用托管凭据(credentialsSource: remote),每次 eas build 加 --freeze-credentials,不进行 appleId 登录,不在 eas.json 中写死密钥路径;代理不打开 .p8、.p12、keystore 或服务账号文件。
  • 先门禁后执行:对外 eas build 须在 npm run verify 或 scripts/eas/release-preflight.ts 之后运行;eas submit 须在针对其构建记录的 check-eas-build 之后运行,且在同一脚本或任务中作为命令执行。每个 eas build/eas submit 都要指定 --profile,使用全局 eas 而非 npx eas-cli,不使用 eas submit --latest;--auto-submit 仅限商店配置且仅限 iOS;CI 命令传 --platform,eas submit 加 --non-interactive。
  • 基于构建记录的提交:用 check-eas-build 检查 eas build:view <id> --json 的完成状态、商店分发、生产配置、已审阅 commit、生产 id、应用版本、高于所有上传标签的构建号以及预检写入的指纹;随后下载构建产物至指定路径,经商店侧门禁检查后,用 eas submit --path 提交该文件。
  • 指纹决策:比较同一变体和平台的指纹(eas fingerprint:compare --build-id <id>),.fingerprintignore 不得隐藏 package.json、lockfile、应用配置、plugins/、patches/ 或 node_modules/,sourceSkips 不得为 ExpoConfigAll。
  • 停止不重试:遇到凭据错误、协议问题、HTTP 401/403、缺少应用记录、构建号已被使用、Play 草稿应用、INVALID 处理状态等情况,输出一条包含步骤、确切错误和单一处理动作的消息。
  • 提交后打标签:每个已提交构建从其记录打 git 标签(如 v1.4.0+ios.14),仅在开发者确认后推送。

使用方式

工作流程大致为:选择路线并列出需要人工完成的步骤;全局安装 EAS CLI;从模板编写 eas.json 并填写生产 id;修正 app.config.ts 的版本字段;复制发布模板脚本并运行测试、类型检查和 lint;运行 check-eas-config.mjs 直至通过;商店发布时依次运行预检、构建、构建记录检查、产物下载与商店门禁、eas submit --path,最后打标签并汇报。内部构建(开发客户端、预览、模拟器构建)无需预检。若判断应改为 OTA 更新,则比较指纹后交由 ota-updates 处理。失败时查阅故障处理参考文件,选择修复重跑或发送停止消息。

适用场景

适用于需要将 Expo/React Native 应用以受控流程发布到 App Store 与 Google Play 的团队,尤其是要求构建可追溯到确切提交、构建号不冲突、凭据不泄露、提交前经过多层校验的项目。

限制

该技能的检查器仅适用于使用 EAS 的项目;无法使用 EAS 的团队走本地路线时,检查器输出 NOT APPLICABLE。该技能不涉及商店上架后的推广、灰度发布等决策。技能中提到的脚本与模板需按项目实际情况集成,具体代码内容以源文件为准。