首先来说git action真心是个坑爹货,使用起来太费劲了,各种报错一大堆。
再加上electron这个更坑爹的东西,二者合璧要把你累死一层皮。
昨天经过反复测试,通过无数次的失败,查找,试验,再失败,最后重要搞成功了。
这里跟各位分享一下成功的经验。
1. electron exe文件的发布必须使用git action的windows平台。
为什么,因为你如果在linux平台上发布的话,你费了好大劲写workflow文件,终于调试到构建的那一步发现:需要装wine, 但是成功不了!完全是浪费时间!
2. 必须安装windows-build-tools 而且必须 vs2015版,否则electron构建必然不成功!
npm install --global --production windows-build-tools --vs2015
但是这里有个坑点: 它在安装python的时候,要么会卡在,要么会进入success无限死循环。
解决办法:
echo 'Closing installer. Return code: 3010.' > $env:TEMP\dd_client_.log
3. electron版本必须跟electron-builder版本匹配,否则构建exe一定不会成功!注意了!这个是关键!
报错一般都是这样的:
其他类型错误的解决方法,在我别的文章有介绍。
按照上面的方法,git action构建成功的样子是这样的:
最后附上我总结并测试成功的workflow文件:
name: Electron Build and Release
on:
workflow_dispatch:
jobs:
build-and-release:
runs-on: windows-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '16'
- name: Install windows-build-tools
run: |
echo 'Closing installer. Return code: 3010.' > $env:TEMP\dd_client_.log
npm install --global --production windows-build-tools --vs2015
- name: Install Dependencies
run: |
npm install --force
- name: Build Electron
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
npm run build
npm run packapp
- name: Find exe files and zip
run: |
cd build
dir
dir *.exe
Compress-Archive -Path .\*.exe -DestinationPath your-file-name.zip # 把build目录下的exe文件压缩成zip
- name: Get package version # 通过package.json文件中的version字段获取发布版本号
id: get_version
run: echo "::set-output name=version::$(cat package.json | jq -r .version)"
- name: Create Release
id: create_release
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
RELEASE_VERSION: ${{ steps.get_version.outputs.version }}
with:
tag_name: v${{ env.RELEASE_VERSION }} # 使用 package.json 中的版本号
release_name: Release v${{ env.RELEASE_VERSION }}
draft: false
prerelease: false
- name: Upload Release Assets
id: upload-release-asset
uses: actions/upload-release-asset@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_VERSION: ${{ steps.get_version.outputs.version }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./build/your-file-name.zip # 指明上面压缩步骤生成的zip文件的路径
asset_name: your-final-release-filename-${{ env.RELEASE_VERSION }}.zip
asset_content_type: application/zip