贡献指南(Contributing to K8S Enable)
感谢您对 K8S Enable 项目的关注与贡献!
本项目是在Kubernetes生态中,插件化式加入K8S Enable组件。提供了基于容器的内存无感借用能力和内存共享能力,
为确保代码质量与社区协作效率,请在贡献前仔细阅读本指南。
📌 1. 贡献流程概览
- Fork 本仓库 到您的 Gitcode 账号。
- 克隆 Fork 后的仓库:
git clone https://atomgit.com/<your-username>/xxxxxx cd xxxxxx git remote add upstream https://atomgit.com/openfuyao/xxxxxx - 创建特性分支(建议以
feat/xxx或fix/xxx命名):git checkout -b feat/add-mem-algo - 开发并验证:编写代码、补充测试、更新文档。
- 提交代码(遵循 提交规范)。
- 推送分支并发起 Pull Request(PR) 到
openfuyao/xxxxxx:master。 - 响应 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) - 新功能有对应文档更新
- 提交信息符合规范
- 无敏感信息泄露