Maven仮想レジストリ
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
- ステータス: ベータ
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。この機能はベータで利用できます。この機能を使用する前に、ドキュメントを注意深くレビューしてください。
Maven仮想レジストリは、単一の、よく知られたURLを使用して、GitLab内の複数の外部レジストリからパッケージを管理および配布します。
Maven仮想レジストリを使用して、以下を行います:
- バーチャルレジストリを作成します。
- バーチャルレジストリを、パブリックおよびプライベートアップストリームレジストリに接続します。
- 構成されたアップストリームからパッケージをプルするようにMavenクライアントを構成します。
- 利用可能なアップストリームのキャッシュエントリを管理します。
このアプローチにより、長期にわたってパッケージのパフォーマンスが向上し、Mavenパッケージの管理が容易になります。
バーチャルレジストリとアップストリームレジストリの管理に関する一般的な情報については、Virtual registryを参照してください。
前提要件
Maven仮想レジストリを使用する前に:
- バーチャルレジストリを使用するためのprerequisitesをレビューします。
Maven仮想レジストリを使用する場合は、次の制限事項に注意してください:
- トップレベルグループごとに最大
20個のMaven仮想レジストリを作成できます。 - 指定されたMaven仮想レジストリに設定できるアップストリームは
20個のみです。 - 技術的な理由により、
proxy_download設定は、オブジェクトストレージ設定で構成されている値に関係なく、強制的に有効になります。 - Geoサポートは実装されていません。その開発状況はissue 473033で確認できます。
仮想レジストリを管理する
グループの仮想レジストリを管理します。
APIを使用することもできます。
仮想レジストリを表示します
バーチャルレジストリを表示するには:
- 左側のサイドバーで、検索または移動先を選択して、グループを見つけます。このグループはトップレベルにある必要があります。
- 左側のサイドバーで、デプロイ > バーチャルレジストリを選択します。
Maven仮想レジストリを作成します
Maven仮想レジストリを作成するには:
- 左側のサイドバーで、検索または移動先を選択して、グループを見つけます。このグループはトップレベルにある必要があります。
- 左側のサイドバーで、デプロイ > バーチャルレジストリを選択します。
- レジストリを作成を選択します。
- 名前とオプションの説明を入力します。
- Mavenレジストリを作成を選択します。
バーチャルレジストリを編集する
既存のバーチャルレジストリを編集するには:
- 左側のサイドバーで、検索または移動先を選択して、グループを見つけます。このグループはトップレベルにある必要があります。
- 左側のサイドバーで、デプロイ > バーチャルレジストリを選択します。
- レジストリタイプで、View registries(レジストリを表示)を選択します。
- 編集するレジストリの行で、編集 ( ) を選択します。
- 変更を加えて、変更を保存を選択します。
仮想レジストリを削除する
仮想レジストリを削除するには:
- 左側のサイドバーで、検索または移動先を選択して、グループを見つけます。このグループはトップレベルにある必要があります。
- 左側のサイドバーで、デプロイ > バーチャルレジストリを選択します。
- レジストリタイプで、View registries(レジストリを表示)を選択します。
- Registries(レジストリ)タブの、削除するレジストリの行で、編集 ( ) を選択します。
- レジストリの削除を選択します。
- 確認ダイアログで、削除を選択します。
アップストリームレジストリを管理する
バーチャルレジストリ内のアップストリームレジストリを管理します。
アップストリームレジストリを表示する
アップストリームレジストリを表示するには:
- 左側のサイドバーで、検索または移動先を選択して、グループを見つけます。このグループはトップレベルにある必要があります。
- 左側のサイドバーで、デプロイ > バーチャルレジストリを選択します。
- レジストリタイプで、View registries(レジストリを表示)を選択します。
- アップストリームタブを選択して、利用可能なすべてのアップストリームを表示します。
Mavenアップストリームレジストリを作成します
バーチャルレジストリに接続するためのMavenアップストリームレジストリを作成します。
前提要件:
- バーチャルレジストリが必要です。詳細については、レジストリを作成を参照してください。
Mavenアップストリームレジストリを作成するには:
- 左側のサイドバーで、検索または移動先を選択して、グループを見つけます。このグループはトップレベルにある必要があります。
- 左側のサイドバーで、デプロイ > バーチャルレジストリを選択します。
- レジストリタイプで、View registries(レジストリを表示)を選択します。
- Registries(レジストリ)タブで、レジストリを選択します。
- アップストリームの追加を選択します。バーチャルレジストリに既存のアップストリームがある場合は、ドロップダウンリストから次のいずれかを選択します:
- アップストリームを構成するには、新しいアップストリームを作成します。
- 既存のアップストリームをリンク > Select existing upstream(既存のアップストリームを選択)。
- ドロップダウンリストから、アップストリームを選択します。
- Mavenアップストリームレジストリを構成します:
- 名前を入力します。
- アップストリームのURLを入力します。
- オプション。説明を入力します。
- オプション。ユーザー名とパスワードを入力します。ユーザー名とパスワードの両方を含めるか、どちらも含まないようにする必要があります。設定されていない場合、パブリック(匿名)リクエストはアップストリームへのアクセスに使用されます。
- アーティファクトのキャッシュ期間とメタデータのキャッシュ期間を設定します。
- アーティファクトとメタデータのキャッシュ期間は、デフォルトで24時間です。
0に設定すると、キャッシュエントリチェックが無効になります。
- アーティファクトとメタデータのキャッシュ期間は、デフォルトで24時間です。
- アップストリームを作成を選択します。
アップストリームをMaven Centralに接続する場合:
アップストリームのURLには、次のURLを入力します:
https://repo1.maven.org/maven2アーティファクトのキャッシュ期間とメタデータのキャッシュ期間は、時間を
0に設定します。Maven Centralファイルはイミュータブルです。
キャッシュの有効期間設定の詳細については、Set the cache validity periodを参照してください。
アップストリームレジストリを編集する
アップストリームレジストリを編集するには:
- 左側のサイドバーで、検索または移動先を選択して、グループを見つけます。このグループはトップレベルにある必要があります。
- 左側のサイドバーで、デプロイ > バーチャルレジストリを選択します。
- レジストリタイプで、View registries(レジストリを表示)を選択します。
- アップストリームタブを選択します。
- 編集するアップストリームの行で、編集 ( ) を選択します。
- 変更を加えて、変更を保存を選択します。
アップストリームレジストリの順序を変更する
アップストリームレジストリの順序によって、パッケージに対してクエリが実行される優先順位が決まります。バーチャルレジストリは、リクエストされたパッケージが見つかるまで、アップストリームを上から下に検索します。
アップストリームレジストリの順序を変更するには:
- 左側のサイドバーで、検索または移動先を選択して、グループを見つけます。このグループはトップレベルにある必要があります。
- 左側のサイドバーで、デプロイ > Virtual registries(バーチャルレジストリ)を選択します。
- レジストリタイプで、レジストリを選択します。
- Registries(レジストリ)タブで、レジストリを選択します。
- アップストリームで、アップストリームを並べ替えるには、アップストリームを上に移動またはアップストリームを下に移動を選択します。
アップストリームの順序付けに関するベストプラクティス:
- 内部パッケージを優先するために、プライベートレジストリをパブリックレジストリの前に配置します。
- より高速または信頼性の高いレジストリをリストの上位に配置します。
- パブリックな依存関係のフォールバックとして、パブリックレジストリを最後に配置します。
アップストリームの順序の詳細については、Upstream prioritizationを参照してください。
キャッシュされたパッケージを表示する
アップストリームレジストリからキャッシュされたパッケージを表示するには:
- 左側のサイドバーで、検索または移動先を選択して、グループを見つけます。このグループはトップレベルにある必要があります。
- 左側のサイドバーで、デプロイ > バーチャルレジストリを選択します。
- レジストリタイプで、レジストリを選択します。
- アップストリームタブで、アップストリームを選択します。
- キャッシュされたパッケージのキャッシュメタデータを表示します。
キャッシュエントリを削除する
キャッシュエントリを削除するには:
- 左側のサイドバーで、検索または移動先を選択して、グループを見つけます。このグループはトップレベルにある必要があります。
- 左側のサイドバーで、デプロイ > バーチャルレジストリを選択します。
- レジストリタイプで、レジストリを選択します。
- Registries(レジストリ)タブで、レジストリを選択します。
- アップストリームの横にある全てのキャッシュのクリアを選択します。
- 特定のキャッシュエントリを削除するには、アップストリームの横にあるキャッシュをクリアを選択します。
キャッシュエントリを削除すると、次回バーチャルレジストリがそのファイルのリクエストを受信したときに、リクエストを満たすことができるアップストリームを見つけるために、アップストリームのリストを再度たどります。
キャッシュエントリの詳細については、Caching systemを参照してください。
Maven仮想レジストリを使用します
バーチャルレジストリを作成したら、バーチャルレジストリを介して依存関係をプルするようにMavenクライアントを構成する必要があります。
Mavenクライアントでの認証
バーチャルレジストリエンドポイントは、次のいずれかのトークンで使用できます:
- パーソナルアクセストークン。
- 検討対象のバーチャルレジストリをホストするトップレベルグループのグループデプロイトークン。
- 検討対象のバーチャルレジストリをホストするトップレベルグループのグループアクセストークン。
- CIジョブトークン。
トークンには、次のいずれかのスコープが必要です:
apiread_virtual_registry
アクセストークンとCIジョブトークンはユーザーに解決されます。解決されたユーザーは、次のいずれかである必要があります:
guestの最小アクセスレベルを持つトップレベルグループの直接のメンバー。- GitLabインスタンス管理者。
- トップレベルグループに含まれるプロジェクトのいずれかの直接のメンバー。
Mavenクライアントを構成する
Maven仮想レジストリは、次のMavenクライアントをサポートしています:
Mavenクライアント構成で仮想レジストリを宣言する必要があります。
すべてのクライアントが認証されている必要があります。クライアント認証には、カスタムヘッダーまたは基本認証を使用できます。各クライアントに対して、以下の構成のいずれかを使用する必要があります。
| トークンの種類 | 名前は次のようになっている必要があります | トークン |
|---|---|---|
| パーソナルアクセストークン | Private-Token | トークンをそのまま貼り付けるか、トークンを保持するための環境変数を定義します。 |
| グループデプロイトークン | Deploy-Token | トークンをそのまま貼り付けるか、トークンを保持するための環境変数を定義します。 |
| グループアクセストークン | Private-Token | トークンをそのまま貼り付けるか、トークンを保持するための環境変数を定義します。 |
| CIジョブトークン | Job-Token | ${CI_JOB_TOKEN} |
次のセクションをsettings.xmlファイルに追加します。
<settings>
<servers>
<server>
<id>gitlab-maven</id>
<configuration>
<httpHeaders>
<property>
<name>REPLACE_WITH_NAME</name>
<value>REPLACE_WITH_TOKEN</value>
</property>
</httpHeaders>
</configuration>
</server>
</servers>
</settings>mvnアプリケーションでバーチャルレジストリを構成するには、次の2つの方法があります:
- デフォルトレジストリ(Maven central)の上に追加のレジストリとして。この構成では、宣言されたレジストリのいずれかから、バーチャルレジストリとデフォルトレジストリの両方に存在するプロジェクト依存関係をプルできます。
- デフォルトレジストリ(Maven central)の代替として。この構成では、依存関係はバーチャルレジストリを介してプルされます。必要なパブリック依存関係が失われるのを防ぐために、Maven centralをバーチャルレジストリの最後のアップストリームとして構成する必要があります。
Mavenバーチャルレジストリを追加のレジストリとして構成するには、pom.xmlファイルにrepository要素を追加します:
<repositories>
<repository>
<id>gitlab-maven</id>
<url>https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<registry_id></url>
</repository>
</repositories><id>:settings.xmlで使用されている<server>の同じID。<registry_id>: Maven仮想レジストリのID。
Mavenバーチャルレジストリをデフォルトレジストリの代替として構成するには、settings.xmlにmirrors要素を追加します:
<settings>
<servers>
...
</servers>
<mirrors>
<mirror>
<id>central-proxy</id>
<name>GitLab proxy of central repo</name>
<url>https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<registry_id></url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings><registry_id>: Maven仮想レジストリのID。
| トークンの種類 | 名前は次のようになっている必要があります | トークン |
|---|---|---|
| パーソナルアクセストークン | Private-Token | トークンをそのまま貼り付けるか、トークンを保持するための環境変数を定義します。 |
| グループデプロイトークン | Deploy-Token | トークンをそのまま貼り付けるか、トークンを保持するための環境変数を定義します。 |
| グループアクセストークン | Private-Token | トークンをそのまま貼り付けるか、トークンを保持するための環境変数を定義します。 |
| CIジョブトークン | Job-Token | ${CI_JOB_TOKEN} |
GRADLE_USER_HOMEディレクトリで、次の内容のgradle.propertiesファイルを作成します:
gitLabPrivateToken=REPLACE_WITH_YOUR_TOKENrepositoriesセクションをbuild.gradleに追加します。
Groovy DSLの場合:
repositories { maven { url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<registry_id>" name "GitLab" credentials(HttpHeaderCredentials) { name = 'REPLACE_WITH_NAME' value = gitLabPrivateToken } authentication { header(HttpHeaderAuthentication) } } }Kotlin DSLの場合:
repositories { maven { url = uri("https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<registry_id>") name = "GitLab" credentials(HttpHeaderCredentials::class) { name = "REPLACE_WITH_NAME" value = findProperty("gitLabPrivateToken") as String? } authentication { create("header", HttpHeaderAuthentication::class) } } }<registry_id>: Maven仮想レジストリのID。
| トークンの種類 | ユーザー名は次のようになっている必要があります | トークン |
|---|---|---|
| パーソナルアクセストークン | ユーザーのユーザー名 | トークンをそのまま貼り付けるか、トークンを保持するための環境変数を定義します。 |
| グループデプロイトークン | デプロイトークンのユーザー名 | トークンをそのまま貼り付けるか、トークンを保持するための環境変数を定義します。 |
| グループアクセストークン | アクセストークンにリンクされたユーザーのユーザー名 | トークンをそのまま貼り付けるか、トークンを保持するための環境変数を定義します。 |
| CIジョブトークン | gitlab-ci-token | sys.env.get("CI_JOB_TOKEN").get |
SBTの認証は、基本HTTP認証に基づいています。ユーザー名とパスワードを入力する必要があります。
build.sbtに次の行を追加します:
resolvers += ("gitlab" at "<endpoint_url>")
credentials += Credentials("GitLab Virtual Registry", "<host>", "<username>", "<token>")<endpoint_url>: Maven仮想レジストリのポート。たとえば、https://gitlab.example.com/api/v4/virtual_registries/packages/maven/<registry_id>。ここで、<registry_id>はMavenバーチャルレジストリのIDです。<host>: は、プロトコルスキームまたはポートなしで、<endpoint_url>に存在するホストです。たとえばgitlab.example.comなどです。<username>: ユーザー名。<token>: 構成されたトークン。
Credentialsの最初の引数が"GitLab Virtual Registry"であることを確認してください。このレルム名は、Mavenバーチャルレジストリによって送信される基本認証レルムと正確に一致する必要があります。