diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index 26e4596..2cf7471 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -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 "" diff --git a/README.md b/README.md index 937e6bd..c288fc0 100644 --- a/README.md +++ b/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) ## 🔧 配置管理 diff --git a/debian/postrm b/debian/postrm index 4f5beea..6949c3c 100755 --- a/debian/postrm +++ b/debian/postrm @@ -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) diff --git a/debian/prerm b/debian/prerm index c9b7e7b..7caafb6 100755 --- a/debian/prerm +++ b/debian/prerm @@ -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 diff --git a/llmdoc/architecture/debian-packaging.md b/llmdoc/architecture/debian-packaging.md index 9e7560c..6c89a9b 100644 --- a/llmdoc/architecture/debian-packaging.md +++ b/llmdoc/architecture/debian-packaging.md @@ -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. 设计考量 - -### 动机 -- 简化复杂的命令行参数管理 -- 提供更好的配置持久化方案 -- 增强系统配置的可读性和可维护性 \ No newline at end of file +- 自动化版本发布 +- 标签触发(`refs/tags/*`) +- 多渠道发布: + 1. Generic Package Registry + 2. Debian Package Registry + 3. GitHub/Gitea Releases \ No newline at end of file diff --git a/llmdoc/guides/debian-package.md b/llmdoc/guides/debian-package.md index 3f17eea..593366e 100644 --- a/llmdoc/guides/debian-package.md +++ b/llmdoc/guides/debian-package.md @@ -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 # 更新包列表并安装 diff --git a/llmdoc/index.md b/llmdoc/index.md index 2b965d2..86019da 100644 --- a/llmdoc/index.md +++ b/llmdoc/index.md @@ -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) +(暂无) \ No newline at end of file diff --git a/llmdoc/overview/ci-workflow.md b/llmdoc/overview/ci-workflow.md new file mode 100644 index 0000000..3199947 --- /dev/null +++ b/llmdoc/overview/ci-workflow.md @@ -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 构建镜像 \ No newline at end of file