GitLab パッケージレジストリ管理

GitLabパッケージを利用することで、GitLabを様々なパッケージマネージャのプライベートリポジトリとして利用できます。ユーザーはパッケージをビルドして公開でき、下流のプロジェクトで依存関係として簡単に利用できます。

Packages機能では、GitLabを以下のリポジトリとして機能させることができます:

リポジトリ 説明 GitLabバージョンで利用可能
PyPiリポジトリ GitLab PyPiリポジトリは、GitLabのすべてのプロジェクトがPyPiパッケージを保存するための独自のスペースを持つことを可能にします。 12.10+
Composer リポジトリ GitLab Composerリポジトリは、GitLabのすべてのプロジェクトがComposerパッケージを保存するための独自のスペースを持つことを可能にします。 13.1+
NuGetリポジトリ GitLab NuGetリポジトリは、GitLabの各プロジェクトがNuGetパッケージを保存する独自のスペースを持つことを可能にします。 12.8+
コナン・リポジトリ Conanリポジトリを利用することで、すべてのプロジェクトがConanパッケージを保存するためのスペースを持つことができます。 12.4+
Mavenリポジトリ Mavenリポジトリは、すべてのプロジェクトがMavenパッケージを保存するためのスペースを持つことができます。 11.3+
npmレジストリ NPMレジストリを使用すると、すべてのプロジェクトが NPM パッケージを保存するためのスペースを持つことができます。 11.7+
プロキシ GitLab用のGoプロキシは、GitLabのすべてのプロジェクトをGoプロキシプロトコルで取得できるようにします。 13.1+

あなたのパッケージ管理システムはまだサポートされていませんか? GitLabに貢献することを検討してください。 この開発ドキュメントはそのプロセスを案内します。

パッケージ機能の有効化

注意:Packages 機能を有効にすると、デフォルトですべての新規プロジェクトでリポジトリが利用できるようになります。 既存のプロジェクトで有効にするには、プロジェクトの設定で明示的に設定する必要があります。

パッケージ機能を有効にするには

オムニバスGitLabのインストール

  1. /etc/gitlab/gitlab.rb を編集し、以下の行を追加します:

    gitlab_rails['packages_enabled'] = true
    
  2. ファイルを保存し、GitLabを再設定 、変更を有効にします。

ソースからのインストール

  1. インストールが完了したら、config/gitlab.ymlpackagesセクションを設定する必要があります。 有効にするには、true に設定します:

    packages:
      enabled: true
    
  2. GitLabを再起動 変更を有効にするため。

ストレージパスの変更

デフォルトでは、パッケージはローカルに保存されますが、デフォルトのローカルの場所を変更したり、オブジェクトストレージを使用することもできます。

ローカル・ストレージ・パスの変更

OmnibusのGitLabインストール用のパッケージは/var/opt/gitlab/gitlab-rails/shared/packages/ 、ソースインストール用のパッケージはshared/packages/ (Gitホームディレクトリからの相対パス)に保存されます。 ローカルストレージのパスを変更するには

オムニバスGitLabのインストール

  1. /etc/gitlab/gitlab.rb を編集し、以下の行を追加します:

    gitlab_rails['packages_storage_path'] = "/mnt/packages"
    
  2. ファイルを保存し、変更を有効にするために GitLab を再設定します。

ソースからのインストール

  1. config/gitlab.ymlpackages セクションを編集してください:

    packages:
      enabled: true
      storage_path: shared/packages
    
  2. ファイルを保存し、GitLabを再起動して変更を有効にします。

オブジェクトストレージの使用

ローカル・ストレージに依存する代わりに、オブジェクト・ストレージを使用してパッケージを保存することができます。

GitLabでのオブジェクトストレージの使用についてはこちらをご覧ください。

オムニバスGitLabのインストール

  1. /etc/gitlab/gitlab.rb を編集し、以下の行を追加してください(必要な場合はコメントを外してください):

    gitlab_rails['packages_enabled'] = true
    gitlab_rails['packages_storage_path'] = "/var/opt/gitlab/gitlab-rails/shared/packages"
    gitlab_rails['packages_object_store_enabled'] = true
    gitlab_rails['packages_object_store_remote_directory'] = "packages" # The bucket name.
    gitlab_rails['packages_object_store_direct_upload'] = false         # Use Object Storage directly for uploads instead of background uploads if enabled (Default: false).
    gitlab_rails['packages_object_store_background_upload'] = true      # Temporary option to limit automatic upload (Default: true).
    gitlab_rails['packages_object_store_proxy_download'] = false        # Passthrough all downloads via GitLab instead of using Redirects to Object Storage.
    gitlab_rails['packages_object_store_connection'] = {
      ##
      ## If the provider is AWS S3, uncomment the following
      ##
      #'provider' => 'AWS',
      #'region' => 'eu-west-1',
      #'aws_access_key_id' => 'AWS_ACCESS_KEY_ID',
      #'aws_secret_access_key' => 'AWS_SECRET_ACCESS_KEY',
      ##
      ## If the provider is other than AWS (an S3-compatible one), uncomment the following
      ##
      #'host' => 's3.amazonaws.com',
      #'aws_signature_version' => 4             # For creation of signed URLs. Set to 2 if provider does not support v4.
      #'endpoint' => 'https://s3.amazonaws.com' # Useful for S3-compliant services such as DigitalOcean Spaces.
      #'path_style' => false                    # If true, use 'host/bucket_name/object' instead of 'bucket_name.host/object'.
    }
    
  2. ファイルを保存し、変更を有効にするために GitLab を再設定します。

ソースからのインストール

  1. config/gitlab.ymlpackages セクションを編集します(必要な場合はコメントを外します):

      packages:
        enabled: true
        ##
        ## The location where build packages are stored (default: shared/packages).
        ##
        #storage_path: shared/packages
        object_store:
          enabled: false
          remote_directory: packages # The bucket name.
          #direct_upload: false      # Use Object Storage directly for uploads instead of background uploads if enabled (Default: false).
          #background_upload: true   # Temporary option to limit automatic upload (Default: true).
          #proxy_download: false     # Passthrough all downloads via GitLab instead of using Redirects to Object Storage.
          connection:
            ##
            ## If the provider is AWS S3, uncomment the following
            ##
            #provider: AWS
            #region: us-east-1
            #aws_access_key_id: AWS_ACCESS_KEY_ID
            #aws_secret_access_key: AWS_SECRET_ACCESS_KEY
            ##
            ## If the provider is other than AWS (an S3-compatible one), uncomment the following
            ##
            #host: 's3.amazonaws.com'             # default: s3.amazonaws.com.
            #aws_signature_version: 4             # For creation of signed URLs. Set to 2 if provider does not support v4.
            #endpoint: 'https://s3.amazonaws.com' # Useful for S3-compliant services such as DigitalOcean Spaces.
            #path_style: false                    # If true, use 'host/bucket_name/object' instead of 'bucket_name.host/object'.
    
  2. ファイルを保存し、GitLabを再起動して変更を有効にします。

ローカルパッケージのオブジェクトストレージへの移行

オブジェクトストレージを設定した後、以下のタスクを使用して、既存のパッケージをローカルストレージからリモートストレージに移行することができます。 処理はバックグラウンドワーカーで行われるため、ダウンタイムは必要ありません。

Omnibus GitLabの場合:

sudo gitlab-rake "gitlab:packages:migrate"

ソースからのインストールの場合:

RAILS_ENV=production sudo -u git -H bundle exec rake gitlab:packages:migrate