パッケージレジストリ

13.3でGitLab PremiumからGitLab Freeへ移行

GitLabパッケージレジストリでは、GitLabを非公開または公開レジストリとして使用し、様々なパッケージマネージャをサポートすることができます。パッケージを公開・共有し、ダウンストリームプロジェクトで依存関係として利用することができます。

パッケージワークフロー

GitLabパッケージレジストリを使って独自のカスタムパッケージワークフローを構築する方法をご紹介します:

パッケージを見る

プロジェクトやグループのパッケージを見ることができます。

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

このページでは、パッケージの検索、並べ替え、フィルタリングができます。ブラウザから URL をコピー&ペーストすることで、検索結果を共有できます。

パッケージマネージャの設定やパッケージのインストールに役立つコードスニペットも見つかります。

グループ内のパッケージを表示するとき

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

パッケージの作成とアップロード方法については、パッケージの種類に応じた GitLab のドキュメントをご覧ください。

レジストリで認証

caution
GitLab 16.0 では、外部認証がデフォルトで有効になります。外部認証は、個人アクセストークンやデプロイトークンがコンテナやパッケージのレジストリにアクセスするのを防ぎ、これらのトークンを使ってレジストリにアクセスするすべてのユーザーに影響します。コンテナやパッケージのレジストリで個人アクセストークンやデプロイトークンを使用したい場合は、外部認証を無効にすることができます。

認証は使用するパッケージマネージャに依存します。詳細については、使用するパッケージフォーマットのドキュメントを参照してください。

ほとんどのパッケージ形式では、以下のクレデンシャルタイプが有効です:

  • 個人アクセストークン: ユーザ権限で認証します。パッケージレジストリを個人的かつローカルに使用するのに適しています。
  • プロジェクトデプロイトークン: プロジェクト内のすべてのパッケージへのアクセスを許可します。多くのユーザーに対してプロジェクトへのアクセスを許可したり取り消したりするのに適しています。
  • グループデプロイトークン: グループとそのサブグループ内のすべてのパッケージへのアクセスを許可します。多数のユーザーに多数のパッケージへのアクセスを許可したり取り消したりするのに適しています。
  • ジョブトークン: パイプラインを実行しているユーザーに対して、ジョブを実行しているプロジェクト内のパッケージへのアクセスを許可します。他の外部プロジェクトへのアクセスも設定できます。
  • 組織で二要素認証 (2FA) を使用している場合は、スコープをapi に設定した個人アクセストークンを使用する必要があります。
  • CI/CD パイプライン経由でパッケージを公開する場合は、CI ジョブ トークンを使用する必要があります。
note
設定]→[一般]→[可視性、プロジェクト機能、権限]でプロジェクトの “パッケージレジストリ “機能を有効にしていない場合、403 Forbiddenレスポンスが返されます。外部認証が有効になっている場合、デプロイトークン経由でパッケージレジストリにアクセスすることはできません。

GitLab CI/CDを使いましょう。

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

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

Maven、NuGet、npm、Conan、Helm、PyPI パッケージ、Composer の依存関係については、CI_JOB_TOKENを使って GitLab で認証できます。

CI/CD テンプレートはこのリポジトリにあります。

GitLab パッケージレジストリと CI/CD の併用については、こちらを参照してください:

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

Package CI/CD activity

どのパイプラインがパッケージをパブリッシュしたか、コミットとトリガーしたユーザーを見ることができます。どのパイプラインがパッケージを公開したか、コミットとトリガーしたユーザーを表示できます。

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

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

Packages Importer はこれらのパッケージタイプをインポートできる CI/CD パイプラインを実行します:

  • Maven
  • npm
  • NuGet
  • PyPI

ストレージ使用量の削減

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

パッケージレジストリの無効化

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

GitLab のセルフマネージドインスタンスを使用している場合は、管理者が GitLab サイドバーからメニュー項目Packages and registries を削除することができます。詳しくは管理ドキュメントをご覧ください。

プロジェクト専用のパッケージレジストリを削除することもできます:

  1. プロジェクトで、Settings > Generalに進みます。
  2. Visibility, project features, permissionsセクションを展開し、Packages機能を無効にします。
  3. 変更を保存を選択します。

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

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

プロジェクトレベルの権限はパッケージのダウンロード、プッシュ、削除などのアクションを決定します。

パッケージレジストリの可視性はリポジトリから独立しており、プロジェクトの設定から制御できます。例えば、公開プロジェクトでリポジトリの可視性をプロジェクトメンバーだけに設定した場合、パッケージレジストリは公開されます。パッケージレジストリを無効にすると、パッケージレジストリのオペレーションがすべて無効になります。

プロジェクトの可視化アクション最低限必要なロール
公開パッケージレジストリを見る n/aインターネット上の誰もがこのアクションを実行できます。
公開パッケージの公開開発者
公開荷物の引き上げ n/aインターネット上の誰もがこのアクションを実行できます。
内部パッケージレジストリを見るゲスト
内部パッケージの公開開発者
内部荷物の引き上げゲスト (1)
非公開パッケージレジストリを見るレポーター
非公開パッケージの公開開発者
非公開荷物の引き上げレポーター (1)

誰でもパッケージレジストリからプルできるようにします。

GitLab 15.7 で導入されました

プロジェクトの可視性に関係なく、誰でもパッケージレジストリからプルできるようになりました:

  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トグルをオンにしたプロジェクトでも、匿名ダウンロードは無効になります。

誰でもパッケージレジストリからプルできるようにした場合、いくつかの既知のイシューが存在します:

  • プロジェクトレベルのエンドポイントはサポートされています。グループレベルエンドポイントとインスタンスレベルエンドポイントはサポートされていません。グループレベルエンドポイントのサポートは383537号で提案されています。
  • Composer にはグループ・エンドポイントしかないため、Composer では動作しません。
  • Conanでは動作しますが、conan search

貢献者の募集

この表は、貢献者を募集している未サポートのパッケージマネージャ形式の一覧です。GitLab に貢献することを検討してください。この開発者向けドキュメントでは、その手順を説明しています。

フォーマットステータス
Chef#36889
ココアポッズ#36890
コンダ#36891
CRAN#36892
Opkg#36894
P2#36895
人形#36897
回転数#5932
SBT#36898
Swift#12233
浮浪者#36899