コンテンツにスキップ

コントリビュート

セットアップ

正しい場所に小さな変更を 1 つ加え、プルリクエストとして送ります。

  • まず issue を作成するか、すでにある issue にコメントします。何を変えたいのか、なぜ変えたいのかを書いてください。
  • 返信を待ちます。マージされないものを作ってしまわないためです。
  • セットアップを済ませ、HolyArrs をビルドして実行できるようにします。

質問は Discord へ。アイデアは r/HolyArrs へ。issue はバグとロードマップのためのものです。

最初のプルリクエストを送る

最初のプルリクエストを送る へのリンク
  1. 変更が属するモジュールを探します。モジュールにある名前はフォルダー名と同じなので、Discord の通知がおかしい場合は alerts の変更になります。

  2. app/backend/internal/<module>/ と app/frontend/src/lib/<module>/ で変更を加えます。1 つの修正か 1 つの機能に絞ります。

  3. Web アプリ、プログラムの順にビルドし、ブラウザーで変更を試します。セットアップを参照してください。

  4. テストにあるチェックを実行します。

    失敗が 1 つも表示されなければ問題ありません。

  5. ページを変更した場合は、そのページのエンドツーエンドのプロジェクトを実行します。たとえば npm --prefix app/frontend run e2e -- --project=movies です。

  6. プルリクエストを作成します。issue にリンクし、何を変えたか、どうテストしたかを書き、その変更のテストを追加または更新します。

  7. 最初のプルリクエストでは、ボットがコントリビューターライセンス契約への署名を求めます。求められた 1 文を返信します。

変更の種類ごとの行き先

変更の種類ごとの行き先 へのリンク
変更 行き先
新しいルート モジュール
新しいモジュール モジュール。先に issue を作成します
既定でオフの機能 セットアップ
リリース リリース作業。メンテナーのみ

良いプルリクエストとは

良いプルリクエストとは へのリンク
  • コメントには、コードがなぜそう動くのかを書きます。ロードマップの番号、日付、名前、em ダッシュはコメントに入れません。
  • issue が文言についてのものでない限り、アプリの文言は変えません。
  • リリース済みの API パス、フィールド名、設定キー、テーブル名、ジョブ名はそのままにします。追加はしても、名前の変更はしません。

症状。 構造チェックが失敗する。 原因。 メッセージにファイルとルールの名前が出ています。 対処。 コードを移動するか、上のモジュールから単純なデータを渡します。モジュールを参照してください。

症状。 Web アプリが古いままに見える。 原因。 プログラムは、組み込んだ時点のビルドを提供します。 対処。 プログラムの前に Web アプリをもう一度ビルドします。

症状。 エンドツーエンドテストが開始できない。 原因。 テスト用のブラウザーがインストールされていません。 対処。 npx --prefix app/frontend playwright install chromium を実行します。

プルリクエストが守るべきルール
  • モジュールがほかのモジュールとやり取りするのは、そのサービス(Go)か index.ts(Web)を通すときだけです。ストアやファイルを直接使ってはいけません。
  • SQL はモジュールの store*.go ファイルにだけ置き、対象はそのモジュール自身のテーブルだけです。
  • Web のパーツを lib/ui に置くのは、2 つ以上のモジュールが使うときだけです。
  • util、common、shared、helpers というパッケージは作りません。
  • 外部への呼び出しはすべて core/outbound を通します。

これらのルールはテストでチェックされるため、間違ったインポートがあるとビルドが失敗します。ルールの一覧とチェックの名前はモジュールにあります。

CI が実行する内容
ジョブ 実行内容
Web check、lint、test、build とエンドツーエンドのスイート
Go go build、go vet、go test -timeout 60m ./... を amd64 と arm64 で、ネイティブとエミュレーションの両方で実行
Race go test -race ./...
Contract openapi.json の一致、すべてのルートのスコープチェック、ダウンローダーのスイート
Fault and scale クラッシュ、遅い書き込み、不調な外部サービス、メモリの各実行
Image 開発用イメージがビルドでき、起動し、バージョンを報告すること

長時間の実行の詳細はテストにあります。

HolyArrs は無料です。時間の節約になったら、GitHub でスターを付ける、スポンサーになる、コーヒーをおごるのいずれかで応援してください。