Language: English | 日本語
本ドキュメントは、KHIのコード開発に貢献するために開発環境をセットアップする手順を記載しています。 まずは Contribution Guide をお読みいただいた上で、本ドキュメントに沿って開発環境をセットアップしてください。
- Go 1.26.*
- Node.js 環境 26.*
gcloudCLIjqコマンド
- このリポジトリをダウンロードまたはクローンします。
例:git clone https://github.com/GoogleCloudPlatform/khi.git - プロジェクトルートに移動します。
例:cd khi - プロジェクトルートから
make setupを実行します。 (この Make ターゲットは、npm パッケージのインストール、自動生成コードの生成、git フックの設定を行います)
gcloudで認証します。
例: ユーザーアカウントの認証情報を使用する場合は、gcloud auth loginを実行します。make buildを実行します。- 生成された実行ファイル
./khiを実行します。 http://localhost:8080を開き、KHI の使用を開始してください!
KHIレポジトリに直接新しいブランチを作成することはできません。あなたのアカウントにKHIレポジトリをforkしてください。
こちらのドキュメント の手順に沿って、コミットに署名を付与するように設定してください。コミット署名なしのコミットは受付できません。
本プロジェクトではバージョン管理ツールとして git よりも Jujutsu (jj) の使用を推奨しています。
git を使用する場合、make setup を実行することで git の pre-commit フックがインストールされます。このフックはコミット前にライセンスヘッダの有無、コードの自動フォーマット、linterの実行を自動的に行い、フォーマット等のミスによるCIの失敗を防ぎます。
一方、jj を使用する場合、ネイティブの自動フック機能が現状サポートされていないため、make setup ではフックはインストールされません。jj を利用する場合は、コミット作成前(またはプッシュ前)に手動で make pre-commit を実行するか、jj のエイリアス機能等を用いて make pre-commit を自動化させてください。
本リポジトリには、gemini-cli や Antigravity などの AI アシスタントツールを前提とした設定が整備されています。
プロジェクトルートや各ディレクトリに配置された GEMINI.md、および .agents フォルダ内のルール定義を活用することで、AI アシスタントがプロジェクト固有のコーディング規約やコンテキストを自動的に認識し、開発を効果的にサポートします。AI アシスタントを利用した開発を行う際は、これらの設定ファイルが読み込まれていることを確認してください。
このレポジトリにはVSCodeの設定ファイルが用意されています。VSCodeでKHIサーバーを起動する方法や、フロントエンドのコードに設定されたbreakpointを機能させるためのChromeの起動設定が含まれています。
.vscode/launch.json:Start KHI Backend: KHIのバックエンドサーバを起動します。ポート8080で起動します。Launch KHI Frontend (Chrome): KHIのフロントエンドサーバを起動しChromeで開きます。ポート4200で起動します。 4200/api宛のリクエストは8080にプロキシされます。Launch Storybook (Chrome): KHIのStorybookを起動しChromeで開きます。ポート6006で起動します。Launch Karma (Chrome): KHIのフロントエンドのテスト環境のKarmaを起動しChromeで開きます。ポート9876で起動します。
フロントエンドの開発を実施する際、下記のコードを実行すると開発環境のAngularサーバーを4200番ポートで実行できます。
make watch-webKHIの開発環境のAngularサーバーはリクエストを localhost:4200/api からlocalhost:8080にプロキシします(the proxy config)。
localhost:8080ではなく localhost:4200 にてKHIにアクセスできます。 開発環境のAngularサーバーは自動的にビルドされ、フロントエンドのコードの変更が自動で適用されます。
下記を実行すると、フロントエンドとバックエンドのコードのテストが実行されます。
make testバックエンドのテストをCloud Loggingと一緒に実行したい場合は下記のコードを実行してください。
go test ./... -args -skip-cloud-logging=trueフロントエンドの開発を実施する際、下記のコードを実行すると開発環境のStorybookサーバーを6006番ポートで実行できます。
make watch-storybookStorybookは自動的にビルドされ、フロントエンドのコードの変更が自動で適用されます。
下記のフロントエンドのコードは、バックエンドのコードから自動生成されます。
/web/src/app/generated.scss/web/src/app/generated.ts
上記のファイルは scripts/frontend-codegen/main.go Golang codesにて、Golang側の一部の定数からテンプレートをもとに生成されます。
KHIではmarkdownlint-cli2を使用して、Markdownファイルにおけるキュメントのスタイルを構成します。
KHIプロジェクトは markdownlint-cli2 をディペンデンシーとして含んでいるため、下記をインストールする必要があります。
npm install下記のコマンドでリンターが実行されます:
make lint-mdマークダウンを自動的に修正するには下記を実行します:
make format-mdKHIはコンテナイメージのデプロイプロセスを自動化しています。 GitHubでリリースを作成すると、専用のタグが自動的に生成されます。この操作がトリガーとなり、コンテナが自動的にビルドされ、リポジトリにプッシュされます。
- プレリリース
- tagを
vx.y.z-betaとして命名すると、 下記のアドレスとしてデプロイされます。gcr.io/kubernetes-history-inspector/release:betagcr.io/kubernetes-history-inspector/release:vx.y.z-beta
- tagを
- リリース
- tagを
vx.y.zとして命名すると、 下記のアドレスとしてデプロイされます。gcr.io/kubernetes-history-inspector/release:vx.y.zgcr.io/kubernetes-history-inspector/release:latest
- tagを
Note
リリースの作成後にデプロイプロセスが開始されます。イメージがリポジトリにプッシュされるまで1時間ほどかかる場合があります。
レポジトリ管理者は、プルリクエストに対して github-deploy-ondemand チェックを実行できます。これによりイメージがgcr.io/kubernetes-history-inspector/develop:$SHORT_SHAにデプロイされます。
Note
このイメージは、最後のチェックのためだけのものです。まず、あなたの環境でコードが正しいことを確認してください。 ビルドには1時間かかる場合があります。