贡献指南(Contributing to K8S Enable)

感谢您对 K8S Enable 项目的关注与贡献!
本项目是在Kubernetes生态中,插件化式加入K8S Enable组件。提供了基于容器的内存无感借用能力和内存共享能力,

为确保代码质量与社区协作效率,请在贡献前仔细阅读本指南。


📌 1. 贡献流程概览

  1. Fork 本仓库 到您的 Gitcode 账号。
  2. 克隆 Fork 后的仓库
    git clone https://atomgit.com/<your-username>/xxxxxx
    cd xxxxxx
    git remote add upstream https://atomgit.com/openfuyao/xxxxxx
    
  3. 创建特性分支(建议以 feat/xxxfix/xxx 命名):
    git checkout -b feat/add-mem-algo
    
  4. 开发并验证:编写代码、补充测试、更新文档。
  5. 提交代码(遵循 提交规范)。
  6. 推送分支并发起 Pull Request(PR)openfuyao/xxxxxx:master
  7. 响应 Review 意见,直至 PR 合并。

💡 提示:请保持您的 fork 与上游仓库同步:

git fetch upstream
git rebase upstream/master

🛠️ 2. 开发环境与构建验证

推荐环境

  • 操作系统:openEuler 24.03 LTS 或更高版本
  • 编译器:GCC ≥ 9.3 , golang 1.24.1
  • 构建工具:CMake ≥ 3.18, Ninja(可选)

构建与测试

所有贡献代码必须通过以下验证:

# 1. 构建 Release 版本(默认)
./build.sh

# 2. 运行单元测试(UT)和集成测试(IT)
./build.sh test

要求:PR 中所有测试必须 100% 通过,且不得降低整体代码覆盖率。


🧼 3. 代码规范

日志与错误处理

  • 使用项目内置日志模块(matrixplugin/pkg/utils/log)。

安全要求

  • 禁止硬编码密钥、路径或敏感信息。
  • 所有外部输入需做边界检查,防止缓冲区溢出。
  • 商用加密功能(如 KMC)仅在闭源插件中实现,开源部分仅保留接口。

📝 4. 提交信息规范

提交信息格式参考 Conventional Commits,便于自动生成 CHANGELOG:

<type>(<scope>): <subject>

<body>
  • type(必选):
    • feat:新功能
    • fix:Bug 修复
    • docs:文档更新
    • test:测试用例
    • refactor:重构(无功能变更)
    • ci:CI/CD 配置
    • perf:性能优化
  • scope(可选):模块名,如 mem, sdk, ha
  • subject:简明描述(≤50 字符)
  • body(可选):详细说明、关联 Issue 等

✅ 示例:

feat(mem): add round-robin scheduling algorithm

- Implement basic round-robin allocator in MemScheduler
- Add corresponding UT cases
- Resolves #12

📚 5. 文档与注释

  • 公共 API 必须使用 Doxygen 风格注释:
    /**
     * @brief Allocate memory block from pool.
     * @param size Size in bytes.
     * @return Pointer to allocated memory, or nullptr on failure.
     */
    void* mem_alloc(size_t size);
    
  • 新增功能或架构变更需同步更新 docs/ 下对应文档(如设计、API、示例)。

🧪 6. 测试要求

  • 新增功能必须包含单元测试(UT),覆盖率建议 ≥80%。
  • c++测试代码位于 test/,命名规范:test_<filename>.cpp

🌐 7. 与 openFuyao 社区集成


❓ 8. 获取帮助


📄 许可证

所有贡献代码将依据项目 LICENSE(Mulan PSL v2)开源。
提交 PR 即表示您同意您的贡献遵循该许可证条款。


再次感谢您的贡献!让我们共同打造更强大的 UB 计算基础设施。


附:快速检查清单(提交 PR 前)

  • 代码通过 ./build.sh 构建
  • 所有测试通过:./build.sh test
  • 代码已格式化(clang-format,go-format
  • 新功能有对应文档更新
  • 提交信息符合规范
  • 无敏感信息泄露