GitLab パッケージレジストリ管理
様々な一般的なパッケージマネージャの非公開リポジトリとしてGitLabを使用するには、パッケージレジストリを使用します。パッケージをビルドして公開し、ダウンストリームプロジェクトの依存関係として利用することができます。
サポートされるフォーマット
パッケージレジストリでは以下の形式をサポートしています:
パッケージタイプ | GitLabバージョン |
---|---|
Composer | 13.2+ |
Conan | 12.6+ |
Go | 13.1+ |
Maven | 11.3+ |
npm | 11.7+ |
NuGet | 12.8+ |
PyPI | 12.10+ |
汎用パッケージ | 13.5+ |
Helmチャート | 14.1+ |
貢献者の募集
以下の表は、サポートされていないがコミュニティへの貢献を受け付けているフォーマットの一覧です。GitLab に貢献することを検討してください。この開発者向けドキュメントでは、その手順を説明しています。
フォーマット | ステータス |
---|---|
Chef | #36889 |
ココアポッズ | #36890 |
コンダ | #36891 |
CRAN | #36892 |
Debian | 草案マージリクエスト |
Opkg | #36894 |
P2 | #36895 |
人形 | #36897 |
回転数 | #5932 |
RubyGems | #803 |
SBT | #36898 |
Terraform | 草案マージリクエスト |
浮浪者 | #36899 |
レート制限
ダウンストリームプロジェクトで依存パッケージとしてパッケージをダウンロードする場合、Packages API を通して多くのリクエストが行われます。そのため、ユーザーやIPのレート制限に達する可能性があります。このイシューに対処するために、Packages APIに対して特定のレート制限を定義することができます。詳しくはPackage Registry Rate Limits を参照してください。
パッケージレジストリの有効化または無効化
パッケージレジストリはデフォルトで有効になっています。無効にするには
-
/etc/gitlab/gitlab.rb
を編集します:# Change to true to enable packages - enabled by default if not defined gitlab_rails['packages_enabled'] = false
-
ファイルを保存して GitLab を再設定してください:
sudo gitlab-ctl reconfigure
-
Helm の値をエクスポートします:
helm get values gitlab > gitlab_values.yaml
-
gitlab_values.yaml
を編集します:global: appConfig: packages: enabled: false
-
ファイルを保存して、新しい値を適用します:
helm upgrade -f gitlab_values.yaml gitlab gitlab/gitlab
-
docker-compose.yml
を編集します:version: "3.6" services: gitlab: environment: GITLAB_OMNIBUS_CONFIG: | gitlab_rails['packages_enabled'] = false
-
ファイルを保存して GitLab を再起動します:
docker compose up -d
-
/home/git/gitlab/config/gitlab.yml
を編集します:production: &base packages: enabled: false
-
ファイルを保存して GitLab を再起動します:
# For systems running systemd sudo systemctl restart gitlab.target # For systems running SysV init sudo service gitlab restart
ストレージのパスを変更
デフォルトでは、パッケージはローカルに保存されますが、デフォルトのローカルの場所を変更したり、オブジェクトストレージを使用することもできます。
ローカルストレージのパスの変更
デフォルトでは、パッケージはGitLabインストールからの相対パスでローカルに保存されます:
- Linux パッケージ (Omnibus):
/var/opt/gitlab/gitlab-rails/shared/packages/
- セルフコンパイル (ソース):
/home/git/gitlab/shared/packages/
ローカルストレージのパスを変更するには
-
/etc/gitlab/gitlab.rb
を編集し、以下の行を追加します:gitlab_rails['packages_storage_path'] = "/mnt/packages"
-
ファイルを保存して GitLab を再設定してください:
sudo gitlab-ctl reconfigure
-
/home/git/gitlab/config/gitlab.yml
を編集します:production: &base packages: enabled: true storage_path: /mnt/packages
-
ファイルを保存して GitLab を再起動します:
# For systems running systemd sudo systemctl restart gitlab.target # For systems running SysV init sudo service gitlab restart
既に古いストレージパスにパッケージが保存されている場合は、既存のパッケージにアクセスできるようにするために、古いストレージから新しいストレージに移動してください:
mv /var/opt/gitlab/gitlab-rails/shared/packages/* /mnt/packages/
DockerとKubernetesはローカルストレージを使用しません。
- Helmチャート(Kubernetes)の場合:代わりにオブジェクトストレージを使用してください。
- Dockerの場合:
/var/opt/gitlab/
ディレクトリはすでにホスト上のディレクトリにマウントされています。コンテナ内でローカルストレージのパスを変更する必要はありません。
オブジェクトストレージの使用
ローカルストレージに依存する代わりに、オブジェクトストレージを使ってパッケージを保存することができます。
詳細については、統合オブジェクトストレージの設定を使用する方法を参照してください。
ローカルパッケージのオブジェクトストレージへのマイグレーション
オブジェクトストレージの設定後、以下のタスクを使用して既存のパッケージをローカルストレージからリモートストレージにマイグレーションします。処理はバックグラウンドワーカーで行われ、ダウンタイムは必要ありません。
-
パッケージをマイグレーションします。
Linux package (Omnibus)sudo gitlab-rake "gitlab:packages:migrate"
Self-compiled (source)RAILS_ENV=production sudo -u git -H bundle exec rake gitlab:packages:migrate
-
進捗を追跡し、PostgreSQLコンソールを使用してすべてのパッケージが正常にマイグレーションされたことを確認します。
Linux package (Omnibus) 14.1 and earliersudo gitlab-rails dbconsole
Linux package (Omnibus) 14.2 and latersudo gitlab-rails dbconsole --database main
Self-compiled (source)RAILS_ENV=production sudo -u git -H psql -d gitlabhq_production
-
以下のSQLクエリを使用して、すべてのパッケージがオブジェクトストレージにマイグレーションされたことを確認してください。
objectstg
の数はtotal
と同じでなければなりません:gitlabhq_production=# SELECT count(*) AS total, sum(case when file_store = '1' then 1 else 0 end) AS filesystem, sum(case when file_store = '2' then 1 else 0 end) AS objectstg FROM packages_package_files; total | filesystem | objectstg ------+------------+----------- 34 | 0 | 34
-
最後に、
packages
ディレクトリにディスク上のファイルがないことを確認します:Linux package (Omnibus)sudo find /var/opt/gitlab/gitlab-rails/shared/packages -type f | grep -v tmp | wc -l
Self-compiled (source)sudo -u git find /home/git/gitlab/shared/packages -type f | grep -v tmp | wc -l