開發人員指南

本指南說明如何設定 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) 貢獻符合開放原始碼法律要求。我們的目的不是要增加貢獻者的負擔,而是要建構優雅且高品質的開放原始碼程式碼,以便我們的使用者受益。

請確保您已閱讀並理解主要的 CONTRIBUTING 指南

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 Pull Requests (PRs) 接受程式碼的變更。執行此操作的一個工作流程如下

  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:修正錯誤
  • 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 也不會被視為可以合併。