简化 Debian 发布流程并添加项目文档系统
All checks were successful
Build and Release / build-and-test (arm64, alpine) (push) Successful in -13s
Build and Release / build-and-test (amd64, alpine) (push) Successful in -6s
Build and Release / build-and-test (arm64, ubuntu) (push) Successful in -7s
Build and Release / build-and-test (amd64, ubuntu) (push) Successful in 7s
Build and Release / release (push) Successful in 21s
All checks were successful
Build and Release / build-and-test (arm64, alpine) (push) Successful in -13s
Build and Release / build-and-test (amd64, alpine) (push) Successful in -6s
Build and Release / build-and-test (arm64, ubuntu) (push) Successful in -7s
Build and Release / build-and-test (amd64, ubuntu) (push) Successful in 7s
Build and Release / release (push) Successful in 21s
- 将 Debian 包仓库从 bookworm/trixie 双发行版改为通用 stable 仓库 - 新增完整的 llmdoc 文档系统,包含架构、指南和参考文档 - 更新 README.md 和部署指南以反映新的仓库配置 - 添加 .gitignore 文件
This commit is contained in:
59
llmdoc/architecture/cicd-pipeline.md
Normal file
59
llmdoc/architecture/cicd-pipeline.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# CI/CD 流水线架构
|
||||
|
||||
## 1. 身份与目的
|
||||
- **名称:** xxxigcc-proxy 自动化构建和发布流水线
|
||||
- **目的:** 自动化构建、测试和发布跨平台二进制包和 Debian 安装包
|
||||
|
||||
## 2. 核心组件
|
||||
|
||||
### 2.1 构建作业 (build-and-test)
|
||||
`架构路径:.gitea/workflows/ci.yaml:15-93`
|
||||
|
||||
#### 主要职责
|
||||
- 多架构(amd64、arm64)构建
|
||||
- 多发行版(Ubuntu、Alpine)构建
|
||||
- 构建二进制文件
|
||||
- 打包 tar.gz 文件
|
||||
- 构建 Debian 安装包
|
||||
- 上传构建产物
|
||||
|
||||
#### 关键步骤
|
||||
1. 代码检出
|
||||
2. 设置 Docker Buildx
|
||||
3. 构建二进制文件(`docker buildx build`)
|
||||
4. 打包和测试(创建 tar.gz)
|
||||
5. 构建 Debian 包(仅 Ubuntu)
|
||||
6. 上传构建产物
|
||||
|
||||
### 2.2 发布作业 (release)
|
||||
`架构路径:.gitea/workflows/ci.yaml:95-212`
|
||||
|
||||
#### 主要职责
|
||||
- 下载构建产物
|
||||
- 上传包到包管理器
|
||||
- 创建 GitHub/Gitea Release
|
||||
- 生成发布说明
|
||||
- 上传发布附件
|
||||
|
||||
#### 关键步骤
|
||||
1. 下载构建产物
|
||||
2. 上传到 Generic Package Registry
|
||||
3. 上传到 Debian Package Registry
|
||||
4. 创建 Release
|
||||
5. 上传 Release 附件
|
||||
|
||||
## 3. 设计原理
|
||||
|
||||
### 多架构构建
|
||||
- 使用 Docker Buildx 实现跨平台构建
|
||||
- 支持 AMD64 和 ARM64 架构
|
||||
- 针对不同架构和发行版生成独立构建
|
||||
|
||||
### 包管理策略
|
||||
- Generic Package Registry:存储 tar.gz 包
|
||||
- Debian Package Registry:使用通用 `stable` 发行版,支持所有 Debian/Ubuntu 发行版
|
||||
- 自动生成安装和下载说明
|
||||
|
||||
## 4. 触发机制
|
||||
- 代码推送到 main/develop 分支
|
||||
- 标签(Tag)推送时触发发布流程
|
||||
35
llmdoc/architecture/debian-packaging.md
Normal file
35
llmdoc/architecture/debian-packaging.md
Normal file
@@ -0,0 +1,35 @@
|
||||
# Debian 包构建架构
|
||||
|
||||
## 1. 身份
|
||||
|
||||
- **定义:** Debian 打包系统,用于将 xxxigcc-proxy 软件打包为可安装的 Debian 软件包。
|
||||
- **目的:** 提供一个标准化的软件分发和安装机制。
|
||||
|
||||
## 2. 核心组件
|
||||
|
||||
- `debian/build-deb.sh`: 主要构建脚本,负责整个 Debian 包的构建过程
|
||||
- 架构转换
|
||||
- 目录结构创建
|
||||
- 文件复制与权限设置
|
||||
- 包构建
|
||||
|
||||
- `debian/control.template`: 定义包的元数据
|
||||
- 包名、版本、依赖关系
|
||||
- 描述和维护者信息
|
||||
|
||||
## 3. 执行流程
|
||||
|
||||
1. **初始化**:接收架构、版本和源文件作为输入
|
||||
2. **目录准备**:创建临时构建目录
|
||||
3. **二进制文件解压**:将源 tar.gz 文件解压到 `/opt/xxxigcc-proxy`
|
||||
4. **控制文件生成**:使用 `sed` 替换模板变量
|
||||
5. **维护脚本复制**:复制 postinst, prerm, postrm 脚本
|
||||
6. **服务文件安装**:复制 systemd 服务配置文件
|
||||
7. **权限设置**:调整关键文件和目录权限
|
||||
8. **包构建**:使用 `dpkg-deb` 构建最终的 .deb 包
|
||||
|
||||
## 4. 设计原理
|
||||
|
||||
- 使用模板和脚本实现灵活的构建过程
|
||||
- 遵循 Debian 打包规范
|
||||
- 确保软件及其依赖能在目标系统正确安装和运行
|
||||
30
llmdoc/architecture/deployment-architecture.md
Normal file
30
llmdoc/architecture/deployment-architecture.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# XXXigCC Proxy 部署架构
|
||||
|
||||
## 1. 身份与目的
|
||||
|
||||
- **定义**:一个专注于零捐赠的 XMRigCC 代理服务
|
||||
- **主要目的**:提供可靠、安全的加密货币挖矿代理服务
|
||||
|
||||
## 2. 核心组件
|
||||
|
||||
`debian/xxxigcc-proxy.service` (SystemdServiceDefinition): 定义了服务的运行时行为和安全配置。
|
||||
|
||||
- **关键职责**:
|
||||
1. 定义服务启动方式
|
||||
2. 配置系统资源限制
|
||||
3. 设置安全运行参数
|
||||
|
||||
## 3. 执行流程(LLM 检索路径)
|
||||
|
||||
- **1. 服务初始化**:SystemD 通过 `xxxigcc-proxy.service` 启动服务
|
||||
- **2. 配置加载**:读取 `/etc/xxxigcc-proxy/config.json`
|
||||
- **3. 日志系统**:
|
||||
- 常规日志:`/var/log/xxxigcc-proxy/proxy.log`
|
||||
- 访问日志:`/var/log/xxxigcc-proxy/access.log`
|
||||
|
||||
## 4. 设计原则
|
||||
|
||||
- 最小权限原则
|
||||
- 资源受限运行
|
||||
- 详细日志记录
|
||||
- 自动重启机制
|
||||
45
llmdoc/architecture/docker-build-system.md
Normal file
45
llmdoc/architecture/docker-build-system.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# Docker 构建系统架构
|
||||
|
||||
## 1. 系统身份
|
||||
|
||||
- **定义**:高度自动化且灵活的多架构 Docker 构建系统
|
||||
- **目的**:支持跨平台(`amd64`、`arm64`)和多发行版(Ubuntu、Alpine)的容器化构建
|
||||
|
||||
## 2. 核心组件
|
||||
|
||||
`- docker/Dockerfile.ubuntu` (`base`, `build`): Ubuntu 22.04 多阶段构建镜像
|
||||
`- docker/Dockerfile.alpine` (`base`, `build`): Alpine Linux 多阶段构建镜像
|
||||
`- .gitea/workflows/ci.yaml` (`BuildX`, `matrix`): Docker 多架构构建工作流
|
||||
|
||||
## 3. 执行流程(LLM 检索映射)
|
||||
|
||||
### 多阶段构建流程
|
||||
1. **基础阶段(`base`)**:
|
||||
- 安装基础编译依赖
|
||||
- 准备编译环境
|
||||
|
||||
2. **构建阶段(`build`)**:
|
||||
- 克隆源代码
|
||||
- 执行 `init.sh` 进行项目初始化
|
||||
- 使用 CMake 编译项目
|
||||
|
||||
3. **最终镜像阶段**:
|
||||
- 仅保留编译产物
|
||||
- 创建最小化镜像
|
||||
|
||||
### 多架构支持关键机制
|
||||
- 使用 `TARGETARCH`、`BUILDPLATFORM` 动态调整构建
|
||||
- 交叉编译时降低并行度(`-j2`)
|
||||
- 本地编译使用全部 CPU 核心(`-j$(nproc)`)
|
||||
|
||||
## 4. 设计原理
|
||||
|
||||
### 构建优化策略
|
||||
- 使用 Docker BuildKit 加速构建
|
||||
- 禁用不必要的构建证明
|
||||
- 动态调整构建作业并行度
|
||||
|
||||
### 跨平台兼容性
|
||||
- 通过 `init.sh` 实现统一的项目初始化
|
||||
- 支持 `amd64`、`arm64` 架构
|
||||
- 兼容 Ubuntu 和 Alpine 发行版
|
||||
48
llmdoc/architecture/multi-arch-strategy.md
Normal file
48
llmdoc/architecture/multi-arch-strategy.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# 多架构构建策略详解
|
||||
|
||||
## 1. 架构支持
|
||||
|
||||
### 目标架构
|
||||
- `amd64`(x86_64)
|
||||
- `arm64`(ARM 64位)
|
||||
|
||||
## 2. 交叉编译优化
|
||||
|
||||
### 编译参数调整
|
||||
- 跨平台编译时:`MAKE_JOBS=-j2`
|
||||
- 本地平台编译:`MAKE_JOBS=-j$(nproc)`
|
||||
|
||||
### 关键构建参数
|
||||
- `TARGETARCH`:目标架构
|
||||
- `BUILDPLATFORM`:构建主机架构
|
||||
- `TARGETPLATFORM`:完整目标平台信息
|
||||
|
||||
## 3. 依赖管理
|
||||
|
||||
### 架构相关依赖处理
|
||||
- Ubuntu:通过 `apt-get` 安装依赖
|
||||
- Alpine:使用 `apk add` 安装跨平台工具链
|
||||
|
||||
### 关键依赖工具
|
||||
- `gcc`/`g++`:编译器
|
||||
- `cmake`:跨平台构建系统
|
||||
- `libuv-dev`:异步 I/O 库
|
||||
- `libssl-dev`:SSL/TLS 库
|
||||
- `hwloc-dev`:硬件定位库
|
||||
|
||||
## 4. 构建流程优化
|
||||
|
||||
### BuildKit 配置
|
||||
- 启用 `DOCKER_BUILDKIT=1`
|
||||
- 禁用默认构建证明 `BUILDX_NO_DEFAULT_ATTESTATIONS=1`
|
||||
|
||||
### 构建缓存策略
|
||||
- 多阶段构建减少最终镜像大小
|
||||
- 分层缓存提高重复构建效率
|
||||
|
||||
## 5. 最佳实践
|
||||
|
||||
### 跨平台兼容性
|
||||
- 使用 `init.sh` 统一项目配置
|
||||
- 确保代码和构建脚本平台无关
|
||||
- 避免硬编码平台相关的路径或命令
|
||||
66
llmdoc/architecture/release-process.md
Normal file
66
llmdoc/architecture/release-process.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# 发布流程架构
|
||||
|
||||
## 1. 身份与目的
|
||||
- **名称:** xxxigcc-proxy 发布流程
|
||||
- **目的:** 定义软件包分发和版本管理的标准流程
|
||||
|
||||
## 2. 包管理注册表
|
||||
|
||||
### 2.1 Generic Package Registry
|
||||
`架构路径:.gitea/workflows/ci.yaml:125-135`
|
||||
|
||||
#### 特点
|
||||
- 存储 tar.gz 二进制包
|
||||
- 直接可下载链接
|
||||
- 版本化管理
|
||||
|
||||
#### 上传逻辑
|
||||
- 基于 curl 的 PUT 请求
|
||||
- 使用 Build Token 认证
|
||||
- 上传路径:`/api/packages/{owner}/generic/{product_name}/{version}/{filename}`
|
||||
|
||||
### 2.2 Debian Package Registry
|
||||
`架构路径:.gitea/workflows/ci.yaml:137-152`
|
||||
|
||||
#### 特点
|
||||
- 通用稳定版仓库
|
||||
- 支持所有 Debian/Ubuntu 发行版
|
||||
- 单一 `stable` 发行版代号
|
||||
|
||||
#### 上传逻辑
|
||||
- 使用 curl 的 PUT 请求
|
||||
- 上传到通用稳定版仓库
|
||||
- 上传路径:`/api/packages/{owner}/debian/pool/stable/main/upload`
|
||||
|
||||
## 3. Release 生成策略
|
||||
|
||||
### 3.1 Release 内容
|
||||
`架构路径:.gitea/workflows/ci.yaml:154-159`
|
||||
|
||||
#### 发布说明生成
|
||||
- 使用 Python 动态生成 Markdown 格式
|
||||
- 包含多种下载方式说明
|
||||
- 提供仓库和直接下载链接
|
||||
|
||||
### 3.2 Release 创建
|
||||
`架构路径:.gitea/workflows/ci.yaml:161-188`
|
||||
|
||||
#### 创建流程
|
||||
- 使用 Gitea API 创建 Release
|
||||
- 处理重复 Release 的情况
|
||||
- 生成 Release JSON payload
|
||||
|
||||
### 3.3 附件上传
|
||||
`架构路径:.gitea/workflows/ci.yaml:190-204`
|
||||
|
||||
#### 上传策略
|
||||
- 上传 tar.gz 和 .deb 文件
|
||||
- 作为 Release 附件
|
||||
- 使用 multipart/form-data
|
||||
|
||||
## 4. 安装指南生成
|
||||
生成通用 Debian 仓库的安装说明,包括:
|
||||
- GPG 密钥下载
|
||||
- 仓库添加(使用 `stable` 发行版代号)
|
||||
- 包安装命令
|
||||
- 支持所有 Debian/Ubuntu 发行版
|
||||
77
llmdoc/architecture/source-code-modification.md
Normal file
77
llmdoc/architecture/source-code-modification.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# 源代码修改架构
|
||||
|
||||
## 1. 修改策略概述
|
||||
|
||||
本文档详细阐述了 XXXigCC Proxy 项目的源代码修改架构,重点介绍 `init.sh` 脚本的工作原理和修改策略。
|
||||
|
||||
## 2. 修改类型和范围
|
||||
|
||||
### 2.1 项目重命名
|
||||
- **文件:** `CMakeLists.txt`
|
||||
- **修改方式:** 使用 `sed` 替换 `project(xmrigcc-proxy)` 为 `project(xxxigcc-proxy)`
|
||||
- **影响:** 更改项目构建时的名称标识
|
||||
|
||||
### 2.2 捐赠功能修改
|
||||
- **目标:** 完全禁用捐赠机制
|
||||
- **修改文件:**
|
||||
* `src/donate.h`
|
||||
* `src/net/strategies/DonateStrategy.cpp`
|
||||
* `src/core/config/Config_platform.h`
|
||||
* `src/config.json`
|
||||
- **具体修改:**
|
||||
- 将捐赠级别从 2 降至 0
|
||||
- 将捐赠服务器地址重定向到 `127.0.0.1`
|
||||
|
||||
### 2.3 版本信息定制
|
||||
- **文件:** `src/version.h`
|
||||
- **修改:**
|
||||
- 将 "xmrigcc" 替换为 "xxxigcc"
|
||||
- 将 "XMRigCC" 替换为 "XXXigCC"
|
||||
|
||||
### 2.4 调试配置
|
||||
- **文件:** `src/config.json`
|
||||
- **修改:** 将 `"verbose"` 设置为 `true`,启用详细日志输出
|
||||
|
||||
## 3. 修改实现技术
|
||||
|
||||
### 3.1 sed 命令策略
|
||||
- 使用 `-i` 参数直接原地修改文件
|
||||
- 采用精确的字符串替换
|
||||
- 覆盖多个源代码和配置文件
|
||||
|
||||
### 3.2 关键修改命令示例
|
||||
|
||||
```bash
|
||||
# 项目重命名
|
||||
sed -i 's/project(xmrigcc-proxy)/project(xxxigcc-proxy)/' CMakeLists.txt
|
||||
|
||||
# 捐赠级别修改
|
||||
sed -i 's/kDefaultDonateLevel = 2/kDefaultDonateLevel = 0/' src/donate.h
|
||||
sed -i 's/donate-level", 1/donate-level", 0/' src/core/config/Config_platform.h
|
||||
|
||||
# 捐赠服务器地址修改
|
||||
sed -i 's/donate.graef.in/127.0.0.1/' src/net/strategies/DonateStrategy.cpp
|
||||
sed -i 's/87.106.163.52/127.0.0.1/' src/net/strategies/DonateStrategy.cpp
|
||||
|
||||
# 版本字符串修改
|
||||
sed -i 's/xmrigcc/xxxigcc/' src/version.h
|
||||
sed -i 's/XMRigCC/XXXigCC/' src/version.h
|
||||
```
|
||||
|
||||
## 4. 架构设计原则
|
||||
|
||||
- 保留原项目基本结构
|
||||
- 通过前缀变更(xmr → xxx)实现项目个性化
|
||||
- 维持原代码仓库的基本架构和功能
|
||||
|
||||
## 5. 修改意图
|
||||
|
||||
- 个性化原始项目
|
||||
- 完全移除捐赠功能
|
||||
- 提供更详细的调试信息
|
||||
|
||||
## 6. 关键关联文件
|
||||
|
||||
- `init.sh`:负责初始化和定制项目
|
||||
- 修改涉及多个源代码和配置文件
|
||||
- 修改范围覆盖编译配置、运行时配置和版本信息
|
||||
49
llmdoc/architecture/systemd-service.md
Normal file
49
llmdoc/architecture/systemd-service.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# Systemd 服务配置架构
|
||||
|
||||
## 1. 身份
|
||||
|
||||
- **定义:** xxxigcc-proxy 的 systemd 服务配置
|
||||
- **目的:** 提供一个安全、可靠的服务管理机制
|
||||
|
||||
## 2. 核心配置
|
||||
|
||||
`debian/xxxigcc-proxy.service` 文件定义了服务的关键特性:
|
||||
|
||||
### 启动控制
|
||||
- `Type=simple`:直接启动进程
|
||||
- `After=network.target`:确保网络就绪后启动
|
||||
- `Restart=always`:服务意外停止时自动重启
|
||||
- `RestartSec=10`:重启间隔 10 秒
|
||||
|
||||
### 安全设置
|
||||
- `NoNewPrivileges=true`:禁止进程获取新权限
|
||||
- `PrivateTmp=true`:隔离临时文件目录
|
||||
- `ProtectSystem=strict`:限制对系统目录的修改
|
||||
- `ProtectHome=true`:保护用户主目录
|
||||
|
||||
### 资源限制
|
||||
- `LimitNOFILE=65535`:最大文件描述符数
|
||||
- `LimitNPROC=4096`:最大进程数
|
||||
|
||||
### 用户和组
|
||||
- 以 `xxxigcc-proxy` 专用用户运行
|
||||
- 降低潜在安全风险
|
||||
|
||||
### 日志管理
|
||||
- 使用 systemd journal 记录日志
|
||||
- 标准输出和错误重定向到日志系统
|
||||
|
||||
## 3. 执行流程
|
||||
|
||||
1. systemd 检查网络就绪
|
||||
2. 以 `xxxigcc-proxy` 用户启动进程
|
||||
3. 使用指定配置文件和日志路径启动
|
||||
4. 持续监控服务状态
|
||||
5. 必要时自动重启服务
|
||||
|
||||
## 4. 设计原则
|
||||
|
||||
- 最小权限原则
|
||||
- 服务可靠性
|
||||
- 安全隔离
|
||||
- 日志完整性
|
||||
Reference in New Issue
Block a user