Files
haibao-tts-cli/docs/architecture.md
titor 5c5510ef0a docs: 添加多平台 Runner 架构文档
- 描述 Gitea 多平台 runner 配置方案
- 包含 macOS 和 Windows 安装脚本
- 说明跨平台编译限制
- 提供故障排查指南
2026-04-24 04:09:43 +08:00

138 lines
3.5 KiB
Markdown
Raw Permalink 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.
# 架构文档 - 多平台 Runner 构建方案
## 概述
本项目使用 Gitea Actions 实现 CI/CD通过在不同操作系统上运行 runner 来构建对应平台的二进制文件。
## 平台与 Runner 对应关系
| 平台 | Runner 名称 | 构建目标 | 状态 |
|------|-----------|---------|------|
| NAS (Linux) | ubuntu24.04 | linux-amd64, linux-arm64 | ✅ 已配置 |
| macOS | macos | darwin-amd64, darwin-arm64 | ⏳ 待配置 |
| Windows | windows | windows-amd64 | ⏳ 待配置 |
## Gitea Runner 安装
### macOS (Apple Silicon / Intel)
```bash
# 安装 act_runner
curl -sL https://gitea.com/trossr32/gitea-act/releases/download/v0.2.47/gitea-act_Darwin_arm64 -o /usr/local/bin/act
chmod +x /usr/local/bin/act
# 或 Intel 版本
curl -sL https://gitea.com/trossr32/gitea-act/releases/download/v0.2.47/gitea-act_Darwin_x86_64 -o /usr/local/bin/act
chmod +x /usr/local/bin/act
# 注册 runner在 Gitea 仓库获取 token 后执行)
act runner register \
--url https://hub.gaomia.site \
--token <RUNNER_TOKEN> \
--name macos-runner \
--labels macos
# 启动 runner
act runner start --name macos-runner
```
### Windows
```powershell
# 下载 act_runner
curl -sL https://gitea.com/trossr32/gitea-act/releases/download/v0.2.47/gitea-act_Windows_x86_64.exe -o act.exe
# 注册 runner
.\act.exe runner register --url "https://hub.gaomia.site" --token "<RUNNER_TOKEN>" --name windows-runner --labels windows
# 启动 runner
.\act.exe runner start --name windows-runner
```
### 获取 Runner Token
1. 登录 Gitea
2. 进入仓库 → Settings → Actions → Runners
3. 点击 "Add Runner"
4. 复制注册命令(含 token
## Workflow 配置
### 当前支持的构建目标
```yaml
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu24.04
target: linux-amd64
- os: ubuntu24.04
target: linux-arm64
- os: macos
target: darwin-amd64
- os: macos
target: darwin-arm64
- os: windows
target: windows-amd64
```
注意Gitea Actions 的 `runs-on` 需要与注册的 runner labels 匹配。
## 跨平台编译限制
| 源平台 | 目标平台 | 是否支持 |
|--------|---------|---------|
| Linux (x86_64) | linux-amd64 | ✅ 原生支持 |
| Linux (x86_64) | linux-arm64 | ✅ 交叉编译 |
| Linux (x86_64) | darwin-amd64 | ❌ 需要 macOS |
| Linux (x86_64) | darwin-arm64 | ❌ 需要 macOS |
| Linux (x86_64) | windows-amd64 | ❌ 需要 Windows 或 MinGW |
因此必须在对应平台上运行 runner 才能构建对应平台的二进制。
## 依赖管理
### Rust 交叉编译目标
```bash
# 安装所有需要的 target
rustup target add aarch64-unknown-linux-gnu
rustup target add x86_64-apple-darwin
rustup target add aarch64-apple-darwin
rustup target add x86_64-pc-windows-gnu
```
### cargo 镜像源
构建时使用国内镜像加速:
```toml
# ~/.cargo/config.toml
[source.crates-io]
replace-with = "ustc"
[source.ustc]
registry = "sparse+https://mirrors.ustc.edu.cn/crates.io/index/"
```
## 故障排查
### Runner 不在线
- 检查 act_runner 进程是否运行
- 查看日志:`act runner run --debug`
### 构建失败
- 检查对应 runner 是否注册并在线
- 确认 labels 与 workflow 中的 `runs-on` 匹配
### Token 过期
- 重新生成 runner token
- 更新注册命令
## 相关文件
- `.gitea/workflows/release.yml` - Gitea Actions workflow
- `.github/workflows/release.yml` - GitHub Actions workflow多平台