You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Expo (EAS) iOS首次构建提交全CI自动化(无需交互)

解决Expo iOS首次CI构建的交互式依赖问题

问题本质

Expo首次构建需要完成iOS证书、描述文件关联,以及EAS项目初始化配置,官方要求的“本地成功运行一次构建”,本质是要手动完成这些交互式确认步骤。我们可以通过预生成固化配置,让CI直接复用,跳过所有交互环节。

实操步骤

1. 预生成初始化配置模板

找一个测试应用在本地完整跑一次eas build流程,结束后保存以下文件作为模板:

  • .eas/build.json:EAS核心构建配置文件
  • ios/目录下所有自动生成的文件(比如Podfile.lock、Expo.xcworkspace、Expo.plist等)
  • 如果使用自签名证书,导出对应的.p12证书文件和.mobileprovision描述文件

2. 集成到多应用代码生成工具

生成新应用时,自动注入模板文件并替换变量:

  • 复制.eas/build.json到新项目根目录,替换其中的bundleIdentifier、projectId等为新应用的对应值
  • 直接将ios/模板文件同步到新应用的ios目录
  • 证书和描述文件不要直接存入代码,转成Base64字符串后,要么存到GitLab CI环境变量,要么加密后纳入工具资源库

3. 优化CI构建命令

在原有命令基础上添加参数,跳过交互式配置检查:

npx eas-cli build --platform ios --auto-submit --non-interactive --no-wait --skip-project-configuration

--skip-project-configuration参数会直接使用预生成的.eas/build.json,不再触发交互式配置确认

4. 在CI环境注入认证信息

在GitLab CI的项目变量中添加以下环境变量:

  • EXPO_APPLE_ID:Apple开发者账号邮箱
  • EXPO_APPLE_PASSWORD:Apple账号专用密码(需在Apple ID管理页面生成,不要用普通登录密码)
  • EXPO_PROVISIONING_PROFILE:描述文件的Base64字符串(本地执行base64 -i 你的描述文件.mobileprovision生成)
  • EXPO_CERTIFICATE:.p12证书的Base64字符串(本地执行base64 -i 你的证书.p12生成)
  • EXPO_CERTIFICATE_PASSWORD:证书设置的密码

然后在CI脚本中添加解码和导入证书的步骤:

# 解码描述文件并放到指定目录
echo "$EXPO_PROVISIONING_PROFILE" | base64 --decode > ~/Library/MobileDevice/Provisioning\ Profiles/new-app-profile.mobileprovision
# 解码证书文件
echo "$EXPO_CERTIFICATE" | base64 --decode > /tmp/new-app-cert.p12
# 导入证书到CI环境钥匙串,用于代码签名
security import /tmp/new-app-cert.p12 -k ~/Library/Keychains/login.keychain-db -P "$EXPO_CERTIFICATE_PASSWORD" -T /usr/bin/codesign

5. 验证全自动化流程

生成一个新应用后直接触发GitLab CI构建,检查是否能自动完成从构建到提交TestFlight的全流程,无需任何手动交互操作。

内容的提问来源于stack exchange,提问作者Ajaib Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 23:22:10