Files
docker-files/gitea_runner_electron/README.md
2026-05-27 15:09:39 +08:00

127 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Gitea Runner Electron
Electron 三平台打包镜像,用于 Gitea Actions 中构建桌面端发布产物。
## 基础镜像
- `electronuserland/builder:wine`
## 包含环境
| 组件 | 说明 |
|------|------|
| Node.js | 由基础镜像提供 |
| npm | 由基础镜像提供 |
| pnpm | 默认安装 `pnpm@10`,可通过构建参数覆盖 |
| yarn | 全局安装 |
| Wine | 用于 Windows NSIS 打包 |
| 7zip/zip/unzip | 用于压缩和 Electron Builder 产物处理 |
| python3/make/g++ | 用于可能存在的 Node.js 原生依赖编译 |
## 打包目标
| 平台 | Electron Builder 目标 | 输出目录 |
|------|------------------------|----------|
| Linux | `AppImage --x64` | `release/linux` |
| Windows | `nsis --x64` | `release/windows` |
| macOS | `zip --x64 --arm64` | `release/macos` |
macOS 这里只生成 zip不处理 dmg、签名和公证。Linux 容器里强行做 macOS 完整发布流程是错方向。
## 构建镜像
```bash
./rebuild.sh gitea_runner_electron
```
指定 pnpm 主版本:
```bash
docker build --build-arg PNPM_VERSION=10 -t timi/gitea_runner_electron:latest ./gitea_runner_electron
```
## 打包脚本
镜像内置命令:
```bash
build-electron-release
```
默认行为:
1. 根据锁文件自动选择包管理器
2. 安装依赖
3. 执行 `vite build`
4. 构建 Linux AppImage
5. 构建 Windows NSIS
6. 构建 macOS zip
常用参数:
```bash
build-electron-release --no-install
build-electron-release --target linux,windows
build-electron-release --target macos --no-renderer
build-electron-release --release-dir release
```
也可以通过环境变量控制:
```bash
PACKAGE_MANAGER=pnpm ELECTRON_TARGETS=linux,windows,macos RELEASE_DIR=release build-electron-release
```
## Gitea Actions 示例
如果 runner 标签已经映射到该镜像:
```yaml
jobs:
release:
runs-on: act_runner_electron
env:
CSC_IDENTITY_AUTO_DISCOVERY: "false"
ELECTRON_CACHE: .cache/electron
ELECTRON_BUILDER_CACHE: .cache/electron-builder
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Build Release
run: build-electron-release
```
如果使用 job container
```yaml
jobs:
release:
runs-on: act_runner_node
container:
image: timi/gitea_runner_electron:latest
env:
CSC_IDENTITY_AUTO_DISCOVERY: "false"
ELECTRON_CACHE: .cache/electron
ELECTRON_BUILDER_CACHE: .cache/electron-builder
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Build Release
run: build-electron-release
```
已有项目如果需要先写入版本号,可以继续拆步骤:
```yaml
- name: Install Frontend Dependencies
run: pnpm install --frozen-lockfile
- name: Write Release Version
run: npm version "$RELEASE_VERSION" --no-git-tag-version --allow-same-version
- name: Build Release
run: build-electron-release --no-install
```