GitHub Actions 实战Electron打包发布
编辑
              
              15
            
            
          2019-12-05
          介绍
GitHub Actions 是Github推出的持续集成服务,针对公共仓库免费。由于本文并非GitHub Actions的教程,只是一篇实战经验文章,对GitHub Actions不熟悉的朋友建议花十分钟看一看阮一峰写的GitHub Actions 入门教程。
前言
每发布一个版本就需要手动build,手动发布release太过麻烦,进行自动构建主要为了学习和减轻重复工作量。相信到这里读者至少明白了workflow的基本语法和步骤,本文没有使用action-electron-builder动作仓库的内容来进行构建,原因就是它不能满足我的需求,下文中会有说到。
不兼容说明
- 这里我使用的是
vue-cli-plugin-electron-builder插件进行开发,插件作者进行了一层封装就是导致不兼容action-electron-builder动作仓库的原因 - 最初我打算使用
create-release搭配upload-release-asset,使用这两个动作联合发布,但是最后发现electron-builder自带了publish参数进行发布,故放弃使用联合动作。 但是publish配合Github Actions有BUG,这就是第二个不兼容的地方,需要手动解决。 
正文
首先给出我的workflow文件,然后我再进行详细介绍,为什么会这样写。
name: Build/release
on:
  push:
    tags:
      - 'v*.*.*'
jobs:
  release:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [windows-2019]
    steps:
      - name: Check out Git repository
        uses: actions/checkout@v1
      - name: Install Node.js, NPM and Yarn
        uses: actions/setup-node@v1
        with:
          node-version: 10
      - name: Build/release Electron app
        env:
          GH_TOKEN: ${{ secrets.github_token }}
        run: |
          yarn install
          (Get-Content "node_modules/builder-util/out/util.js").Replace("^[\w","^[.\w")| out-file "node_modules/builder-util/out/util.js"
          yarn electron:build --publish always
- name: Action名称,自定义
 - on:Action触发时机,此处表示在打tag标签时,且标签名称为
v*.*.*时触发 - job: 定义工作
 - release: 工作id(名称)
 - runs-on: 在什么平台上允许,取值为下面的数组参数
 - strategy: 多个作业环境,此处我只打包了windows的应用,所以只要windows-2019
 - steps: 步骤
- actions/checkout@v1:使用actions/checkout@v1动作仓库,该动作仓库作用是检出代码到本地
 - actions/setup-node@v1:该动作仓库用于安装node、npm和yarn
 - Build/release Electron app:这是重点,首先定义环境变量
GH_TOKEN用于给electron-builder发布用,run表示需要运行的命令,第一行和第三行都明白,主要是第二行(Get-Content "node_modules/builder-util/out/util.js").Replace("^[\w","^[.\w")| out-file "node_modules/builder-util/out/util.js"。
它的作用是修改node_modules/builder-util/out/util.js文件中的^[\w为^[.\w。至于为什么这么做可以参考electron-builder issues,这是一个bug。 虽然在electron-builder v22.0.0中已经修复,但是我的项目使用vue-cli-plugin-electron-builder插件进行开发,对electron-builder的依赖管理在该插件中,我无法更新版本。 
 - 完成
 - 针对electron、vue、react、Maven等任何项目都是相同的思路。
 
触发自动构建步骤
- 修改package.json中的version值
 - 保存(清空)git的工作区,git push一下
 - 使用
git tag v*.*.*打一个标签 - 使用
git push --tags上传标签到远程 - github会自动开始你的任务脚本。
 - 如果需要删除tag:
- 本地:
git tag -d v*.*.* - 远程: 
git push --delete origin v*.*.* 
 - 本地:
 
更新
2019年12月05日更新:
electron-builder中也提到了我遇到得这个问题,详情看这里。本文的有效性和该补丁的时效性相同,一旦vue-cli-plugin-electron-builder中的electron-builder更新到V22版本之上本文自动失效。
- 0
 - 2
 - 
              
              
  
分享