贡献指南
欢迎贡献
SPIRE 欢迎各种形式的贡献:
Bug 修复
新功能
文档改进
测试增强
问题报告
贡献流程
1. 准备工作
# Fork 仓库到你的 GitHub 账户
# 克隆你的 Fork
git clone https://github.com/YOUR-USERNAME/spire.git
cd spire
# 添加上游仓库
git remote add upstream https://github.com/spiffe/spire.git
2. 创建分支
# 确保在最新的 main 分支
git checkout main
git pull upstream main
# 创建功能分支
git checkout -b feature/my-feature
3. 开发
# 编写代码...
# 运行测试
make test
# 代码检查
make lint
4. 提交
遵循 Conventional Commits 格式:
# 格式: <type>(<scope>): <description>
git commit -m "feat(server): add new attestation method"
git commit -m "fix(agent): resolve memory leak in rotation"
git commit -m "docs: update configuration guide"
Commit 类型:
类型 |
描述 |
|---|---|
|
新功能 |
|
Bug 修复 |
|
文档变更 |
|
代码格式(不影响运行) |
|
重构 |
|
测试相关 |
|
构建或辅助工具变更 |
5. DCO 签名
所有提交必须包含 DCO (Developer Certificate of Origin) 签名:
git commit -s -m "feat: add new feature"
这会添加:
Signed-off-by: Your Name <your.email@example.com>
6. 推送和创建 PR
# 推送到你的 Fork
git push origin feature/my-feature
# 在 GitHub 上创建 Pull Request
Pull Request 指南
PR 标题
使用与 commit 相同的格式:
feat(server): add support for new attestor
PR 描述
包含以下内容:
## 描述
简要描述变更内容和原因。
## 变更类型
- [ ] Bug 修复
- [ ] 新功能
- [ ] 重大变更
- [ ] 文档更新
## 测试
描述如何测试这些变更。
## 相关 Issue
Fixes #123
PR 检查清单
代码遵循项目规范
添加/更新了测试
所有测试通过
更新了相关文档
DCO 签名正确
代码规范
Go 代码风格
遵循 Effective Go 和项目约定:
// 正确的命名
type NodeAttestor interface {}
func AttestNode() {}
// 错误处理
if err != nil {
return fmt.Errorf("failed to attest node: %w", err)
}
// 注释
// AttestNode performs node attestation using the configured attestor.
// It returns an error if attestation fails.
func AttestNode(ctx context.Context) error {
// ...
}
代码检查
# 运行所有检查
make lint
# 手动运行 golangci-lint
golangci-lint run ./...
格式化
# 格式化代码
gofmt -w .
# 或使用 goimports
goimports -w .
文档贡献
文档位置
doc/: 用户文档man/: 中文手册(本项目)代码注释: API 文档
文档规范
使用清晰、简洁的语言
包含代码示例
保持格式一致
Issue 报告
Bug 报告
使用 Bug 报告模板:
## Bug 描述
简要描述 bug。
## 重现步骤
1. 步骤 1
2. 步骤 2
3. ...
## 期望行为
描述期望发生什么。
## 实际行为
描述实际发生什么。
## 环境
- SPIRE 版本:
- 操作系统:
- Kubernetes 版本(如适用):
## 日志
相关日志输出。
功能请求
## 功能描述
描述你想要的功能。
## 使用场景
为什么需要这个功能?
## 建议实现
如何实现这个功能?
社区
沟通渠道
Slack: spiffe.slack.com
邮件列表: spiffe-dev
GitHub Discussions: 项目讨论
行为准则
尊重他人
包容多样性
建设性沟通
关注项目利益
审查流程
审查标准
代码质量和可读性
测试覆盖
文档完整性
与现有代码的一致性
安全考虑
合并要求
至少一个维护者批准
所有 CI 检查通过
解决所有评论
DCO 签名有效
发布流程
SPIRE 遵循语义化版本:
主版本: 不兼容的 API 变更
次版本: 向后兼容的新功能
补丁版本: 向后兼容的 bug 修复
详见 RELEASING.md。
获取帮助
如果需要帮助:
查看现有文档和 Issue
在 Slack #spire 频道提问
创建 GitHub Discussion
感谢贡献!
每一份贡献都很重要,无论大小。感谢你帮助改进 SPIRE!