介绍
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版本之上本文自动失效。
4 评论