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