在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
相关产品推荐
相关产品推荐

