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

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

ビルド環境を準備する

omnibus-gitlabパッケージをビルドするための必要なDockerイメージとツールは、GitLab Omnibus Builderプロジェクトのコンテナレジストリにあります。

  1. Docker Engineをインストールします。

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

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

    git clone https://gitlab.com/gitlab-org/omnibus-gitlab.git ~/omnibus-gitlab
    cd ~/omnibus-gitlab
  4. コンテナを起動してそのShellに入り、omnibus-gitlab 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 omnibus-gitlabは様々なGitLabコンポーネントのソースをフェッチするために、公開GitLabリポジトリを選択します。dev.gitlab.orgからビルドするために、環境変数ALTERNATIVE_SOURCESfalseに設定します。

    export ALTERNATIVE_SOURCES=false

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

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

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

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

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

アップストリームアセットをフェッチする

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

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

    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 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