简化 CI 配置:统一使用 stable Debian 发行版
All checks were successful
Build and Release / build-and-test (arm64, alpine) (push) Successful in -12s
Build and Release / build-and-test (amd64, alpine) (push) Successful in -5s
Build and Release / build-and-test (arm64, ubuntu) (push) Successful in 0s
Build and Release / build-and-test (amd64, ubuntu) (push) Successful in 9s
Build and Release / release (push) Successful in 38s

- 移除多发行版 Debian Package Registry 上传(bookworm、trixie)
- 统一上传到 stable 发行版池,简化维护和用户体验
- 更新 README 和文档系统的安装指南
- 新增 CI 工作流程概述文档
- 保持 ubuntu 和 alpine 双发行版构建支持
This commit is contained in:
2025-12-25 11:05:47 +08:00
parent d67168bef5
commit b4a284efd1
8 changed files with 91 additions and 98 deletions

View File

@@ -134,29 +134,19 @@ jobs:
}
done
# 上传 Debian 包到 Debian Package Registry (支持多个发行版)
# 上传 Debian 包到 Debian Package Registry (通用稳定版)
echo ""
echo "📦 上传 Debian 包到 Debian Package Registry..."
for file in *.deb; do
[ ! -f "$file" ] && continue
# 上传到 bookworm (Debian 12)
echo " ⬆️ $file → bookworm"
# 上传到 stable (通用稳定版)
echo " ⬆️ $file → stable"
curl -fsSL -X PUT \
-H "Authorization: token ${TOKEN}" \
--upload-file "$file" \
"https://${REGISTRY}/api/packages/${OWNER}/debian/pool/bookworm/main/upload" || {
echo "❌ Debian 包上传失败: $file (bookworm)"
exit 1
}
# 上传到 trixie (Debian 13)
echo " ⬆️ $file → trixie"
curl -fsSL -X PUT \
-H "Authorization: token ${TOKEN}" \
--upload-file "$file" \
"https://${REGISTRY}/api/packages/${OWNER}/debian/pool/trixie/main/upload" || {
echo "❌ Debian 包上传失败: $file (trixie)"
"https://${REGISTRY}/api/packages/${OWNER}/debian/pool/stable/main/upload" || {
echo "❌ Debian 包上传失败: $file (stable)"
exit 1
}
done
@@ -166,7 +156,7 @@ jobs:
echo "📝 生成 Release..."
export REGISTRY OWNER TAG
RELEASE_DATA=$(python3 -c 'import json,glob,os;r=os.environ["REGISTRY"];o=os.environ["OWNER"];p=os.environ["PRODUCT_NAME"];t=os.environ["TAG"];b=["## Release "+t,"","### 📥 下载方式","","#### 方式 1: 直接下载(推荐)","","点击下面 **Assets** 部分的文件名直接下载。","","#### 方式 2: Generic Package Registry",""]+[f"- [`{f}`](https://{r}/api/packages/{o}/generic/{p}/{t}/{f})" for f in sorted(glob.glob("*.tar.gz"))]+["","#### 方式 3: Debian Repository","","**Debian 12 (bookworm):**","","```bash","# Download GPG key",f"sudo curl https://{r}/api/packages/{o}/debian/repository.key -o /etc/apt/keyrings/gitea-{o}.asc","","# Add repository",f"echo \"deb [signed-by=/etc/apt/keyrings/gitea-{o}.asc] https://{r}/api/packages/{o}/debian bookworm main\" | sudo tee -a /etc/apt/sources.list.d/{o}.list","","# Update and install","sudo apt-get update",f"sudo apt-get install {p}","```","","**Debian 13 (trixie):**","","```bash","# Download GPG key",f"sudo curl https://{r}/api/packages/{o}/debian/repository.key -o /etc/apt/keyrings/gitea-{o}.asc","","# Add repository",f"echo \"deb [signed-by=/etc/apt/keyrings/gitea-{o}.asc] https://{r}/api/packages/{o}/debian trixie main\" | sudo tee -a /etc/apt/sources.list.d/{o}.list","","# Update and install","sudo apt-get update",f"sudo apt-get install {p}","```"];print(json.dumps({"tag_name":t,"name":f"Release {t}","body":"\n".join(b),"draft":False,"prerelease":False}))')
RELEASE_DATA=$(python3 -c 'import json,glob,os;r=os.environ["REGISTRY"];o=os.environ["OWNER"];p=os.environ["PRODUCT_NAME"];t=os.environ["TAG"];b=["## Release "+t,"","### 📥 下载方式","","#### 方式 1: 直接下载(推荐)","","点击下面 **Assets** 部分的文件名直接下载。","","#### 方式 2: Generic Package Registry",""]+[f"- [`{f}`](https://{r}/api/packages/{o}/generic/{p}/{t}/{f})" for f in sorted(glob.glob("*.tar.gz"))]+["","#### 方式 3: Debian Repository","","```bash","# Download GPG key",f"sudo curl https://{r}/api/packages/{o}/debian/repository.key -o /etc/apt/keyrings/gitea-{o}.asc","","# Add repository",f"echo \"deb [signed-by=/etc/apt/keyrings/gitea-{o}.asc] https://{r}/api/packages/{o}/debian stable main\" | sudo tee -a /etc/apt/sources.list.d/{o}.list","","# Update and install","sudo apt-get update",f"sudo apt-get install {p}","```"];print(json.dumps({"tag_name":t,"name":f"Release {t}","body":"\n".join(b),"draft":False,"prerelease":False}))')
# 创建 Release
echo ""

View File

@@ -18,32 +18,16 @@
## 🚀 快速开始
### 使用 Debian 包安装(推荐)
Debian 12 (bookworm):
### Debian/Ubuntu(推荐)
```bash
# 下载 GPG 密钥
sudo curl https://gitea.bcde.io/api/packages/wangdefa/debian/repository.key -o /etc/apt/keyrings/gitea-wangdefa.asc
# 添加仓库
echo "deb [signed-by=/etc/apt/keyrings/gitea-wangdefa.asc] https://gitea.bcde.io/api/packages/wangdefa/debian bookworm main" | sudo tee -a /etc/apt/sources.list.d/wangdefa.list
# 添加仓库
echo "deb [signed-by=/etc/apt/keyrings/gitea-wangdefa.asc] https://gitea.bcde.io/api/packages/wangdefa/debian stable main" | sudo tee -a /etc/apt/sources.list.d/wangdefa.list
# 安装 P2Pool
sudo apt-get update
sudo apt-get install p2pool
```
Debian 13 (trixie):
```bash
# 下载 GPG 密钥
sudo curl https://gitea.bcde.io/api/packages/wangdefa/debian/repository.key -o /etc/apt/keyrings/gitea-wangdefa.asc
# 添加包仓库
echo "deb [signed-by=/etc/apt/keyrings/gitea-wangdefa.asc] https://gitea.bcde.io/api/packages/wangdefa/debian trixie main" | sudo tee -a /etc/apt/sources.list.d/wangdefa.list
# 安装 P2Pool
# 更新并安装
sudo apt-get update
sudo apt-get install p2pool
```
@@ -101,7 +85,6 @@ docker buildx build --pull \
- **二进制包** (`tar.gz`) - 适用于所有 Linux 发行版
- **Debian 包** (`.deb`) - 适用于 Debian/Ubuntu 系统
- **多发行版支持** - Debian 12 (bookworm)、Debian 13 (trixie)
## 🔧 配置管理

5
debian/postrm vendored
View File

@@ -5,10 +5,11 @@ case "$1" in
purge)
# Remove user and group
if getent passwd p2pool >/dev/null; then
deluser --system p2pool 2>/dev/null || true
deluser --quiet p2pool || true
fi
if getent group p2pool >/dev/null; then
delgroup --system p2pool 2>/dev/null || true
delgroup --quiet p2pool || true
fi
# Remove data directories (only on purge)

