如何使用expo-github-action为Expo React Native项目配置自动构建部署
Expo React Native项目GitHub Actions双端构建部署配置步骤
不需要下载expo-github-action仓库的压缩包,该工具是官方维护的GitHub Action组件,直接在你自己项目的工作流配置中引用即可,无需将其代码导入你的仓库。
前置准备
- 你的Expo React Native项目已正常提交到新建的GitHub仓库中,本地可正常执行
eas build完成双端打包 - 已注册Expo账号,且已完成苹果/谷歌开发者账号的对应绑定(需要部署到应用商店的场景)
步骤1:配置GitHub仓库敏感密钥
所有敏感凭证都需要存在GitHub Secrets中,禁止明文写在工作流配置里:
- 登录Expo账号进入个人设置,生成权限包含构建、部署的个人访问令牌
- 打开你的GitHub仓库,依次进入
Settings→Secrets and variables→Actions,点击New repository secret - 将刚才生成的Expo访问令牌命名为
EXPO_TOKEN存入,若需要自动部署到应用商店,还需要将苹果开发者凭证、谷歌服务账号密钥等敏感信息也作为密钥依次存入
步骤2:编写GitHub Actions工作流配置
- 在你的项目根目录下新建层级文件夹
.github/workflows/ - 在该文件夹下新建工作流文件,比如命名为
eas-build-deploy.yml,写入以下配置:
name: EAS Build & Deploy # 触发条件:示例为推送到main分支时触发,可根据需求修改为tag推送、手动触发等 on: push: branches: - main jobs: build-android: name: Build Android App runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 18.x cache: 'npm' - name: Install dependencies run: npm install - name: Install EAS CLI run: npm install -g eas-cli - name: Login to Expo uses: expo/expo-github-action@v8 with: eas-version: latest token: ${{ secrets.EXPO_TOKEN }} # 可添加--auto-submit参数自动提交到Google Play - name: Run Android build run: eas build --platform android --non-interactive build-ios: name: Build iOS App runs-on: macos-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 18.x cache: 'npm' - name: Install dependencies run: npm install - name: Install EAS CLI run: npm install -g eas-cli - name: Login to Expo uses: expo/expo-github-action@v8 with: eas-version: latest token: ${{ secrets.EXPO_TOKEN }} # 可添加--auto-submit参数自动提交到App Store - name: Run iOS build run: eas build --platform ios --non-interactive
步骤3:提交并测试工作流
将新增的.github文件夹整体提交到Git仓库,推送到GitHub的main分支后,打开仓库的Actions标签页即可看到工作流已自动启动,点击对应运行任务即可查看实时日志,出现报错可根据日志提示排查问题。
注意事项
- 首次配置前建议先在本地执行对应
eas build命令确认打包逻辑正常,再放到CI环境运行 - 若不需要每次推送到main分支都触发构建,可以修改
on字段的触发规则,比如设置为只有推送v开头的标签时触发,或者添加workflow_dispatch字段支持手动点击触发
内容的提问来源于stack exchange,提问作者SUperwoman
相关产品推荐
相关产品推荐

