解决GitHub Action发布ElectronJS应用至Release无输出文件故障
解决Electron应用通过GitHub Action发布到GitHub Release的问题
问题诊断
你的配置存在几个关键问题,导致未生成预期安装包且Release页面仅显示源文件:
- 触发逻辑不合理:所有代码推送都会触发构建,不符合版本发布的场景,且普通推送触发的Workflow中,默认
GITHUB_TOKEN权限不足以完成Release发布 - 输出路径匹配不准确:Electron Builder在不同系统下的默认输出路径存在细分目录,当前路径规则可能无法匹配到产物文件
- 缺少Electron Builder发布配置的验证环节:未确认
package.json中的脚本和构建配置是否符合发布要求
修正后的Workflow配置
name: Release # 仅在推送版本tag时触发,例如v1.0.0格式的tag on: push: tags: - 'v*' jobs: release: runs-on: ${{ matrix.os }} strategy: matrix: os: [macos-latest, ubuntu-latest, windows-latest] steps: - uses: actions/checkout@v3 # 拉取完整提交历史,避免Electron Builder版本计算出错 with: fetch-depth: 0 - uses: actions/setup-node@v3 with: node-version: 18 # 缓存npm依赖,提升构建速度 cache: 'npm' - name: 安装Ubuntu系统依赖 if: matrix.os == 'ubuntu-latest' run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev libnss3-dev libasound2-dev - name: 安装项目依赖 run: npm ci # 基于package-lock.json安装,保证依赖版本稳定 - name: 构建并发布 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # 需确保package.json中的publish脚本为electron-builder发布命令 run: npm run publish - name: 上传构建产物 uses: actions/upload-artifact@v3 # 使用官方上传Action,稳定性更高 with: name: ${{ matrix.os }}-build path: | out/**/*.zip out/**/*.exe out/**/*.deb out/**/*.rpm if-no-files-found: error # 未找到文件直接报错,便于排查问题
额外配置验证
检查package.json配置
- 确认scripts中的publish字段正确:
"scripts": { "publish": "electron-builder --publish always" } - 确认build配置包含GitHub发布设置:
"build": { "appId": "com.yourdomain.yourapp", "publish": { "provider": "github", "releaseType": "release" } }
- 确认scripts中的publish字段正确:
遵循版本tag规范
推送tag时需使用vx.x.x格式,例如执行git tag v1.0.0后,再运行git push origin v1.0.0触发Workflow权限确认
默认的GITHUB_TOKEN在tag推送触发的Workflow中,已具备创建Release和上传资产的权限,无需额外配置
内容的提问来源于stack exchange,提问作者mohsen shabanian
相关产品推荐
相关产品推荐

