Omnibus GitLabへの新しいソフトウェア定義の追加
GitLabに新しいコンポーネントを追加するには、以下の手順に従ってください:
ビルド中にソフトウェアを取得してコンパイル
ソフトウェア定義は/config/software にあり、Omnibus がソフトウェアを取得する場所、コンパイル方法、必要なフォルダへのインストール方法を指定します。プロジェクトのこの部分は、GitLab用のOmnibusパッケージをビルドするときに実行されます。
Gitから取得するコンポーネントを追加する場合、ローカルミラーとアップストリームのリポジトリのクローンアドレスを/.custom_sources.yml に追加する必要があります。
ローカルミラーは、ディストリビューションチームのメンバーがomnibus-mirrorプロジェクトで作成する必要があります。
ソフトウェアサービスを含める方法については、ディレクトリ内の他のソフトウェアサービスを参照してください。
ライセンスの取り扱い
ほとんどのソフトウェアリポジトリにはライセンスファイルが含まれています。明示的に含まれていない場合は、パッチファイルを使ってライセンスを追加してください。gem やpip のようなパッケージマネージャを使ってインストールしたソフトウェアも、この方法を使うべきです。
手動で追加したライセンスのパッチを作成し、config/patches/SOFTWARE_NAME/license/VERSION_NUMBER/add-license-file.patch という命名規則でディレクトリパスに保存します。
ライセンスはプロジェクトの存続期間中に変更される可能性があります。この方法では、手動でインストールしたライセンスを確認するよう、貢献者に注意を促すために、意図的にビルドを失敗させます。ライセンスが変更されていない場合は、
git mvVERSION_NUMBERパッチファイルを含むディレクトリを新しい.VERSION_NUMBER
ソフトウェア定義の依存関係を別のコンポーネントに追加します。
/config/projects/gitlab.rb config/software/gitlab-rails.rb gitlab-railsにある GitLab プロジェクトの定義に、 を追加します。dependency
Omnibus は依存コンポーネントを最初にビルドし、/config/projects/gitlab.rb にある順に他のコンポーネントをビルドします。したがって、あるソフトウェア・コンポーネント A が別のソフトウェア B の依存コンポーネントとしてマークされている場合、A はプロセスの最初からビルドされます。Aが頻繁に変更されるコンポーネントである場合、キャッシュが頻繁に無効化されるため、後続のコンポーネントがすべて再構築されることになり、全体的なビルド時間が長くなります。回避策としては、AがBの直前にビルドされるようにすることで、キャッシュの無効化を避けることができます。
-
ソフトウェア B の直前にソフトウェア A を
/config/projects/gitlab.rbに追加します。A と B はプロジェクトのトップレベルの依存関係になったので、omnibus は
/config/projects/gitlab.rbに存在する順にビルドします。 -
Bのソフトウェア定義に、以下のような行を追加します。
dependency '<name of software A>' unless project.dependencies.include?('<name of software A>')/config/projects/gitlab.rb上記により、プロジェクトが/config/projects/gitlab.rbからビルドされない場合、A は B の依存関係としてマークされ、B の前にビルドされます。
単一のソフトウェア依存関係に対する変更の検証
パッケージ全体を毎回リビルドするのではなく、ソフトウェアの一部分だけをビルドすると便利なことがあります。例えば、新しいソフトウェア定義を追加する場合です。この方法を使うと、ソフトウェアとその依存関係だけを含む Omnibus パッケージをすばやくリビルドできます。ソフトウェア単体でのビルドを確認したら、それをOmnibus GitLabビルドに追加し、そこで確認することができます。これを使うには
- 開発者の環境をセットアップします。
-
simple.rbファイルをプロジェクトにコピーします。
cp doc/development/examples/simple.rb config/projects/ -
config/projects/simple.rbのdependencyをテストするソフトウェアに合わせて変更してください。 -
を実行してシンプルなプロジェクトをビルドします。
bundle exec omnibus build simple