omnibus-gitlab パッケージを内部でビルドします。

ビルド環境の準備

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

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

    コンテナは、ビルドを完了するために4GBのメモリにアクセスする必要があります。コンテナランタイムのドキュメントを参照してください。Docker for MacとDocker for Windowsは、デフォルトのインストールでこの値を2GBに設定することが知られています。

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

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

    git clone https://gitlab.com/gitlab-org/omnibus-gitlab.git ~/omnibus-gitlab
    cd ~/omnibus-gitlab
    
  4. コンテナを起動し、コンテナ内の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
    
  5. デフォルトでは、omnibus-gitlab は GitLab の公開リポジトリを選択して、さまざまな GitLab コンポーネントのソースを取得します。dev.gitlab.org からビルドするには、環境変数ALTERNATIVE_SOURCESfalse に設定します。

    export ALTERNATIVE_SOURCES=false
    

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

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

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

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

アップストリーム資産の取得

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

  1. ビルドするGitLabやGitLab-FOSSのrefに対応するアセットのDockerイメージを取得します。例えば、最新の master ref に対応するアセットイメージを取得するには、以下を実行します:

    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. ビルド環境コンテナを起動し、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
    
  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 は CE パッケージをビルドします。EEパッケージをビルドしたい場合は、Rakeタスクを実行する前に環境変数ee

export ee=true

ビルド中に作成されたファイルのクリーンアップ

omnibusclean コマンドを使用すると、ビルド中に生成されたすべての一時ファイルをクリーンアップできます:

bin/omnibus clean gitlab

--purge purge オプションを追加すると、プロジェクトのインストール・ディレクトリ (/opt/gitlab) とパッケージ・キャッシュ・ディレクトリ (/var/cache/omnibus/pkg) を含め、ビルド中に生成されたすべてのファイルが削除されます:

bin/omnibus clean --purge gitlab

Omnibusのヘルプを見る

Omnibus コマンドラインインターフェイスのヘルプは、help コマンドを実行してください:

bin/omnibus help