From 5c3e7ccbfdf1ac23aef11f4383a31c61f19406f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E9=BA=A6?= Date: Tue, 10 Mar 2026 16:10:51 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0=20Windows=20?= =?UTF-8?q?=E4=BA=A4=E5=8F=89=E7=BC=96=E8=AF=91=E8=84=9A=E6=9C=AC=E5=92=8C?= =?UTF-8?q?=20Gitea=20Actions=20=E9=85=8D=E7=BD=AE=E6=8C=87=E5=8D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - scripts/build-windows.sh: Windows 交叉编译脚本 - docs/GITEA_ACTIONS.md: Gitea Actions Runner 配置指南 使用方式: 1. 配置 Gitea Actions Runner (参考 docs/GITEA_ACTIONS.md) 2. 或手动运行 ./scripts/build-windows.sh --upload --- docs/GITEA_ACTIONS.md | 149 ++++++++++++++++++++++++++++++++++++ scripts/build-windows.sh | 159 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 308 insertions(+) create mode 100644 docs/GITEA_ACTIONS.md create mode 100644 scripts/build-windows.sh diff --git a/docs/GITEA_ACTIONS.md b/docs/GITEA_ACTIONS.md new file mode 100644 index 0000000..c2e39c4 --- /dev/null +++ b/docs/GITEA_ACTIONS.md @@ -0,0 +1,149 @@ +# Gitea Actions Runner 配置指南 + +## 概述 + +Gitea Actions 是 Gitea 的 CI/CD 系统,与 GitHub Actions 兼容。 + +## 配置步骤 + +### 1. 启用 Gitea Actions + +编辑 Gitea 配置文件 (`/etc/gitea/app.ini` 或 `~/.gitea/conf/app.ini`): + +```ini +[actions] +ENABLED = true +DEFAULT_ACTIONS_URL = github +``` + +重启 Gitea: +```bash +sudo systemctl restart gitea +``` + +### 2. 安装 Runner + +#### macOS 安装 + +```bash +# 下载 Runner +mkdir -p ~/gitea-runner +cd ~/gitea-runner +curl -L https://github.com/actions/runner/releases/latest/download/actions-runner-darwin-x64-2.311.0.tar.gz -o runner.tar.gz +tar xzf runner.tar.gz + +# 配置 Runner +./config.sh --url http://192.168.120.110:4000/damai/readflow \ + --token \ + --name macos-runner \ + --runnergroup default + +# 启动 Runner +./run.sh +``` + +#### Linux 安装 + +```bash +# 下载 Runner +mkdir -p ~/gitea-runner +cd ~/gitea-runner +curl -L https://github.com/actions/runner/releases/latest/download/actions-runner-linux-x64-2.311.0.tar.gz -o runner.tar.gz +tar xzf runner.tar.gz + +# 配置 Runner +./config.sh --url http://192.168.120.110:4000/damai/readflow \ + --token \ + --name linux-runner \ + --runnergroup default + +# 启动 Runner +./run.sh +``` + +### 3. 获取 Runner Token + +1. 访问 Gitea 仓库:http://192.168.120.110:4000/damai/readflow +2. 进入 Settings → Actions +3. 点击 "Add runner" +4. 复制 Token + +### 4. 验证 Runner + +访问 Gitea 仓库的 Actions 页面,应该能看到注册的 Runner。 + +### 5. 触发编译 + +推送标签触发编译: + +```bash +cd /Users/rong/.openclaw/workspace/readflow +git tag -a v0.2.1 -m "Release v0.2.1" +git push origin v0.2.1 +``` + +--- + +## 工作流文件 + +工作流文件位于:`.gitea/workflows/release.yml` + +支持的平台: +- ✅ Windows (x86_64-pc-windows-gnu) +- ✅ Linux (x86_64-unknown-linux-gnu) +- ✅ macOS (x86_64-apple-darwin) + +--- + +## 故障排除 + +### Runner 无法连接 + +检查 Gitea 配置: +```ini +[actions] +ENABLED = true +DEFAULT_ACTIONS_URL = github +``` + +### 编译失败 + +检查 Runner 是否安装了必要的依赖: +```bash +# macOS +brew install rust mingw-w64 + +# Linux +sudo apt-get install rustc mingw-w64 +``` + +### 查看日志 + +访问 Gitea 仓库的 Actions 页面查看编译日志。 + +--- + +## 快速开始 + +### 方案 1: 使用 Docker Runner (推荐) + +```bash +docker run -d \ + -e GITEA_INSTANCE_URL=http://192.168.120.110:4000 \ + -e GITEA_RUNNER_REGISTRATION_TOKEN= \ + -e GITEA_RUNNER_NAME=docker-runner \ + -v /var/run/docker.sock:/var/run/docker.sock \ + ghcr.io/gitea/act_runner:latest +``` + +### 方案 2: 本地安装 Runner + +参考上面的安装步骤。 + +--- + +## 参考资料 + +- Gitea Actions 文档:https://docs.gitea.io/usage/actions/ +- Runner 下载:https://github.com/actions/runner/releases +- Workflows 语法:https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions diff --git a/scripts/build-windows.sh b/scripts/build-windows.sh new file mode 100644 index 0000000..82cce18 --- /dev/null +++ b/scripts/build-windows.sh @@ -0,0 +1,159 @@ +#!/bin/bash +# Windows 交叉编译脚本 +# 使用 x86_64-w64-mingw32 工具链 + +set -e + +echo "🚀 ReadFlow Windows 交叉编译脚本" +echo "==================================" + +# 颜色输出 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +log_info() { + echo -e "${GREEN}[INFO]${NC} $1" +} + +log_warn() { + echo -e "${YELLOW}[WARN]${NC} $1" +} + +log_error() { + echo -e "${RED}[ERROR]${NC} $1" +} + +# 检查是否安装了 mingw 工具链 +check_mingw() { + if command -v x86_64-w64-mingw32-gcc &> /dev/null; then + log_info "MinGW 工具链已安装" + return 0 + else + log_error "MinGW 工具链未安装" + log_info "请运行以下命令安装:" + echo " brew install mingw-w64 # macOS" + echo " sudo apt-get install mingw-w64 # Linux" + return 1 + fi +} + +# 添加 Windows 目标 +add_target() { + log_info "添加 Windows 目标..." + rustup target add x86_64-pc-windows-gnu +} + +# 编译 +build() { + log_info "开始编译 Windows 版本..." + + # 设置交叉编译器 + export CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER=x86_64-w64-mingw32-gcc + + # 编译 + cargo build --release --target x86_64-pc-windows-gnu + + log_info "编译完成!" +} + +# 打包 +package() { + log_info "打包 Windows 版本..." + + local version="0.2.0" + local build_dir="target/x86_64-pc-windows-gnu/release" + local package_dir="dist/readflow-${version}-windows-x86_64" + + mkdir -p "${package_dir}" + + # 复制可执行文件 + cp "${build_dir}/readflow.exe" "${package_dir}/" + + # 创建 README + cat > "${package_dir}/README.txt" << EOF +ReadFlow v${version} for Windows + +快速开始: +1. 解压到任意目录 +2. 双击运行 readflow.exe + +功能: +- EPUB/MOBI/Markdown/PDF 阅读 +- 20+ 编程语言语法高亮 +- 双语翻译对照 +- 笔记与书签系统 +- 插件系统 +- 主题商店 + +技术支持:damai@foshanhuiya.com +Gitea: http://192.168.120.110:4000/damai/readflow +EOF + + # 创建 ZIP + cd dist + zip -r "readflow-${version}-windows-x86_64.zip" "readflow-${version}-windows-x86_64/" + cd .. + + log_info "打包完成:dist/readflow-${version}-windows-x86_64.zip" +} + +# 上传到 Release +upload_release() { + log_info "上传到 Gitea Release..." + + local version="0.2.0" + local token="884162096b7f331c6fb236217d00a9452e34d4aa" + local file="dist/readflow-${version}-windows-x86_64.zip" + + # 获取 Release ID + local release_id=$(curl -s "http://192.168.120.110:4000/api/v1/repos/damai/readflow/releases/tags/v${version}" \ + -H "Authorization: token ${token}" | jq -r '.id') + + if [ "$release_id" == "null" ] || [ -z "$release_id" ]; then + log_error "Release v${version} 不存在" + return 1 + fi + + log_info "Release ID: ${release_id}" + + # 上传文件 + curl -L -X POST "http://192.168.120.110:4000/api/v1/repos/damai/readflow/releases/${release_id}/assets?name=readflow-${version}-windows-x86_64.zip" \ + -H "Authorization: token ${token}" \ + -H "Content-Type: application/zip" \ + --data-binary @"${file}" + + log_info "上传完成!" +} + +# 主函数 +main() { + log_info "开始 Windows 交叉编译..." + + # 检查工具链 + if ! check_mingw; then + log_warn "跳过编译,请安装 MinGW 后重试" + exit 1 + fi + + # 添加目标 + add_target + + # 编译 + build + + # 打包 + package + + # 上传 (可选) + if [ "$1" == "--upload" ]; then + upload_release + fi + + log_info "🎉 Windows 打包完成!" + log_info "文件位置:dist/readflow-0.2.0-windows-x86_64.zip" +} + +# 运行 +main "$@"