パッケージレジストリ
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
GitLabパッケージレジストリを使用すると、さまざまなサポートされているパッケージマネージャーのプライベートレジストリまたはパブリックレジストリとしてGitLabを使用できます。パッケージを公開して共有すると、ダウンストリームプロジェクトで依存関係として使用できます。
パッケージのワークフロー
GitLabパッケージレジストリを使用して、独自のカスタムパッケージワークフローをビルドする方法を説明します:
すべてのパッケージを単一のプロジェクトに公開するには、プロジェクトをパッケージレジストリとして使用します。
単一のモノレポプロジェクトから複数の別々のパッケージを公開できます。
パッケージを表示する
プロジェクトまたはグループのパッケージを表示できます:
- プロジェクトまたはグループに移動します。
- デプロイ > パッケージレジストリに移動します。
このページで、パッケージを検索、ソート、フィルタリングできます。ブラウザからURLをコピーして貼り付けると、検索結果を共有できます。
パッケージマネージャーを設定したり、特定のパッケージをインストールしたりするのに役に立つコードスニペットも提供されています。
グループ内のパッケージを表示する場合:
- グループとグループのプロジェクトに公開されているすべてのパッケージが表示されます。
- 表示されるのは、アクセスできるプロジェクトのみです。
- プロジェクトが非公開の場合、またはプロジェクトのメンバーでない場合、プロジェクトのパッケージは表示されません。
パッケージを作成してアップロードする方法については、パッケージのタイプの手順に従ってください。
GitLab CI/CDを使用する
GitLab CI/CDを使用して、パッケージをビルドしたり、パッケージレジストリにインポートしたりできます。
パッケージをビルドするには
CI_JOB_TOKENを使用してGitLabで認証できます。
開始するには、利用可能なCI/CDテンプレートを使用できます。
GitLabパッケージレジストリでのCI/CDの使用の詳細については、以下を参照してください:
CI/CDを使用してパッケージをビルドする場合、パッケージの詳細を表示すると、拡張されたアクティビティー情報が表示されます:
パッケージを公開したパイプライン、これをトリガーしたコミットとユーザーを表示できます。ただし、特定のパッケージについての履歴は、5件の更新に制限されています。
パッケージをインポートするには
別のレジストリにビルドされたパッケージがすでにある場合は、パッケージインポーターを使用してGitLabパッケージレジストリにパッケージをインポートできます。
サポートされているパッケージのリストについては、他のリポジトリからパッケージをインポートするを参照してください。
ストレージ使用量を削減する
パッケージレジストリのストレージ使用率を削減する方法については、パッケージレジストリのストレージ使用率を削減するを参照してください。
パッケージレジストリを無効にする
パッケージレジストリは自動的に有効になります。
GitLab Self-Managedインスタンスの場合、管理者はGitLabサイドバーからパッケージとレジストリメニュー項目を削除できます。詳細については、GitLabパッケージレジストリの管理を参照してください。
プロジェクトのパッケージレジストリを削除することもできます。具体的には以下を実行します:
- プロジェクトで、設定 > 一般に移動します。
- 可視性、プロジェクトの機能、権限セクションを展開して、パッケージ機能を無効にします。
- 変更を保存を選択します。
デプロイ > パッケージレジストリエントリがサイドバーから削除されます。
パッケージレジストリの表示レベル権限
プロジェクト権限を使用すると、パッケージをダウンロード、プッシュ、または削除できるメンバーとユーザーを指定できます。
パッケージレジストリの表示レベルはリポジトリには依存しておらず、プロジェクト設定から制御できます。たとえば、公開プロジェクトの場合、リポジトリの表示レベルをプロジェクトメンバーのみに設定すると、パッケージレジストリは公開されます。パッケージレジストリの切替をオフにすると、すべてのパッケージレジストリ操作がオフになります。
| プロジェクトの表示レベル | アクション | 最低限必要なロール |
|---|---|---|
| 公開 | パッケージレジストリを表示する | 該当なし。インターネット上のすべてのユーザーがこのアクションを実行できる。 |
| 公開 | パッケージを公開する | デベロッパー |
| 公開 | パッケージをプルする | 該当なし。インターネット上のすべてのユーザーがこのアクションを実行できる。 |
| 内部 | パッケージレジストリを表示する | ゲスト |
| 内部 | パッケージを公開する | デベロッパー |
| 内部 | パッケージをプルする | ゲスト(1) |
| プライベート | パッケージレジストリを表示する | レポーター |
| プライベート | パッケージを公開する | デベロッパー |
| プライベート | パッケージをプルする | レポーター(1) |
すべてのユーザーにパッケージレジストリからのプルを許可する
プロジェクトの表示レベルを問わず、パッケージレジストリからのプルをすべてのユーザーに許可するには:
- 左側のサイドバーで、検索または移動先を選択して、プライベートまたは内部プロジェクトを見つけます。
- 設定 > 一般を選択します。
- 可視性、プロジェクトの機能、権限を展開します。
- Allow anyone to pull from package registry(パッケージレジストリからだれでもプルできるようにする)切替をオンにします。
- 変更を保存をクリックします。
インターネット上のすべてのユーザーが、このプロジェクトのパッケージレジストリにアクセスできるようになります。
すべてのユーザーがプルできるようにする許可を無効にする
前提要件:
- 管理者である必要があります。
Allow anyone to pull from package registry(パッケージレジストリからだれでもプルできるようにする)切替をグローバルに非表示にするには:
- アプリケーション設定を更新して、
package_registry_allow_anyone_to_pull_optionをfalseにします。
Allow anyone to pull from Package Registry(パッケージレジストリからだれでもプルできるようにする)切替をオンにしたプロジェクトでも、匿名ダウンロードはオフになります。
すべてのユーザーにパッケージレジストリからのプルを許可する場合、既知の問題が以下のとおりいくつかあります:
- プロジェクトのエンドポイントはサポートされています。
- グループのNuGetレジストリエンドポイントはサポートされています。ただし、NuGetクライアントが認証情報を送信する方法のため、匿名ダウンロードは許可されません。この設定がオンになっていても、パッケージレジストリからプルできるのはGitLabユーザーのみです。
- グループのMavenレジストリエンドポイントはサポートされています。
- ネームスペースのTerraformモジュールレジストリエンドポイントはサポートされています。
- 他のグループやインスタンスのエンドポイントは完全にはサポートされていません。グループエンドポイントのサポートは、エピック14234で提案されています。
- Composerにはグループエンドポイントしかないため、Composerでは機能しません。
- Conanでは機能します。ただし、
conan searchを使用する場合は機能しません。
監査イベント
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
パッケージが公開または削除されると、監査イベントが作成されます。ネームスペースのオーナーは、GraphQL APIを介してaudit_events_enabled設定を有効にできます。
以下のとおり監査イベントを表示できます:
- パッケージのプロジェクトがグループ内にある場合は、グループ監査イベントページに表示されます。
- パッケージのプロジェクトがユーザーネームスペースにある場合は、プロジェクト監査イベントページに表示されます。
コントリビュートを受け入れる
次の表に、サポートされていないパッケージ形式を示します。これらの形式のサポートを追加するために、GitLabにコントリビュートすることを検討してください。
| 形式 | 状態 |
|---|---|
| Chef | #36889 |
| CocoaPods | #36890 |
| Conda | #36891 |
| CRAN | #36892 |
| Opkg | #36894 |
| P2 | #36895 |
| Puppet | #36897 |
| RPM | #5932 |
| SBT | #36898 |
| Swift | #12233 |
| Vagrant | #36899 |
