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

在GitHub Action中实现eas build --local构建、上传GitHub Releases及生成二维码

Expo项目GitHub Actions工作流:补充构建产物上传与Expo Go二维码生成

需求回顾

你需要为Expo项目的GitHub Actions工作流补充两个核心能力:

  • 将eas build --local生成的Android/iOS产物上传至GitHub Releases
  • 生成可通过Expo Go扫描的应用二维码
    同时需规避付费的eas build --auto方案,现有本地构建配置已完成。

完整配置方案

以下是补充后的完整GitHub Actions配置,包含产物上传与二维码生成逻辑:

jobs: 
  build_and_deploy:
    if: github.event_name == 'pull_request' || github.event_name == 'push'
    name: Build, Upload & Generate QR Code
    runs-on: ubuntu-latest
    permissions:
      contents: write # 赋予创建Release和上传资产的权限
    steps:
      - uses: actions/checkout@v3
      - name: 🏗 Setup Workflow
        uses: ./.github/actions/setup

      - name: 🏗 Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: '18.x'
          cache: pnpm
      - name: 📦 Install dependencies
        run: pnpm install
     
      - name: 🏗 Setup EAS
        uses: expo/expo-github-action@v8
        with:
          eas-version: latest
          token: ${{ secrets.EXPO_TOKEN }}

      # 修改构建命令,指定明确的输出文件名,方便后续定位产物
      - name: 👷 Build Android app
        run: |
              eas build --local \
              --non-interactive \
              --output=./app-build/android-release.aab \
              --platform=android 
  
      - name: 👷 Build iOS app
        run: |
              eas build --local \
              --non-interactive \
              --output=./app-build/ios-release.ipa \
              --platform=ios    

      # 上传构建产物到GitHub Releases
      - name: 🚀 Upload to GitHub Releases
        uses: softprops/action-gh-release@v1
        with:
          files: |
            ./app-build/android-release.aab
            ./app-build/ios-release.ipa
          tag_name: v${{ github.run_number }} # 用运行编号作为版本标签,可自定义
          name: Build ${{ github.run_number }}
          draft: false
          prerelease: ${{ github.event_name == 'pull_request' }} # PR触发时标记为预发布
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      # 发布项目到Expo托管服务,生成Expo Go可访问的URL
      - name: 📤 Publish to Expo
        run: expo publish --non-interactive
        id: expo_publish

      # 获取Expo项目URL并生成二维码图片
      - name: 🎨 Generate Expo Go QR Code
        uses: adamkdean/qrcode-action@v1.0.0
        with:
          content: ${{ steps.expo_publish.outputs.url }} # 从publish步骤获取项目URL
          output: ./app-build/expo-go-qr.png
          size: 300

      # 将二维码上传到GitHub Releases
      - name: 🚀 Upload QR Code to Releases
        uses: softprops/action-gh-release@v1
        with:
          files: ./app-build/expo-go-qr.png
          tag_name: v${{ github.run_number }} # 与之前的Release标签一致
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

关键步骤说明

1. 构建产物定位

修改eas build命令的--output参数,指定具体的文件名(如android-release.aab、ios-release.ipa),避免后续因默认文件名不固定导致无法找到产物。

2. GitHub Releases上传

使用softprops/action-gh-release工具:

  • 配置files字段指定要上传的产物路径
  • 通过tag_name定义Release版本标签,这里用GitHub运行编号自动生成,也可替换为自定义版本规则
  • 根据触发事件(PR/推送)设置prerelease状态,PR触发时标记为预发布版本

3. Expo Go二维码生成

  • 先执行expo publish将项目发布到Expo托管服务,生成Expo Go可扫描的项目URL
  • 使用adamkdean/qrcode-action工具,基于发布后的URL生成二维码图片
  • 最后将二维码图片也上传到GitHub Releases,方便测试人员直接扫描使用

注意事项

  • 确保GitHub仓库已配置EXPO_TOKEN,GITHUB_TOKEN由GitHub Actions自动提供,无需手动添加
  • iOS构建在Ubuntu环境下可能需要额外依赖配置,建议将iOS构建拆分为单独Job,使用macos-latest运行环境
  • 若无需发布到Expo托管,可改用expo url --public获取项目公共URL,前提是项目已完成初始化配置

内容的提问来源于stack exchange,提问作者Daniel Dennis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:35:15