開発者ガイド
このガイドでは、Helmで開発するための環境をセットアップする方法について説明します。
必要な環境
- Goの最新バージョン
- kubectlおよびKubernetesクラスター (optional)
- Git
Helmをビルドする
Makeを使用してプログラムを構築します。最も簡単な方法は次のとおりです:
$ make
注意: $GOPATH/src/helm.sh/helm のパスにて実行されていない場合、このコマンドは失敗します。 また、build
が関連するパッケージが見つけられないため、helm.shディレクトリをシンボリックリンクにしてはいけません。
このコマンドは必要に応じて依存関係をインストールし、vendor/ツリーを再ビルドしたのち、configurationを検証します。 その後にhelmをコンパイルしてbin/helmに配置します。
Helmをローカルで実行するには、bin/helmを実行してください。
- Helmは、macOSおよびAlpineを含んだほとんどのLinuxディストリビューションで動作することが知られています。
テストの実行
すべてのテスト(vendor/のテストを除く)を実行するには、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にsubmitしてください。
例外: Helm CLI output (英語) は helm のバイナリ自体から生成されます。
このoutputを生成する方法についてはUpdating the Helm CLI Reference Docs
をご覧ください。 翻訳された場合、CLI出力は生成されず/content/<lang>/docs/helmに生成されます。
Git 規約
バージョン管理システムにはGitを使用しています。
mainブランチは現在の開発候補の中心です。 リリースにはタグが付けられます。
GitHubのPull Requests(PRs)を介してコードの変更を受け付けています。 これを行うためのワークフローの一例は次のとおりです。
- $GOPATH/srcに移動して- mkdir helm.sh; cd helm.shを実行し、- github.com/helm/helmのリポジトリを- git cloneします。
- リポジトリをあなたのGitHubアカウントにフォークします
- あなたのリポジトリを$GOPATH/src/helm.sh/helmのリモートとして追加します。
- 新しい作業ブランチ (git checkout -b feat/my-feature) 作成し、そのブランチで作業を行います。
- レビューの準備ができましたら、あなたのブランチをGitHubにプッシュして新しいプルリクエストを開いてください。
Git commit messagesに関してはSemantic Commit Messages に従います :
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: The Helm CLI
- pkg/lint: lintパッケージ。どのパッケージでも同様の規則に従ってください
- *: 2つ以上のスコープ
さらに読む:
- Deis Guidelines がこのセクションのインスピレーションになりました。
- Karma Runner はthe semantic commit messageの考えを 定義しています。
Go 規約
Go coding style standardsに厳密に従っています。だいたいの場合go fmtを実行すればコードが美しくなります。
また、go lintおよびgometalinterによって推奨される規則に従います。
make test-styleを実行してスタイルの適合性をテストしてください。
さらに読む:
- Effective Go ではformattingを導入しています.
- The Go Wiki には formattingに関して素晴らしい記事があります。
make testターゲットを実行すると、単体テストが実行されるだけでなく、スタイルテストも実行されます。
make testターゲットが失敗する場合は、それが文体に起因するものであったとしても、あなたのPRがマージに向けた準備ができていないと判断されます。