独家精品!git action发布electron成功的关键

首先来说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发布electron成功的关键_第1张图片

 独家精品!git action发布electron成功的关键_第2张图片

其他类型错误的解决方法,在我别的文章有介绍。

按照上面的方法,git action构建成功的样子是这样的:

独家精品!git action发布electron成功的关键_第3张图片

独家精品!git action发布electron成功的关键_第4张图片

独家精品!git action发布electron成功的关键_第5张图片 

 

最后附上我总结并测试成功的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

你可能感兴趣的:(git,action,electron)