15
debian/prerm vendored
View File

@@ -1,10 +1,17 @@
#!/bin/sh
set -e
# Stop service if running
if [ -d /run/systemd/system ] && systemctl is-active --quiet p2pool.service; then
echo "Stopping P2Pool service..."
systemctl stop p2pool.service
# Stop and disable service if running
if [ -d /run/systemd/system ]; then
if systemctl is-active --quiet p2pool.service; then
echo "Stopping p2pool service..."
systemctl stop p2pool.service
fi
if systemctl is-enabled --quiet p2pool.service 2>/dev/null; then
echo "Disabling p2pool service..."
systemctl disable p2pool.service
fi
fi
exit 0

View File

@@ -1,58 +1,45 @@
# Debian 包配置管理架构
# Debian 包架构
## 1. 配置文件管理机制
## 1. 身份
### 配置文件位置和格式
- **文件路径:** `/var/lib/p2pool/params.conf`
- **文件权限:** `640` (所有者: `p2pool:p2pool`)
- **格式:** 基于命令行参数的 key-value 配置文件
- **目的**:为 p2pool 构建跨架构的 Debian 软件包
- **关键功能**:多架构支持、自动化构建和发布
### 配置文件生命周期
## 2. 核心组件
#### 创建时机
- **首次安装:** `postinst` 脚本自动创建示例配置文件
- **升级场景:** 现有配置文件被完全保留,不会被覆盖
关键文件:
- `.gitea/workflows/ci.yaml`CI/CD 流程
- `debian/build-deb.sh`Debian 打包脚本
- `debian/control`:软件包元数据
- `debian/postinst`:安装后脚本
- `debian/postrm`:卸载后脚本
#### 配置文件生成策略
```bash
# 配置文件初始化伪代码
if [ ! -f /var/lib/p2pool/params.conf ]; then
cp /usr/share/p2pool/params.conf.example /var/lib/p2pool/params.conf
chown p2pool:p2pool /var/lib/p2pool/params.conf
chmod 640 /var/lib/p2pool/params.conf
fi
```
## 3. 构建流程
### 配置加载机制
- systemd 服务使用 `--params-file /var/lib/p2pool/params.conf` 加载配置
- 配置文件支持所有原命令行参数
- 配置文件优先级高于硬编码的默认值
1. **架构选择**
- `amd64`: 64位 x86 架构
- `arm64`: ARM 64位架构
## 2. 安全与管理特性
2. **发行版目标**
- `stable`:统一的稳定发行版仓库
### 权限控制
- `p2pool` 系统用户可读写配置文件
- 组权限限制,防止非授权访问敏感配置
- 文件权限 `640` 确保最小权限原则
3. **Package Registry**
- Generic Package Registry存储 `.tar.gz`
- Debian Package Registry存储 `.deb`
### 升级保护
- 配置文件在包升级过程中保持不变
- 新版本兼容旧配置文件格式
- 升级后可通过比较 `params.conf.example` 检查新增配置项
## 4. 配置管理
## 3. 配置示例
- 配置文件:`/var/lib/p2pool/params.conf`
- 安全原则:
- 配置与二进制包分离
- 升级时保留用户配置
- 最小权限原则
```conf
# /var/lib/p2pool/params.conf 示例
wallet=YOUR_MONERO_WALLET_ADDRESS
host=0.0.0.0
rpc-port=3333
log-level=1
```
## 5. 发布策略
## 4. 设计考量
### 动机
- 简化复杂的命令行参数管理
- 提供更好的配置持久化方案
- 增强系统配置的可读性和可维护性
- 自动化版本发布
- 标签触发(`refs/tags/*`
- 多渠道发布:
1. Generic Package Registry
2. Debian Package Registry
3. GitHub/Gitea Releases

View File

@@ -11,7 +11,7 @@ sudo curl https://GITEA_URL/api/packages/OWNER/debian/repository.key \
# 添加仓库源(以 Debian 12 为例)
echo "deb [signed-by=/etc/apt/keyrings/gitea-OWNER.asc] \
https://GITEA_URL/api/packages/OWNER/debian bookworm main" | \
https://GITEA_URL/api/packages/OWNER/debian stable main" | \
sudo tee /etc/apt/sources.list.d/OWNER.list
# 更新包列表并安装

View File

@@ -1,12 +1,13 @@
# P2Pool Debian 打包与配置系统文档
# p2pool 文档系统
## 文档导航
## 概述 (Overview)
- [CI 工作流程](/llmdoc/overview/ci-workflow.md)
### 总览
- [架构:Debian 包管理](/llmdoc/architecture/debian-packaging.md)
## 指南 (Guides)
- [Debian 包安装](/llmdoc/guides/debian-package.md)
### 指南
- [Debian 包安装与配置](/llmdoc/guides/debian-package.md)
## 架构 (Architecture)
- [Debian 打包架构](/llmdoc/architecture/debian-packaging.md)
### 参考资料
- 待添加
## 参考 (Reference)
(暂无)

View File

@@ -0,0 +1,24 @@
# CI 工作流程概述
## 1. 身份
- **目的**:自动化构建、测试和发布 p2pool 软件包
- **关键功能**:支持多架构、多发行版的软件包构建和发布
## 2. 高层描述
CI 工作流程通过 Gitea 工作流实现自动化构建和发布:
- 支持架构:`amd64``arm64`
- 支持发行版:`ubuntu``alpine`
- 发布目标:
1. Generic Package Registry
2. Debian Package Registry (stable)
3. GitHub/Gitea Releases
## 3. 关键文件
- `.gitea/workflows/ci.yaml`:主要工作流配置
- `debian/build-deb.sh`Debian 打包脚本
- `docker/Dockerfile.ubuntu`Ubuntu 构建镜像
- `docker/Dockerfile.alpine`Alpine 构建镜像