omnibus-gitlab パッケージをローカルでビルドする
ビルド環境を準備する
omnibus-gitlabパッケージをビルドするための必要なDockerイメージとツールは、GitLab Omnibus Builderプロジェクトのコンテナレジストリにあります。
- Docker Engineは必須要件であり、Docker Desktopは必須ではありません。
- Docker Desktop for Macは、Docker Subscription Service Agreementに従い、商用利用には有料サブスクリプションが必要です。代替案を検討してください。
パッケージをビルドする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}omnibus-gitlab
omnibus-gitlabソースをクローンし、クローンしたディレクトリに移動します:git clone https://gitlab.com/gitlab-org/omnibus-gitlab.git ~/omnibus-gitlab cd ~/omnibus-gitlabコンテナを起動してその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デフォルトでは、omnibus-gitlab
omnibus-gitlabは様々なGitLabコンポーネントのソースをフェッチするために、公開GitLabリポジトリを選択します。dev.gitlab.orgからビルドするために、環境変数ALTERNATIVE_SOURCESをfalseに設定します。export ALTERNATIVE_SOURCES=falseコンポーネントのソース情報は、
.custom_sources.ymlファイルにあります。デフォルトでは、omnibus-gitlab
omnibus-gitlabコードベースはCI環境で使用するように最適化されています。そのような最適化の1つは、GitLab CIパイプラインによってビルドされる事前にコンパイルされたRailsアセットを再利用することです。あなたのビルドでこれを活用する方法を知るには、アップストリームアセットをフェッチセクションを確認してください。あるいは、パッケージのビルド中にアセットをコンパイルするには、COMPILE_ASSETS環境変数を設定できます。export COMPILE_ASSETS=trueデフォルトでは、最終的なDEBパッケージを作成するためにXZ圧縮が使用されます。これは、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の参照に対応するアセットDockerイメージをフェッチします。例えば、最新の
master参照に対応するアセットイメージをプルするには、次を実行します: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 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