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

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 完整发布流程是错方向。

构建镜像

./rebuild.sh gitea_runner_electron

指定 pnpm 主版本:

docker build --build-arg PNPM_VERSION=10 -t timi/gitea_runner_electron:latest ./gitea_runner_electron

打包脚本

镜像内置命令:

build-electron-release

默认行为:

  1. 根据锁文件自动选择包管理器
  2. 安装依赖
  3. 执行 vite build
  4. 构建 Linux AppImage
  5. 构建 Windows NSIS
  6. 构建 macOS zip

常用参数:

build-electron-release --no-install
build-electron-release --target linux,windows
build-electron-release --target macos --no-renderer
build-electron-release --release-dir release

也可以通过环境变量控制:

PACKAGE_MANAGER=pnpm ELECTRON_TARGETS=linux,windows,macos RELEASE_DIR=release build-electron-release

Gitea Actions 示例

如果 runner 标签已经映射到该镜像:

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

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

已有项目如果需要先写入版本号,可以继续拆步骤:

- 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