正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

omnibus-gitlab パッケージをローカルでビルドする

ビルド環境を準備する

omnibus-gitlabパッケージをビルドするために必要なビルドツールを含むDockerイメージは、GitLab Omnibus BuilderプロジェクトのContainer Registryにあります。

  1. Docker Engineをインストール

  2. パッケージをビルドするOS用のDockerイメージをプルします。omnibus-gitlabで正式に使用されているイメージの現在のバージョンは、CI設定 BUILDER_IMAGE_REVISION環境変数で参照されています。

    docker pull registry.gitlab.com/gitlab-org/gitlab-omnibus-builder/debian_10:${BUILDER_IMAGE_REVISION}
  3. omnibus-gitlabソースをクローンし、クローンされたディレクトリに変更します:

    git clone https://gitlab.com/gitlab-org/omnibus-gitlab.git ~/omnibus-gitlab
    cd ~/omnibus-gitlab
  4. コンテナを起動し、そのシェルに入り、omnibus-gitlabディレクトリをコンテナにマウントします:

    docker run -v ~/omnibus-gitlab:/omnibus-gitlab -it registry.gitlab.com/gitlab-org/gitlab-omnibus-builder/debian_10:${BUILDER_IMAGE_REVISION} bash
  5. デフォルトでは、omnibus-gitlabは、さまざまなGitLabコンポーネントのソースをフェッチするために、パブリックGitLabリポジトリを選択します。環境変数ALTERNATIVE_SOURCESfalseに設定して、dev.gitlab.orgからビルドします。

    export ALTERNATIVE_SOURCES=false

    コンポーネントのソース情報は、.custom_sources.ymlファイルにあります。

  6. デフォルトでは、omnibus-gitlabコードベースは、CI環境で使用されるように最適化されています。このような最適化の1つは、GitLab CIパイプラインによってビルドされた、事前コンパイル済みのRailsアセットを再利用することです。これをビルドで活用する方法については、アップストリームアセットのフェッチセクションを確認してください。または、COMPILE_ASSETS環境変数を設定して、パッケージビルド中にアセットをコンパイルすることもできます。

    export COMPILE_ASSETS=true
  7. デフォルトでは、XZ圧縮を使用して最終的なDEBパッケージが生成されます。これにより、ビルド時間がほとんどまたはまったく増加せず、インストール(解凍)時間がわずかに増加するだけで、Gzipと比較してパッケージサイズが約30%削減されます。ただし、システムのパッケージマネージャーもその形式をサポートしている必要があります。システムのパッケージマネージャーがXZパッケージをサポートしていない場合は、COMPRESS_XZ環境変数をfalseに設定します:

    export COMPRESS_XZ=false
  8. ライブラリおよびその他の依存関係をインストールします:

    cd /omnibus-gitlab
    bundle install
    bundle binstubs --all

アップストリームアセットのフェッチ

GitLabおよびGitLab-FOSSプロジェクトのパイプラインは、事前コンパイルされたアセットを含むDockerイメージを作成し、そのイメージをコンテナレジストリに公開します。パッケージをビルドする際に、時間を節約するために、アセットを再度コンパイルする代わりに、これらのイメージを再利用できます:

  1. ビルドしているGitLabまたはGitLab-FOSSのrefに対応するアセットDockerイメージをフェッチします。たとえば、最新のmaster refsに対応するアセットイメージをプルするには、次を実行します:

    docker pull registry.gitlab.com/gitlab-org/gitlab/gitlab-assets-ee:master
  2. そのイメージを使用してコンテナを作成します:

    docker create --name gitlab_asset_cache registry.gitlab.com/gitlab-org/gitlab/gitlab-assets-ee:master
  3. コンテナからホストにアセットディレクトリをコピーします:

    docker cp gitlab_asset_cache:/assets ~/gitlab-assets
  4. ビルド環境コンテナの起動中に、その中にアセットディレクトリをマウントします:

    docker run -v ~/omnibus-gitlab:/omnibus-gitlab -v ~/gitlab-assets:/gitlab-assets -it registry.gitlab.com/gitlab-org/gitlab-omnibus-builder/debian_10:${BUILDER_IMAGE_REVISION} bash
  5. COMPILE_ASSETSをtrueに設定する代わりに、アセットが見つかるパスを設定します:

    export ASSET_PATH=/gitlab-assets

パッケージをビルドする

ビルド環境を準備し、必要な変更を加えたら、提供されているRakeタスクを使用してパッケージをビルドできます:

  1. ビルドを機能させるには、Gitワーキングディレクトリがクリーンである必要があります。したがって、変更を新しいブランチにコミットします。

  2. Rakeタスクを実行して、パッケージをビルドします:

    bundle exec rake build:project

パッケージがビルドされ、~/omnibus-gitlab/pkgディレクトリで使用できるようになります。

EEパッケージをビルドする

デフォルトでは、omnibus-gitlabはCEパッケージをビルドします。EEパッケージをビルドする場合は、Rakeタスクを実行する前に、ee環境変数を設定します:

export ee=true

ビルド中に作成されたファイルをクリーンアップする

omnibuscleanコマンドラインを使用して、ビルドプロセス中に生成されたすべての一時ファイルをクリーンアップできます:

bin/omnibus clean gitlab

--purgeパージオプションを追加すると、プロジェクトのインストールディレクトリ(/opt/gitlab)およびパッケージキャッシュディレクトリ(/var/cache/omnibus/pkg)を含め、ビルド中に生成されたすべてのファイルが削除されます:

bin/omnibus clean --purge gitlab

Omnibusのヘルプを表示

Omnibusコマンドラインインターフェースのヘルプを表示するには、helpコマンドラインを実行します:

bin/omnibus help