docs: 添加 Windows 交叉编译脚本和 Gitea Actions 配置指南
- 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
This commit is contained in:
149
docs/GITEA_ACTIONS.md
Normal file
149
docs/GITEA_ACTIONS.md
Normal file
@@ -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 <TOKEN_FROM_GITEA> \
|
||||||
|
--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 <TOKEN_FROM_GITEA> \
|
||||||
|
--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=<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
|
||||||
159
scripts/build-windows.sh
Normal file
159
scripts/build-windows.sh
Normal file
@@ -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 "$@"
|
||||||
Reference in New Issue
Block a user