- GitLab Inc.リポジトリにファイルをマージするタイミング
- プロセスの概要
jh/
が存在しない場合、または以下の場合に EE として機能します。EE_ONLY=1
- 以下の場合、FOSSとして動作します。
FOSS_ONLY=1
- JH コンテキストでの CI パイプライン
JiHu(JH) Edition 関連のマージリクエストのレビューガイドライン
JHに関する変更は2種類あります:
- 内部
jh/
- これはEEリポジトリの範囲を超えており、このドキュメントの意図するところではありません。
- 外部
jh/
- これらはEEリポジトリに格納される必要があるため、EEリポジトリのレビュアーやメンテナーがレビューやメンテナンスを行う必要があります。これには、
Gitlab.jh?
のようなコードや、ee/
のコードをロードするコードがあるように、jh/
のコードをロードしようとするコードも含まれます。 - このドキュメントは、これらのコードがどのように見えるべきかをガイドすることを意図しており、
jh/
のコードを検索するために必要な変更が何であるかをよりよく理解できるようになります。 - EEとJHの両方が同じメカニズムを共有できるように、これを一般化する予定です。
- JH版の実行をサポートするために必要なデータベースのマイグレーションとデータベーススキーマの変更。詳しくは、JiHuのデータベース変更のガイドラインを参照してください。
- これらはEEリポジトリに格納される必要があるため、EEリポジトリのレビュアーやメンテナーがレビューやメンテナンスを行う必要があります。これには、
必要であれば、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モジュールをロード
prepend
、extend
、include
などのメソッドは使用しないでください。代わりに、prepend_mod
、extend_mod
、include_mod
を使用してください。これらのメソッドは、受信モジュールの名前から関連する EE モジュールと JH モジュールを見つけようとします。
対応するJHファイルのレビューが必要な場合は、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の機能を実装するためのガイドラインを参照してください。