開発者ガイド
このガイドでは、Helmの開発環境のセットアップ方法について説明します。
前提条件
- 最新のGoバージョン
- kubectl付きのKubernetesクラスタ(オプション)
- Git
Helmのビルド
プログラムのビルドにはMakeを使用します。最も簡単な開始方法は次のとおりです。
$ make
必要に応じて、最初に依存関係をインストールし、構成を検証します。その後、helm
をコンパイルしてbin/helm
に配置します。
ローカルでHelmを実行するには、bin/helm
を実行します。
- HelmはmacOSと、Alpineを含むほとんどのLinuxディストリビューションで実行可能です。
テストの実行
すべてのテストを実行するには、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/
にあります。
Gitの規則
バージョン管理システムにはGitを使用しています。main
ブランチは現在の開発候補の本拠地です。リリースにはタグが付けられます。
GitHubプルリクエスト(PR)を通じてコードへの変更を受け入れます。これを行うためのワークフローの1つは次のとおりです。
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パッケージ。任意のパッケージについても同様の規則に従ってください。
*
: 2つ以上のスコープ
詳細を読む
- このセクションのインスピレーションとなったのは、Deisガイドラインです。
- Karma Runnerはセマンティックコミットメッセージのアイデアを定義しています。
Goの規則
Goコーディングスタイル標準を非常に厳密に遵守しています。通常、go fmt
を実行すると、コードが美しくなります。
また、通常はgo lint
とgometalinter
で推奨される規則に従います。スタイルの適合性をテストするには、make test-style
を実行します。
詳細を読む
make test
ターゲットを実行すると、単体テストだけでなくスタイルテストも実行されます。スタイル上の理由であってもmake test
ターゲットが失敗した場合、PRはマージの準備ができていないと見なされます。