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に貢献することを検討してください。 この開発ドキュメントはそのプロセスを案内します。
パッケージ機能の有効化
パッケージ機能を有効にするには
オムニバスGitLabのインストール
-
/etc/gitlab/gitlab.rb
を編集し、以下の行を追加します:gitlab_rails['packages_enabled'] = true
-
ファイルを保存し、GitLabを再設定 、変更を有効にします。
ソースからのインストール
-
インストールが完了したら、
config/gitlab.yml
のpackages
セクションを設定する必要があります。 有効にするには、true
に設定します:packages: enabled: true
-
GitLabを再起動 変更を有効にするため。
ストレージパスの変更
デフォルトでは、パッケージはローカルに保存されますが、デフォルトのローカルの場所を変更したり、オブジェクトストレージを使用することもできます。
ローカル・ストレージ・パスの変更
OmnibusのGitLabインストール用のパッケージは/var/opt/gitlab/gitlab-rails/shared/packages/
、ソースインストール用のパッケージはshared/packages/
(Gitホームディレクトリからの相対パス)に保存されます。 ローカルストレージのパスを変更するには
オムニバスGitLabのインストール
-
/etc/gitlab/gitlab.rb
を編集し、以下の行を追加します:gitlab_rails['packages_storage_path'] = "/mnt/packages"
-
ファイルを保存し、変更を有効にするために GitLab を再設定します。
ソースからのインストール
-
config/gitlab.yml
のpackages
セクションを編集してください:packages: enabled: true storage_path: shared/packages
-
ファイルを保存し、GitLabを再起動して変更を有効にします。
オブジェクトストレージの使用
ローカル・ストレージに依存する代わりに、オブジェクト・ストレージを使用してパッケージを保存することができます。
GitLabでのオブジェクトストレージの使用についてはこちらをご覧ください。
オムニバスGitLabのインストール
-
/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'. }
-
ファイルを保存し、変更を有効にするために GitLab を再設定します。
ソースからのインストール
-
config/gitlab.yml
のpackages
セクションを編集します(必要な場合はコメントを外します):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'.
-
ファイルを保存し、GitLabを再起動して変更を有効にします。
ローカルパッケージのオブジェクトストレージへの移行
オブジェクトストレージを設定した後、以下のタスクを使用して、既存のパッケージをローカルストレージからリモートストレージに移行することができます。 処理はバックグラウンドワーカーで行われるため、ダウンタイムは必要ありません。
Omnibus GitLabの場合:
sudo gitlab-rake "gitlab:packages:migrate"
ソースからのインストールの場合:
RAILS_ENV=production sudo -u git -H bundle exec rake gitlab:packages:migrate