パッケージレジストリ
13.3でGitLab PremiumからGitLab Freeへ移行。
GitLabパッケージレジストリでは、GitLabを非公開または公開レジストリとして使用し、様々なパッケージマネージャをサポートすることができます。パッケージを公開・共有し、ダウンストリームプロジェクトで依存関係として利用することができます。
パッケージワークフロー
GitLabパッケージレジストリを使って独自のカスタムパッケージワークフローを構築する方法をご紹介します:
-
プロジェクトをパッケージレジストリとして使い、すべてのパッケージを一つのプロジェクトに公開します。
-
一つのモノレポプロジェクトから複数の異なるパッケージを公開します。
パッケージを見る
プロジェクトやグループのパッケージを見ることができます。
- プロジェクトまたはグループに移動します。
- デプロイ > パッケージレジストリに移動します。
このページでは、パッケージの検索、並べ替え、フィルタリングができます。ブラウザから URL をコピー&ペーストすることで、検索結果を共有できます。
パッケージマネージャの設定やパッケージのインストールに役立つコードスニペットも見つかります。
グループ内のパッケージを表示するとき
- グループに公開されているすべてのプロジェクトとそのプロジェクトが表示されます。
- アクセスできるプロジェクトだけが表示されます。
- プロジェクトが非公開の場合や、プロジェクトのメンバーでない場合は表示されません。
パッケージの作成とアップロード方法については、パッケージの種類に応じた GitLab のドキュメントをご覧ください。
レジストリで認証
認証は使用するパッケージマネージャに依存します。詳細については、使用するパッケージフォーマットのドキュメントを参照してください。
ほとんどのパッケージ形式では、以下のクレデンシャルタイプが有効です:
- 個人アクセストークン: ユーザ権限で認証します。パッケージレジストリを個人的かつローカルに使用するのに適しています。
- プロジェクトデプロイトークン: プロジェクト内のすべてのパッケージへのアクセスを許可します。多くのユーザーに対してプロジェクトへのアクセスを許可したり取り消したりするのに適しています。
- グループデプロイトークン: グループとそのサブグループ内のすべてのパッケージへのアクセスを許可します。多数のユーザーに多数のパッケージへのアクセスを許可したり取り消したりするのに適しています。
- ジョブトークン: パイプラインを実行しているユーザーに対して、ジョブを実行しているプロジェクト内のパッケージへのアクセスを許可します。他の外部プロジェクトへのアクセスも設定できます。
- 組織で二要素認証 (2FA) を使用している場合は、スコープを
api
に設定した個人アクセストークンを使用する必要があります。 - CI/CD パイプライン経由でパッケージを公開する場合は、CI ジョブ トークンを使用する必要があります。
GitLab CI/CDを使いましょう。
GitLab CI/CDを使ってパッケージをビルドしたり、パッケージレジストリにインポートすることができます。
パッケージをビルドするには
Maven、NuGet、npm、Conan、Helm、PyPI パッケージ、Composer の依存関係については、CI_JOB_TOKEN
を使って GitLab で認証できます。
CI/CD テンプレートはこのリポジトリにあります。
GitLab パッケージレジストリと CI/CD の併用については、こちらを参照してください:
CI/CD を使用してパッケージをビルドする場合、パッケージの詳細を表示すると拡張アクティビティ情報が表示されます:
どのパイプラインがパッケージをパブリッシュしたか、コミットとトリガーしたユーザーを見ることができます。どのパイプラインがパッケージを公開したか、コミットとトリガーしたユーザーを表示できます。
パッケージをインポートするには
すでに別のレジストリでビルドしたパッケージがある場合は、Packages Importerを使ってGitLabのパッケージレジストリにインポートすることができます。
Packages Importer はこれらのパッケージタイプをインポートできる CI/CD パイプラインを実行します:
- Maven
- npm
- NuGet
- PyPI
ストレージ使用量の削減
パッケージレジストリのストレージ使用量の削減については、パッケージレジストリのストレージ使用量の削減を参照してください。
パッケージレジストリの無効化
パッケージレジストリは自動的に有効になります。
GitLab のセルフマネージドインスタンスを使用している場合は、管理者が GitLab サイドバーからメニュー項目Packages and registries を削除することができます。詳しくは管理ドキュメントをご覧ください。
プロジェクト専用のパッケージレジストリを削除することもできます:
- プロジェクトで、Settings > Generalに進みます。
- Visibility, project features, permissionsセクションを展開し、Packages機能を無効にします。
- 変更を保存を選択します。
サイドバーから[デプロイ]>[パッケージレジストリ]エントリが削除されます。
パッケージレジストリの表示権限
プロジェクトレベルの権限はパッケージのダウンロード、プッシュ、削除などのアクションを決定します。
パッケージレジストリの可視性はリポジトリから独立しており、プロジェクトの設定から制御できます。例えば、公開プロジェクトでリポジトリの可視性をプロジェクトメンバーだけに設定した場合、パッケージレジストリは公開されます。パッケージレジストリを無効にすると、パッケージレジストリのオペレーションがすべて無効になります。
プロジェクトの可視化 | アクション | 最低限必要なロール |
---|---|---|
公開 | パッケージレジストリを見る |
n/a インターネット上の誰もがこのアクションを実行できます。 |
公開 | パッケージの公開 | 開発者 |
公開 | 荷物の引き上げ |
n/a インターネット上の誰もがこのアクションを実行できます。 |
内部 | パッケージレジストリを見る | ゲスト |
内部 | パッケージの公開 | 開発者 |
内部 | 荷物の引き上げ | ゲスト (1) |
非公開 | パッケージレジストリを見る | レポーター |
非公開 | パッケージの公開 | 開発者 |
非公開 | 荷物の引き上げ | レポーター (1) |
誰でもパッケージレジストリからプルできるようにします。
GitLab 15.7 で導入されました。
プロジェクトの可視性に関係なく、誰でもパッケージレジストリからプルできるようになりました:
- 左のサイドバーで、検索を選択するか、非公開または内部プロジェクトを検索してください。
- 左サイドバーで、設定 > 一般を選択します。
- 可視性]、[プロジェクト機能]、[権限]を展開します。
- 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トグルをオンにしたプロジェクトでも、匿名ダウンロードは無効になります。
誰でもパッケージレジストリからプルできるようにした場合、いくつかの既知のイシューが存在します:
- プロジェクトレベルのエンドポイントはサポートされています。グループレベルエンドポイントとインスタンスレベルエンドポイントはサポートされていません。グループレベルエンドポイントのサポートは383537号で提案されています。
- Composer にはグループ・エンドポイントしかないため、Composer では動作しません。
- Conanでは動作しますが、
conan search
。
貢献者の募集
この表は、貢献者を募集している未サポートのパッケージマネージャ形式の一覧です。GitLab に貢献することを検討してください。この開発者向けドキュメントでは、その手順を説明しています。
フォーマット | ステータス |
---|---|
Chef | #36889 |
ココアポッズ | #36890 |
コンダ | #36891 |
CRAN | #36892 |
Opkg | #36894 |
P2 | #36895 |
人形 | #36897 |
回転数 | #5932 |
SBT | #36898 |
Swift | #12233 |
浮浪者 | #36899 |