正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

パッケージレジストリ

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

GitLabパッケージレジストリを使用すると、さまざまなサポートされているパッケージマネージャーのプライベートレジストリまたはパブリックレジストリとしてGitLabを使用できます。パッケージを公開して共有すると、ダウンストリームプロジェクトで依存関係として使用できます。

パッケージのワークフロー

GitLabパッケージレジストリを使用して、独自のカスタムパッケージワークフローをビルドする方法を説明します:

パッケージを表示する

プロジェクトまたはグループのパッケージを表示できます:

  1. プロジェクトまたはグループに移動します。
  2. デプロイ > パッケージレジストリに移動します。

このページで、パッケージを検索、ソート、フィルタリングできます。ブラウザからURLをコピーして貼り付けると、検索結果を共有できます。

パッケージマネージャーを設定したり、特定のパッケージをインストールしたりするのに役に立つコードスニペットも提供されています。

グループ内のパッケージを表示する場合:

  • グループとグループのプロジェクトに公開されているすべてのパッケージが表示されます。
  • 表示されるのは、アクセスできるプロジェクトのみです。
  • プロジェクトが非公開の場合、またはプロジェクトのメンバーでない場合、プロジェクトのパッケージは表示されません。

パッケージを作成してアップロードする方法については、パッケージのタイプの手順に従ってください。

GitLab CI/CDを使用する

GitLab CI/CDを使用して、パッケージをビルドしたり、パッケージレジストリにインポートしたりできます。

パッケージをビルドするには

CI_JOB_TOKENを使用してGitLabで認証できます。

開始するには、利用可能なCI/CDテンプレートを使用できます。

GitLabパッケージレジストリでのCI/CDの使用の詳細については、以下を参照してください:

CI/CDを使用してパッケージをビルドする場合、パッケージの詳細を表示すると、拡張されたアクティビティー情報が表示されます:

パッケージCI/CDアクティビティー

パッケージを公開したパイプライン、これをトリガーしたコミットとユーザーを表示できます。ただし、特定のパッケージについての履歴は、5件の更新に制限されています。

パッケージをインポートするには

別のレジストリにビルドされたパッケージがすでにある場合は、パッケージインポーターを使用してGitLabパッケージレジストリにパッケージをインポートできます。

サポートされているパッケージのリストについては、他のリポジトリからパッケージをインポートするを参照してください。

ストレージ使用量を削減する

パッケージレジストリのストレージ使用率を削減する方法については、パッケージレジストリのストレージ使用率を削減するを参照してください。

パッケージレジストリを無効にする

パッケージレジストリは自動的に有効になります。

GitLab Self-Managedインスタンスの場合、管理者はGitLabサイドバーからパッケージとレジストリメニュー項目を削除できます。詳細については、GitLabパッケージレジストリの管理を参照してください。

プロジェクトのパッケージレジストリを削除することもできます。具体的には以下を実行します:

  1. プロジェクトで、設定 > 一般に移動します。
  2. 可視性、プロジェクトの機能、権限セクションを展開して、パッケージ機能を無効にします。
  3. 変更を保存を選択します。

デプロイ > パッケージレジストリエントリがサイドバーから削除されます。

パッケージレジストリの表示レベル権限

プロジェクト権限を使用すると、パッケージをダウンロード、プッシュ、または削除できるメンバーとユーザーを指定できます。

パッケージレジストリの表示レベルはリポジトリには依存しておらず、プロジェクト設定から制御できます。たとえば、公開プロジェクトの場合、リポジトリの表示レベルをプロジェクトメンバーのみに設定すると、パッケージレジストリは公開されます。パッケージレジストリの切替をオフにすると、すべてのパッケージレジストリ操作がオフになります。

プロジェクトの表示レベルアクション最低限必要なロール
公開パッケージレジストリを表示する該当なし。インターネット上のすべてのユーザーがこのアクションを実行できる。
公開パッケージを公開するデベロッパー
公開パッケージをプルする該当なし。インターネット上のすべてのユーザーがこのアクションを実行できる。
内部パッケージレジストリを表示するゲスト
内部パッケージを公開するデベロッパー
内部パッケージをプルするゲスト(1)
プライベートパッケージレジストリを表示するレポーター
プライベートパッケージを公開するデベロッパー
プライベートパッケージをプルするレポーター(1)

すべてのユーザーにパッケージレジストリからのプルを許可する

プロジェクトの表示レベルを問わず、パッケージレジストリからのプルをすべてのユーザーに許可するには:

  1. 左側のサイドバーで、検索または移動先を選択して、プライベートまたは内部プロジェクトを見つけます。
  2. 設定 > 一般を選択します。
  3. 可視性、プロジェクトの機能、権限を展開します。
  4. Allow anyone to pull from package registry(パッケージレジストリからだれでもプルできるようにする)切替をオンにします。
  5. 変更を保存をクリックします。

インターネット上のすべてのユーザーが、このプロジェクトのパッケージレジストリにアクセスできるようになります。

すべてのユーザーがプルできるようにする許可を無効にする

前提要件:

  • 管理者である必要があります。

Allow anyone to pull from package registry(パッケージレジストリからだれでもプルできるようにする)切替をグローバルに非表示にするには:

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