omnibus-gitlab パッケージをローカルでビルドする
ビルド環境を準備する
omnibus-gitlabパッケージをビルドするために必要なビルドツールを含むDockerイメージは、GitLab Omnibus BuilderプロジェクトのContainer Registryにあります。
- Docker Engineは必須ですが、Docker Desktopは必須ではありません。
- Mac用Docker Desktopは商用利用の場合、Dockerサブスクリプションサービス契約に従って有償のサブスクリプションが必要です。代替案を検討してください。
パッケージをビルドするOS用のDockerイメージをプルします。
omnibus-gitlabで正式に使用されているイメージの現在のバージョンは、CI設定BUILDER_IMAGE_REVISION環境変数で参照されています。docker pull registry.gitlab.com/gitlab-org/gitlab-omnibus-builder/debian_10:${BUILDER_IMAGE_REVISION}omnibus-gitlabソースをクローンし、クローンされたディレクトリに変更します:git clone https://gitlab.com/gitlab-org/omnibus-gitlab.git ~/omnibus-gitlab cd ~/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デフォルトでは、
omnibus-gitlabは、さまざまなGitLabコンポーネントのソースをフェッチするために、パブリックGitLabリポジトリを選択します。環境変数ALTERNATIVE_SOURCESをfalseに設定して、dev.gitlab.orgからビルドします。export ALTERNATIVE_SOURCES=falseコンポーネントのソース情報は、
.custom_sources.ymlファイルにあります。デフォルトでは、
omnibus-gitlabコードベースは、CI環境で使用されるように最適化されています。このような最適化の1つは、GitLab CIパイプラインによってビルドされた、事前コンパイル済みのRailsアセットを再利用することです。これをビルドで活用する方法については、アップストリームアセットのフェッチセクションを確認してください。または、COMPILE_ASSETS環境変数を設定して、パッケージビルド中にアセットをコンパイルすることもできます。export COMPILE_ASSETS=trueデフォルトでは、XZ圧縮を使用して最終的なDEBパッケージが生成されます。これにより、ビルド時間がほとんどまたはまったく増加せず、インストール(解凍)時間がわずかに増加するだけで、Gzipと比較してパッケージサイズが約30%削減されます。ただし、システムのパッケージマネージャーもその形式をサポートしている必要があります。システムのパッケージマネージャーがXZパッケージをサポートしていない場合は、
COMPRESS_XZ環境変数をfalseに設定します:export COMPRESS_XZ=falseライブラリおよびその他の依存関係をインストールします:
cd /omnibus-gitlab bundle install bundle binstubs --all
アップストリームアセットのフェッチ
GitLabおよびGitLab-FOSSプロジェクトのパイプラインは、事前コンパイルされたアセットを含むDockerイメージを作成し、そのイメージをコンテナレジストリに公開します。パッケージをビルドする際に、時間を節約するために、アセットを再度コンパイルする代わりに、これらのイメージを再利用できます:
ビルドしているGitLabまたはGitLab-FOSSのrefに対応するアセットDockerイメージをフェッチします。たとえば、最新の
masterrefsに対応するアセットイメージをプルするには、次を実行します:docker pull registry.gitlab.com/gitlab-org/gitlab/gitlab-assets-ee:masterそのイメージを使用してコンテナを作成します:
docker create --name gitlab_asset_cache registry.gitlab.com/gitlab-org/gitlab/gitlab-assets-ee:masterコンテナからホストにアセットディレクトリをコピーします:
docker cp gitlab_asset_cache:/assets ~/gitlab-assetsビルド環境コンテナの起動中に、その中にアセットディレクトリをマウントします:
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} bashCOMPILE_ASSETSをtrueに設定する代わりに、アセットが見つかるパスを設定します:export ASSET_PATH=/gitlab-assets
パッケージをビルドする
ビルド環境を準備し、必要な変更を加えたら、提供されているRakeタスクを使用してパッケージをビルドできます:
ビルドを機能させるには、Gitワーキングディレクトリがクリーンである必要があります。したがって、変更を新しいブランチにコミットします。
Rakeタスクを実行して、パッケージをビルドします:
bundle exec rake build:project
パッケージがビルドされ、~/omnibus-gitlab/pkgディレクトリで使用できるようになります。
EEパッケージをビルドする
デフォルトでは、omnibus-gitlabはCEパッケージをビルドします。EEパッケージをビルドする場合は、Rakeタスクを実行する前に、ee環境変数を設定します:
export ee=trueビルド中に作成されたファイルをクリーンアップする
omnibusのcleanコマンドラインを使用して、ビルドプロセス中に生成されたすべての一時ファイルをクリーンアップできます:
bin/omnibus clean gitlab--purgeパージオプションを追加すると、プロジェクトのインストールディレクトリ(/opt/gitlab)およびパッケージキャッシュディレクトリ(/var/cache/omnibus/pkg)を含め、ビルド中に生成されたすべてのファイルが削除されます:
bin/omnibus clean --purge gitlabOmnibusのヘルプを表示
Omnibusコマンドラインインターフェースのヘルプを表示するには、helpコマンドラインを実行します:
bin/omnibus help