开发者指南
本指南说明了如何设置您的环境以开发 Helm。
先决条件
- 最新版本的 Go
- 带 kubectl 的 Kubernetes 集群(可选)
- Git
构建 Helm
我们使用 Make 来构建我们的程序。最简单的入门方法是
$ make
如果需要,这将首先安装依赖项并验证配置。然后它将编译 helm
并将其放置在 bin/helm
中。
要本地运行 Helm,您可以运行 bin/helm
。
- 已知 Helm 可在 macOS 和大多数 Linux 发行版(包括 Alpine)上运行。
运行测试
要运行所有测试,请运行 make test
。作为先决条件,您需要安装 golangci-lint。
贡献指南
我们欢迎贡献。该项目已设置了一些指南,以确保 (a) 代码质量保持高水平,(b) 项目保持一致,以及 (c) 贡献遵循开源法律要求。我们的意图不是给贡献者增加负担,而是构建优雅、高质量的开源代码,以便我们的用户从中受益。
请确保您已阅读并理解主要的贡献指南
https://github.com/helm/helm/blob/main/CONTRIBUTING.md
代码结构
Helm 项目的代码组织如下
- 各个程序位于
cmd/
中。cmd/
内部的代码并非为库重复使用而设计。 - 共享库存储在
pkg/
中。 scripts/
目录包含许多实用程序脚本。其中大部分由 CI/CD 管道使用。
Go 依赖项管理处于不断变化之中,它很可能在 Helm 的生命周期中发生变化。我们鼓励开发人员不要尝试手动管理依赖项。相反,我们建议您依靠项目的 Makefile
来为您完成此操作。对于 Helm 3,建议您使用 Go 版本 1.13 或更高版本。
编写文档
自 Helm 3 以来,文档已移至其自己的仓库。编写新功能时,请编写相应的文档并将其提交至 helm-www 仓库。
一个例外:Helm CLI 输出(英文) 是从 helm
二进制文件本身生成的。有关如何生成此输出的说明,请参阅 更新 Helm CLI 参考文档。翻译后,CLI 输出不会生成,您可以在 /content/<lang>/docs/helm
中找到它。
Git 约定
我们使用 Git 作为我们的版本控制系统。main
分支是当前开发候选者的所在地。版本会标记。
我们通过 GitHub 拉取请求 (PR) 接受对代码的更改。执行此操作的一种工作流程如下
- 将
github.com/helm/helm
仓库分叉到您的 GitHub 帐户 - 将分叉的仓库
git clone
到您想要的目录 - 创建一个新的工作分支 (
git checkout -b feat/my-feature
) 并在该分支上进行您的工作。 - 当您准备好让我们审查时,将您的分支推送到 GitHub,然后向我们发送新的拉取请求。
对于 Git 提交消息,我们遵循 语义提交消息
fix(helm): add --foo flag to 'helm install'
When 'helm install --foo bar' is run, this will print "foo" in the
output regardless of the outcome of the installation.
Closes #1234
常见的提交类型
- fix: 修复错误或 bug
- feat: 添加新功能
- docs: 更改文档
- test: 改进测试
- ref: 重构现有代码
常见范围
- helm: Helm CLI
- pkg/lint: lint 包。对于任何包,请遵循类似的约定
*
: 两个或多个范围
了解更多
Go 约定
我们严格遵循 Go 编码风格标准。通常,运行 go fmt
将使您的代码变得美观。
我们通常也遵循 go lint
和 gometalinter
建议的约定。运行 make test-style
来测试样式一致性。
了解更多
如果您运行 make test
目标,不仅会运行单元测试,还会运行样式测试。如果 make test
目标失败,即使是由于样式原因,您的 PR 也不会被视为已准备好合并。