简化 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
|
done
|
||||||
|
|
||||||
# 上传 Debian 包到 Debian Package Registry (支持多个发行版)
|
# 上传 Debian 包到 Debian Package Registry (通用稳定版)
|
||||||
echo ""
|
echo ""
|
||||||
echo "📦 上传 Debian 包到 Debian Package Registry..."
|
echo "📦 上传 Debian 包到 Debian Package Registry..."
|
||||||
for file in *.deb; do
|
for file in *.deb; do
|
||||||
[ ! -f "$file" ] && continue
|
[ ! -f "$file" ] && continue
|
||||||
|
|
||||||
# 上传到 bookworm (Debian 12)
|
# 上传到 stable (通用稳定版)
|
||||||
echo " ⬆️ $file → bookworm"
|
echo " ⬆️ $file → stable"
|
||||||
curl -fsSL -X PUT \
|
curl -fsSL -X PUT \
|
||||||
-H "Authorization: token ${TOKEN}" \
|
-H "Authorization: token ${TOKEN}" \
|
||||||
--upload-file "$file" \
|
--upload-file "$file" \
|
||||||
"https://${REGISTRY}/api/packages/${OWNER}/debian/pool/bookworm/main/upload" || {
|
"https://${REGISTRY}/api/packages/${OWNER}/debian/pool/stable/main/upload" || {
|
||||||
echo "❌ Debian 包上传失败: $file (bookworm)"
|
echo "❌ Debian 包上传失败: $file (stable)"
|
||||||
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)"
|
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
done
|
done
|
||||||
@@ -166,7 +156,7 @@ jobs:
|
|||||||
echo "📝 生成 Release..."
|
echo "📝 生成 Release..."
|
||||||
|
|
||||||
export REGISTRY OWNER TAG
|
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
|
# 创建 Release
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
25
README.md
25
README.md
@@ -18,32 +18,16 @@
|
|||||||
|
|
||||||
## 🚀 快速开始
|
## 🚀 快速开始
|
||||||
|
|
||||||
### 使用 Debian 包安装(推荐)
|
### Debian/Ubuntu(推荐)
|
||||||
|
|
||||||
Debian 12 (bookworm):
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 下载 GPG 密钥
|
# 下载 GPG 密钥
|
||||||
sudo curl https://gitea.bcde.io/api/packages/wangdefa/debian/repository.key -o /etc/apt/keyrings/gitea-wangdefa.asc
|
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 update
|
||||||
sudo apt-get install p2pool
|
sudo apt-get install p2pool
|
||||||
```
|
```
|
||||||
@@ -101,7 +85,6 @@ docker buildx build --pull \
|
|||||||
|
|
||||||
- **二进制包** (`tar.gz`) - 适用于所有 Linux 发行版
|
- **二进制包** (`tar.gz`) - 适用于所有 Linux 发行版
|
||||||
- **Debian 包** (`.deb`) - 适用于 Debian/Ubuntu 系统
|
- **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)
|
purge)
|
||||||
# Remove user and group
|
# Remove user and group
|
||||||
if getent passwd p2pool >/dev/null; then
|
if getent passwd p2pool >/dev/null; then
|
||||||
deluser --system p2pool 2>/dev/null || true
|
deluser --quiet p2pool || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if getent group p2pool >/dev/null; then
|
if getent group p2pool >/dev/null; then
|
||||||
delgroup --system p2pool 2>/dev/null || true
|
delgroup --quiet p2pool || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Remove data directories (only on purge)
|
# Remove data directories (only on purge)
|
||||||
|
|||||||
13
debian/prerm
vendored
13
debian/prerm
vendored
@@ -1,10 +1,17 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# Stop service if running
|
# Stop and disable service if running
|
||||||
if [ -d /run/systemd/system ] && systemctl is-active --quiet p2pool.service; then
|
if [ -d /run/systemd/system ]; then
|
||||||
echo "Stopping P2Pool service..."
|
if systemctl is-active --quiet p2pool.service; then
|
||||||
|
echo "Stopping p2pool service..."
|
||||||
systemctl stop 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
|
fi
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|||||||
@@ -1,58 +1,45 @@
|
|||||||
# Debian 包配置管理架构
|
# Debian 打包架构
|
||||||
|
|
||||||
## 1. 配置文件管理机制
|
## 1. 身份
|
||||||
|
|
||||||
### 配置文件位置和格式
|
- **目的**:为 p2pool 构建跨架构的 Debian 软件包
|
||||||
- **文件路径:** `/var/lib/p2pool/params.conf`
|
- **关键功能**:多架构支持、自动化构建和发布
|
||||||
- **文件权限:** `640` (所有者: `p2pool:p2pool`)
|
|
||||||
- **格式:** 基于命令行参数的 key-value 配置文件
|
|
||||||
|
|
||||||
### 配置文件生命周期
|
## 2. 核心组件
|
||||||
|
|
||||||
#### 创建时机
|
关键文件:
|
||||||
- **首次安装:** `postinst` 脚本自动创建示例配置文件
|
- `.gitea/workflows/ci.yaml`:CI/CD 流程
|
||||||
- **升级场景:** 现有配置文件被完全保留,不会被覆盖
|
- `debian/build-deb.sh`:Debian 打包脚本
|
||||||
|
- `debian/control`:软件包元数据
|
||||||
|
- `debian/postinst`:安装后脚本
|
||||||
|
- `debian/postrm`:卸载后脚本
|
||||||
|
|
||||||
#### 配置文件生成策略
|
## 3. 构建流程
|
||||||
```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
|
|
||||||
```
|
|
||||||
|
|
||||||
### 配置加载机制
|
1. **架构选择**:
|
||||||
- systemd 服务使用 `--params-file /var/lib/p2pool/params.conf` 加载配置
|
- `amd64`: 64位 x86 架构
|
||||||
- 配置文件支持所有原命令行参数
|
- `arm64`: ARM 64位架构
|
||||||
- 配置文件优先级高于硬编码的默认值
|
|
||||||
|
|
||||||
## 2. 安全与管理特性
|
2. **发行版目标**:
|
||||||
|
- `stable`:统一的稳定发行版仓库
|
||||||
|
|
||||||
### 权限控制
|
3. **Package Registry**:
|
||||||
- 仅 `p2pool` 系统用户可读写配置文件
|
- Generic Package Registry:存储 `.tar.gz`
|
||||||
- 组权限限制,防止非授权访问敏感配置
|
- Debian Package Registry:存储 `.deb`
|
||||||
- 文件权限 `640` 确保最小权限原则
|
|
||||||
|
|
||||||
### 升级保护
|
## 4. 配置管理
|
||||||
- 配置文件在包升级过程中保持不变
|
|
||||||
- 新版本兼容旧配置文件格式
|
|
||||||
- 升级后可通过比较 `params.conf.example` 检查新增配置项
|
|
||||||
|
|
||||||
## 3. 配置示例
|
- 配置文件:`/var/lib/p2pool/params.conf`
|
||||||
|
- 安全原则:
|
||||||
|
- 配置与二进制包分离
|
||||||
|
- 升级时保留用户配置
|
||||||
|
- 最小权限原则
|
||||||
|
|
||||||
```conf
|
## 5. 发布策略
|
||||||
# /var/lib/p2pool/params.conf 示例
|
|
||||||
wallet=YOUR_MONERO_WALLET_ADDRESS
|
|
||||||
host=0.0.0.0
|
|
||||||
rpc-port=3333
|
|
||||||
log-level=1
|
|
||||||
```
|
|
||||||
|
|
||||||
## 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 为例)
|
# 添加仓库源(以 Debian 12 为例)
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/gitea-OWNER.asc] \
|
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
|
sudo tee /etc/apt/sources.list.d/OWNER.list
|
||||||
|
|
||||||
# 更新包列表并安装
|
# 更新包列表并安装
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
# P2Pool Debian 打包与配置系统文档
|
# p2pool 文档系统
|
||||||
|
|
||||||
## 文档导航
|
## 概述 (Overview)
|
||||||
|
- [CI 工作流程](/llmdoc/overview/ci-workflow.md)
|
||||||
|
|
||||||
### 总览
|
## 指南 (Guides)
|
||||||
- [架构:Debian 包管理](/llmdoc/architecture/debian-packaging.md)
|
- [Debian 包安装](/llmdoc/guides/debian-package.md)
|
||||||
|
|
||||||
### 指南
|
## 架构 (Architecture)
|
||||||
- [Debian 包安装与配置](/llmdoc/guides/debian-package.md)
|
- [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