开发者指南

本指南说明了如何设置您的环境以开发 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) 接受对代码的更改。执行此操作的一种工作流程如下

  1. github.com/helm/helm 仓库分叉到您的 GitHub 帐户
  2. 将分叉的仓库 git clone 到您想要的目录
  3. 创建一个新的工作分支 (git checkout -b feat/my-feature) 并在该分支上进行您的工作。
  4. 当您准备好让我们审查时,将您的分支推送到 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 包。对于任何包,请遵循类似的约定
  • *: 两个或多个范围

了解更多

  • 本节的灵感来自于 Deis 指南
  • Karma Runner 定义 了语义提交消息的概念。

Go 约定

我们严格遵循 Go 编码风格标准。通常,运行 go fmt 将使您的代码变得美观。

我们通常也遵循 go lintgometalinter 建议的约定。运行 make test-style 来测试样式一致性。

了解更多

如果您运行 make test 目标,不仅会运行单元测试,还会运行样式测试。如果 make test 目标失败,即使是由于样式原因,您的 PR 也不会被视为已准备好合并。