Files
PVE-Tools-9/.github/CLAUDE.md
Maple 886e82f0cb refactor: 模块化重构 — 拆分 lib/ 基础设施层与 src/modules/ 功能模块
PVE-Tools.sh 从 ~14,700 行单文件重构为 150 行入口点,
所有函数按职责拆分到独立文件,通过 source 机制加载。

lib/ — 基础设施层(零业务逻辑)
  config.sh: 全局变量与常量
  core.sh: 日志、UI、确认、备份、GRUB、进度条
  network.sh: 网络检测、镜像选择
  runtime.sh: 运行时守卫、main() 入口

src/modules/ — 功能模块(10 个目录)
  01-optimization  02-sources  03-boot-kernel
  04-gpu-passthrough  05-vm-container  06-networking
  07-storage-disk  08-tools-about  09-security  10-third-party

新增 build.sh(合并编译)和 dev.sh(开发 source 入口),
release.yml 新增构建步骤,CI 适配模块化结构。
2026-07-08 11:15:59 +08:00

4.1 KiB
Raw Blame History

根目录 > .github

.github -- CI/CD 工作流与社区治理

模块职责

管理项目的持续集成/持续部署流水线和社区 Issue 模板。三条工作流覆盖 PR 验证、正式发布和测试版发布。

入口与启动

项目 说明
触发方式 GitHub Actions由 push/pull_request 事件触发
运行环境 ubuntu-latest
权限 contents: writeRelease 工作流需要)

工作流清单

release.yml -- 正式发布工作流

触发条件: 推送版本标签 (v*.*.*, *.*.*, v*.*.*-stable, *.*.*-stable)

步骤:

  1. actions/checkout@v4fetch-depth: 0 以获取完整历史)
  2. 从 tag 提取版本号
  3. bash build.sh -- 将 lib/ + src/modules/ 组装为 dist/PVE-Tools.sh
  4. 安装 shcvia neurobin/ppa
  5. shc -f dist/PVE-Tools.sh -o pve-tools -- 编译为二进制
  6. 生成 release notes基于 git 提交历史)
  7. softprops/action-gh-release@v2 创建 GitHub Release上传 pve-tools + dist/PVE-Tools.sh

构建产物:

  • pve-tools -- 编译后的二进制文件
  • dist/PVE-Tools.sh -- 拼接后的单文件脚本

beta-release.yml -- 测试版发布工作流

触发条件: 推送 beta/alpha 标签

功能与 release.yml 类似,但标记为 prerelease。

pr-validation.yml -- PR 验证工作流

触发条件: PR 合并到 mainbeta 分支

检查项:

检查 命令 说明
Shellcheck shellcheck -f gcc PVE-Tools.sh 静态分析,有 error/warning 则失败
语法检查 bash -n PVE-Tools.shbash -n dev.shbash -n dist/PVE-Tools.sh 先运行 bash build.sh 构建再检查
构建验证 bash build.sh 验证构建不报错
版本一致性 比较 lib/config.sh 中的 CURRENT_VERSIONVERSION 文件 不一致则失败
安全扫描 grep 检测 eval/source 使用 发现则告警

Issue 模板

文件 用途
fast-bugs-report.md 快速 Bug 报告
feature-request.md 功能请求
plugin-submit.md 插件提交
report-bugs.md 详细 Bug 报告
config.yml Issue 模板配置

其他文件

文件 用途
FUNDING.yml GitHub Sponsors 赞助配置

关键依赖与配置

  • GitHub Actions: 免费额度,ubuntu-latest runner
  • shc: 来自 ppa:neurobin/ppa,用于 Bash 编译
  • softprops/action-gh-release@v2: 第三方 GitHub Action用于创建 Release
  • shellcheck: Ubuntu 自带或通过 apt 安装

测试与质量

CI/CD 本身即为项目的测试与质量保障体系:

  • 每次 PR 自动执行静态分析、语法检查、版本一致性校验、安全扫描
  • Release 前自动构建并验证构建产物

常见问题 (FAQ)

Q: 为什么 Release 要用 shc 编译? shc 将 Bash 脚本编译为二进制文件,提供基础的源码保护,同时便于分发。构建产物 dist/PVE-Tools.sh 同时发布以保持 bash <(curl ...) 兼容性。

Q: PR 验证中 build.sh 会失败怎么办? 检查 lib/ 和 src/modules/ 中的文件是否存在、语法是否正确。bash -n 仅检查语法不执行代码。

Q: 如何添加新的 Issue 模板?ISSUE_TEMPLATE/ 目录添加 .md 文件并更新 config.yml 即可GitHub 会自动识别。

相关文件清单

.github/
  workflows/
    release.yml                    # 正式发布工作流
    beta-release.yml               # 测试版发布工作流
    pr-validation.yml              # PR 验证工作流
  ISSUE_TEMPLATE/
    fast-bugs-report.md            # 快速 Bug 报告模板
    feature-request.md             # 功能请求模板
    plugin-submit.md               # 插件提交模板
    report-bugs.md                 # 详细 Bug 报告模板
    config.yml                     # Issue 模板配置
  FUNDING.yml                      # 赞助配置

变更记录 (Changelog)

日期 变更
2026-07-08 初始化 .github 模块 CLAUDE.md。PR 验证已适配模块化build.sh/build -n dist。Release 已添加 build.sh 步骤。