omnibus-gitlab
パッケージを内部でビルドします。
ビルド環境の準備
omnibus-gitlab
パッケージのビルドに必要なビルドツールを含む Docker イメージはGitLab Omnibus Builder
プロジェクトのコンテナレジストリにあります。
-
Dockerをインストールします。
コンテナは、ビルドを完了するために4GBのメモリにアクセスする必要があります。コンテナランタイムのドキュメントを参照してください。Docker for MacとDocker for Windowsは、デフォルトのインストールでこの値を2GBに設定することが知られています。
-
パッケージをビルドしたい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
ディレクトリをマウントしながら、コンテナの Shell に入ります: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 コンポーネントのソースを取得します。dev.gitlab.org
からビルドするには、環境変数ALTERNATIVE_SOURCES
をfalse
に設定します。export ALTERNATIVE_SOURCES=false
コンポーネントのソース情報は
.custom_sources.yml
ファイルにあります。 -
デフォルトでは、
omnibus-gitlab
コードベースは CI 環境で使用するように最適化されています。そのような最適化の1つは、GitLab CIパイプラインによってビルドされたコンパイル済みのRails資産を再利用することです。これをビルドに活用する方法については、アップストリームアセットを取得するセクションを参照してください。または、環境変数COMPILE_ASSETS
を設定することで、パッケージビルド中にアセットをコンパイルすることもできます。export COMPILE_ASSETS=true
-
ライブラリとその他の依存関係をインストールします:
cd /omnibus-gitlab bundle install bundle binstubs --all
アップストリーム資産の取得
GitLabとGitLab-FOSSプロジェクトのパイプラインは、コンパイル済みのアセットを含むDockerイメージを作成し、コンテナレジストリにイメージを公開します。パッケージのビルド中に時間を節約するために、アセットを再度コンパイルする代わりにこれらのイメージを再利用することができます:
-
ビルドするGitLabやGitLab-FOSSのrefに対応するアセットのDockerイメージを取得します。例えば、最新の master ref に対応するアセットイメージを取得するには、以下を実行します:
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
-
ビルド環境コンテナを起動し、asset ディレクトリをマウントします:
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
-
COMPILE_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
purge オプションを追加すると、プロジェクトのインストール・ディレクトリ (/opt/gitlab
) とパッケージ・キャッシュ・ディレクトリ (/var/cache/omnibus/pkg
) を含め、ビルド中に生成されたすべてのファイルが削除されます:
bin/omnibus clean --purge gitlab
Omnibusのヘルプを見る
Omnibus コマンドラインインターフェイスのヘルプは、help
コマンドを実行してください:
bin/omnibus help