開発者ガイド

このガイドでは、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//docs/helmにあります。

Gitの規則

バージョン管理システムにはGitを使用しています。mainブランチは現在の開発候補の本拠地です。リリースにはタグが付けられます。

GitHubプルリクエスト(PR)を通じてコードへの変更を受け入れます。これを行うためのワークフローの1つは次のとおりです。

  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パッケージ。任意のパッケージについても同様の規則に従ってください。
  • *: 2つ以上のスコープ

詳細を読む

Goの規則

Goコーディングスタイル標準を非常に厳密に遵守しています。通常、go fmtを実行すると、コードが美しくなります。

また、通常はgo lintgometalinterで推奨される規則に従います。スタイルの適合性をテストするには、make test-styleを実行します。

詳細を読む

make testターゲットを実行すると、単体テストだけでなくスタイルテストも実行されます。スタイル上の理由であってもmake testターゲットが失敗した場合、PRはマージの準備ができていないと見なされます。