简化 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
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:
@@ -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 ""
|
||||
|
||||
25
README.md
25
README.md
@@ -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
5
debian/postrm
vendored
@@ -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)
|
||||
|
||||
13
debian/prerm
vendored
13
debian/prerm
vendored
@@ -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..."
|
||||
# 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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
# 更新包列表并安装
|
||||
|
||||
@@ -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)
|
||||
(暂无)
|
||||
24
llmdoc/overview/ci-workflow.md
Normal file
24
llmdoc/overview/ci-workflow.md
Normal 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 构建镜像
|
||||
Reference in New Issue
Block a user