開發人員指南
本指南說明如何設定 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) 接受程式碼的變更。執行此操作的一個工作流程如下
- 將
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:修正錯誤
- 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 也不會被視為可以合併。