JiHu(JH) Edition 関連のマージリクエストのレビューガイドライン

JHに関する変更は2種類あります:

  • 内部jh/
    • これはEEリポジトリの範囲を超えており、このドキュメントの意図するところではありません。
  • 外部jh/
    • これらはEEリポジトリに格納される必要があるため、EEリポジトリのレビュアーやメンテナーがレビューやメンテナンスを行う必要があります。これには、Gitlab.jh? のようなコードや、ee/のコードをロードするコードがあるように、jh/ のコードをロードしようとするコードも含まれます。
    • このドキュメントは、これらのコードがどのように見えるべきかをガイドすることを意図しており、jh/ のコードを検索するために必要な変更が何であるかをよりよく理解できるようになります。
    • EEとJHの両方が同じメカニズムを共有できるように、これを一般化する予定です。
    • JH版の実行をサポートするために必要なデータベースのマイグレーションとデータベーススキーマの変更。詳しくは、JiHuのデータベース変更のガイドラインを参照してください。

必要であれば、JHリポジトリにある対応するJHマージリクエストをレビューしてください。

GitLab Inc.リポジトリにファイルをマージするタイミング

jh/ の内部で GitLab JH リポジトリに追加されたファイルは、GitLab Inc. リポジトリにミラーされなければなりません。

GitLab Inc.リポジトリに追加されたコードが、GitLab Inc.コードベースに存在しないGitLab JHファイルを参照する場合(例えば、render_if_exists )、JiHuマージリクエストやファイルへのリンクをコメントに追加してください。これは、gitlab コードベースにおいて、その参照が存在しないパーシャルとして誤認され、その後削除されるのを防ぐためです。

プロセスの概要

以下のプロセスガイドをお読みください:

jh/ が存在しない場合、または以下の場合に EE として機能します。EE_ONLY=1

  • EEリポジトリの場合、jh/ が存在しないため、EE(ライセンスがない場合はCE)のように動作します。
  • JH リポジトリの場合、jh/ は存在しますが、EE_ONLY 環境変数を設定することで EE モードで実行させることができます。

以下の場合、FOSSとして動作します。FOSS_ONLY=1

  • JHリポジトリの場合、jh/ は存在しますが、FOSS_ONLY 環境変数を設定することで、強制的にFOSS(CE) モードで実行させることができます。

JH コンテキストでの CI パイプライン

EE リポジトリにはjh/ ディレクトリがないため、EE リポジトリで JH パイプラインを実行する方法はありません。すべての JH テストはJH リポジトリに移動する必要があります。

トップレベルのJH CI設定はjh/.gitlab-ci.yml (EEリポジトリには存在しません)にあり、それに応じてEE CI設定も含まれます。時には、JHをより簡単にカスタマイズするために、EE CI設定を更新する必要があります。

CEまたはEE機能に基づくJH機能

既存の CE/EE 機能をベースとする機能については、CE/EE クラス/モジュールに注入されるJH 名前空間のモジュールが必要です。これは、私たちがEE機能で行っていることと一致しています。

詳しくは、EEのバックエンド・コードでCE機能を拡張するを参照してください。

例えば、User クラスにモジュールをプリペンドするには、次のようにします:

class User < ActiveRecord::Base
  # ... lots of code here ...
end

User.prepend_mod

EEでは、User.prepend_mod

  • EEモジュールのロード

JHでは、User.prepend_mod

  • EEモジュールのロード
  • JHモジュールをロード

prependextendincludeなどのメソッドは使用しないでください。代わりに、prepend_modextend_modinclude_modを使用してください。これらのメソッドは、受信モジュールの名前から関連する EE モジュールと JH モジュールを見つけようとします。

対応するJHファイルのレビューが必要な場合は、JHリポジトリで見つける必要があります。

note
場合によっては、JHは私たちが必要としないものをオーバーライドする必要があり、その場合、モジュールのためにprepend_mod 。その場合は、モジュールに を追加してもかまいません。その場合は、コメントとそれを使っている JH モジュールへのリンクも追加してください。こうすることで、そのモジュールがどこで使われていて、いつ不要になるかを知ることができますし、使わないからといって削除して、誤ってJHを壊してしまうこともありません。この例です:
# Added for JiHu
# Used in https://jihulab.com/gitlab-cn/gitlab/-/blob/main-jh/jh/lib/jh/api/integrations.rb
API::Integrations.prepend_mod

JH拡張モジュールを書くための一般的な指針

一般的なガイダンスについては、Enterprise Editionの機能を実装するためのガイドラインを参照してください。