GitHub Actions打包Electron
概述
Github Actions允许用户在 Github 上执行一个脚本来完成各种操作。Github Actions脚本可用于编译、打包、自动发布等各种操作。Github提供了一个 Actions 市场,其中提供了各种用途的脚本模板;例如:https://github.com/marketplace?query=electron。
GitHub Actions 的配置文件叫做 workflow 文件,存放在代码仓库的.github/workflows
目录。
workflow 文件采用 YAML 格式,文件名可以任意取,但是后缀名统一为.yml
,比如foo.yml
。一个库可以有多个 workflow 文件。GitHub 只要发现.github/workflows
目录里面有.yml
文件,就会自动运行该文件。
Github Actions工作流基础
https://www.sidoc.cn/doc/1163.html
使用Github Actions自动打包基于各平台的安装包
……
# 当前工作流的名称
name: Build/release
# 当前工作流触发条件:此处是每次推送代码时触发
on: push
# 定义工作流中要执行的作业
jobs:
release:
# 指定当前作业将运行在哪些操作系统上;此处使用矩阵(matrix)策略根据不同的操作系统运行多次作业
runs-on: ${{ matrix.os }}
strategy:
matrix:
# 指定要运行的操作系统,当前作业将在以下3个操作系统上分别运行:macos-latest(最新的 macOS 版本)、ubuntu-latest(最新的 Ubuntu 版本)和 windows-latest(最新的 Windows 版本);
# 矩阵(matrix)策略将为每个指定的操作系统创建一个独立的作业实例;
os: [macos-latest, ubuntu-latest, windows-latest]
arch: [x64, arm64] # 针对不同的架构
steps:
# 使用 actions/checkout 插件检出仓库中的代码
- name: Check out Git repository
uses: actions/checkout@v4
# 安装指定版本的 Node.js
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
# 安装项目依赖
- run: npm install
# 打包编译
- run: npm run make
# 上传 out/make/ 文件夹至 Artifacts
# Artifact是Github提供的临时存储文件的地方,是Github Actions的一部分;
# 文件在Artifact中可以保存90天,单文件大小不能超过2GB,总大小不能超过5GB,否则 GitHub 将自动删除最早的文件以腾出空间;
# Artifact将工作流生成的文件称为工件;即,Artifact是专门用来保存工件的;
# 相同名称的文件保存到Artifact中时会发生冲突,overwrite:true表示覆盖同名文件;
- name: Upload Build Artifacts
uses: actions/upload-artifact@v4
with:
# 保存到 Artifact 的文件名称
name: electron-app-${{ matrix.os }}-${{ matrix.version }}
# 要保存到 Artifact 中的文件或目录
path: out/make/
# 覆盖同名文件
overwrite: true
Artifacts文件的位置:
遇到的坑:
官方推荐使用 electron-forge 打包,常用命令如下:
## 启动项目
electron-forge start
## 将项目打包成源码
electron-forge package
## 将项目打包成可执行文件(此命令内部会先执行 electron-forge package 命令 )
electron-forge make
打包完成后,electron-forge会在项目根目录创建一个 /out
文件夹,其中 /out/make
是打包编译后的可执行文件,/out/<项目名称>
是打包后的项目源码
必须在 package.json 中指定 main
入口文件,同时 description
、 license
和 author
都是必填字段,否则打包无法通过
{
"name": "vue-project",
"version": "0.0.0",
"private": true,
"type": "module",
"main": "src/main.ts",
"description": "Hello World!",
"author": "Jane Doe",
"license": "MIT"
}
Linux平台必须安装如下工具:
sudo apt install rpm
sudo apt install dpkg
sudo apt install fakeroot