Vous devez vous authentifier auprès d'Artifact Registry lorsque vous utilisez de se connecter à un dépôt Artifact Registry. Cette documentation se concentre sur la configuration de Maven et de Gradle.
Vous n'avez pas besoin de configurer l'authentification pour Cloud Build ni pour les environnements d'exécution Google Cloud tels que Google Kubernetes Engine et Cloud Run, mais vous devez vérifier que les autorisations requises sont configurées. Pour en savoir plus, consultez les informations Cloud Build et déploiement dans Google Cloud Runtime de l'infrastructure.
Avant de commencer
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- (Facultatif) Configurez des valeurs par défaut pour les commandes gcloud.
Si vous configurez l'authentification avec un dépôt standard, vérifiez la règle de version afin de pouvoir configurer correctement votre projet Maven pour les types de packages Java que vous pouvez importer.
Console
Ouvrez la page Dépôts de la console Google Cloud.
Cliquez sur le dépôt auprès duquel vous souhaitez vous authentifier.
La section Détails affiche la règle de version. Si le dépôt dispose d'une stratégie de version d'instantané, le champ Allow snapshot overwrites (Autoriser le remplacement des instantanés) indique si les instantanés peuvent écraser les versions d'instantanés correspondantes dans le dépôt.
gcloud
Exécutez la commande suivante pour afficher la description d'un dépôt.
gcloud artifacts repositories describe REPOSITORY \ --project=PROJECT \ --location=LOCATION
Où
- REPOSITORY est l'ID du dépôt. Si vous avez configuré un dépôt Artifact Registry par défaut, il est utilisé lorsque cette option est omise dans la commande.
- PROJECT est l'ID de projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
- LOCATION est l'emplacement régional ou multirégional du dépôt.
Le résultat de la commande inclut des informations sur la règle de version moins de
mavenConfig
. Dans cet exemple, le dépôt contient un instantané la règle de version et les instantanés ne peuvent pas écraser des versions identiques dans le un dépôt de clés.Encryption: Google-managed key createTime: '2021-10-04T19:39:10.897404Z' format: MAVEN mavenConfig: allowSnapshotOverwrites: false versionPolicy: SNAPSHOT
Si un dépôt ne dispose pas de règle de version, la valeur de
mavenConfig
est{}
.
Présentation
Artifact Registry est compatible avec les méthodes d'authentification suivantes.
- Utiliser un assistant d'authentification
- Cette option offre la plus grande flexibilité. Lorsque vous incluez l'assistant dans votre configuration Maven ou Gradle, Artifact Registry recherche les identifiants de compte de service dans l'environnement.
- Spécifier une clé de compte de service en tant qu'identifiant
- Utilisez cette option lorsqu'une application n'est pas compatible avec Identifiants par défaut de l'application, mais permet l'authentification avec un nom d'utilisateur et un mot de passe.
Les clés de compte de service sont des identifiants de longue durée. Suivez les instructions ci-dessous pour limiter l'accès à vos dépôts :
- Envisagez d'utiliser un compte de service dédié pour interagir avec les dépôts.
- Attribuez le rôle Artifact Registry minimal requis par le compte de service. Par exemple, attribuez le lecteur Artifact Registry à un compte de service qui télécharge les artefacts uniquement.
- Si les groupes de votre organisation nécessitent différents niveaux d'accès à des dépôts spécifiques, accordez l'accès au niveau du dépôt plutôt qu'au niveau du projet.
- Suivez les bonnes pratiques de gestion des identifiants.
S'authentifier à l'aide d'un assistant d'identification
Artifact Registry fournit un wagon Maven et un le plug-in Gradle en tant qu'assistant d'identification ; Lorsque vous utilisez l'assistant d'identification, vos identifiants ne sont pas stockés dans votre projet Java. À la place, Artifact Registry recherche les identifiants dans l'ordre suivant :
Identifiants par défaut de l'application (ADC), stratégie qui recherche les identifiants dans l'ordre suivant :
Identifiants définis dans la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS
.Identifiants fournis par le compte de service par défaut pour Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine ou les fonctions Cloud Run.
Les identifiants fournis par la Google Cloud CLI, y compris les identifiants utilisateur de la commande
gcloud auth application-default login
.
La variable GOOGLE_APPLICATION_CREDENTIALS
fait en sorte que le compte
une authentification explicite, ce qui facilite
le dépannage. Si vous n'utilisez pas la variable, vérifiez que tous les comptes que l'ADC peut utiliser disposent des autorisations requises. Par exemple,
default service account pour les VM Compute Engine, les nœuds Google Kubernetes Engine
Cloud Run dispose d'un accès en lecture seule aux dépôts. Si vous
à l'aide du compte de service par défaut,
vous devez modifier les autorisations.
Configurer un compte de service pour un assistant d'identifiants
Pour créer un compte de service et configurer l'authentification à l'aide de la variable d'environnement :
Créez un compte de service pour agir au nom de votre application ou sélectionnez un compte de service existant que vous utilisez pour l'automatisation.
Vous aurez besoin de l'emplacement du fichier de clé de compte de service pour configurer l'authentification avec Artifact Registry. Pour les comptes existants, vous pouvez afficher les clés et en créer sur la page "Comptes de service".
Accordez le rôle Artifact Registry spécifique au compte de service afin de fournir l'accès au dépôt.
Attribuez l'emplacement du fichier de clé du compte de service à la variable
GOOGLE_APPLICATION_CREDENTIALS
afin que l'assistant d'identification Artifact Registry puisse obtenir votre clé lors de la connexion aux dépôts.export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
Où KEY-FILE est le chemin d'accès au fichier de clé du compte de service.
Configurer Maven
Configurez Maven pour le type de dépôt que vous utilisez.
Standard
Exécutez la commande suivante pour imprimer la configuration de dépôt à ajouter à votre projet Java.
gcloud artifacts print-settings mvn \ --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION
Où
- PROJECT est l'ID de projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
- REPOSITORY est l'ID du dépôt. Si vous avez configuré un dépôt Artifact Registry par défaut, il est utilisé lorsque cette option est omise dans la commande.
- LOCATION est l'emplacement régional ou multirégional du dépôt.
Ajoutez les paramètres renvoyés aux sections appropriées dans le fichier
pom.xml
pour votre projet Maven. Reportez-vous à la documentation de référence POM de Maven pour en savoir plus sur la structure du fichier.L'exemple suivant présente les paramètres d'un dépôt qui stocke à la fois des versions d'instantané et de version.
<distributionManagement> <snapshotRepository> <id>artifact-registry</id> <url>artifactregistry://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url> </snapshotRepository> <repository> <id>artifact-registry</id> <url>artifactregistry://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url> </repository> </distributionManagement> <repositories> <repository> <id>artifact-registry</id> <url>artifactregistry://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <build> <extensions> <extension> <groupId>com.google.cloud.artifactregistry</groupId> <artifactId>artifactregistry-maven-wagon</artifactId> <version>2.2.3</version> </extension> </extensions> </build>
Les éléments
<release>
et<snapshot>
indiquent si le stocke les packages de version, les packages d'instantanés ou les deux. Ces paramètres doivent correspondre à ceux du dépôt règles relatives aux versions.L'élément
<build>
définit le wagon Artifact Registry comme suit : une extension. Pour en savoir plus sur le wagon, consultez la documentation des outils Maven Artifact Registry.
À distance ou virtuel
Modifiez le fichier
pom.xml
dans votre projet. Découvrir Maven Documentation de référence sur le produit POM pour en savoir plus sur la structure du fichier.L'exemple suivant présente les paramètres d'un dépôt distant qui stocke à la fois des versions d'instantané et de version. Dans cet exemple, le projet dépend d'une version du package Guava.
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.google.hello</groupId> <artifactId>repo-config</artifactId> <version>4.1-SNAPSHOT</version> <description>version 1 release</description> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>28.0-jre</version> </dependency> </dependencies> <repositories> <repository> <id>central</id> <name>Maven Central remote repository</name> <url>artifactregistry://LOCATION-maven.pkg.dev/PROJECT_ID/REMOTE-REPOSITORY-NAME</url> <layout>default</layout> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <build> <extensions> <extension> <groupId>com.google.cloud.artifactregistry</groupId> <artifactId>artifactregistry-maven-wagon</artifactId> <version>2.2.3</version> </extension> </extensions> </build> </project>
La section
<repositories>
définit le dépôt Artifact Registry. Pour un dépôt distant, l'élément<id>
doit être défini surcentral
Ce paramètre remplace la valeur par défaut de l'ID de dépôtcentral
hérité du Super POM.La section
<build>
définit le wagon Artifact Registry comme une extension. Pour plus d'informations sur le wagon, consultez la documentation relative aux outils Maven Artifact Registry.Dans cet exemple, la section
<dependencies>
définit une dépendance sur la version28.0-jre
du package Guava.
Maven résout certaines dépendances avant d'appliquer un wagon défini dans
pom.xml
, y compris les suivantes :- Les références d'un projet Maven enfant à un projet parent à l'aide de la méthode
Élément
<parent>
. - Dépendances de plug-ins stockées dans Artifact Registry.
Si votre projet doit résoudre ces dépendances, vous devez utiliser la principales extensions qui permet à Maven de localiser les fichiers POM parents et les plug-ins.
Dans votre projet, créez le fichier
${maven.projectBasedir}/.mvn/extensions.xml
avec le contenu suivant. L'élément<extension>
définit le wagon.<extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd"> <extension> <groupId>com.google.cloud.artifactregistry</groupId> <artifactId>artifactregistry-maven-wagon</artifactId> <version>2.2.3</version> </extension> </extensions>
Maven peut désormais résoudre les dépendances parentes ou de plug-in à partir d'Artifact Registry.
- Les références d'un projet Maven enfant à un projet parent à l'aide de la méthode
Élément
La configuration de l'authentification est terminée.
Configurer Gradle
Configurez Gradle pour le type de dépôt que vous utilisez.
Standard
Exécutez la commande suivante pour imprimer la configuration de dépôt à ajouter à votre projet Java.
gcloud artifacts print-settings gradle \ --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION
Où
- PROJECT est l'ID de projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
- REPOSITORY est l'ID du dépôt. Si vous avez configuré un dépôt Artifact Registry par défaut, il est utilisé lorsque cette option est omise dans la commande.
- LOCATION est l'emplacement régional ou multirégional du dépôt.
Ajoutez les paramètres du dépôt à votre fichier
build.gradle
. L'exemple suivant montre l'emplacement relatif des sections imprimées.plugins { id "maven-publish" id "com.google.cloud.artifactregistry.gradle-plugin" version "2.2.3" } publishing { publications { mavenJava(MavenPublication) { groupId 'maven.example.id' from components.java } } repositories { maven { url "artifactregistry://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY" } } } repositories { maven { url "artifactregistry://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY" } }
La section
plugins
déclare le plug-in Artifact Registry. Pour plus d'informations sur le plug-in, consultez la documentation relative aux outils Maven Artifact Registry.La section
publishing
définit les fichiers à importer et le dépôt Artifact Registry cible. Vous pouvez mettre à jour la liste des fichiers dans la sectionpublications
lorsque vous êtes prêt pour l'importation. Pour en savoir plus sur les paramètres de publication, consultez la documentation du plug-in de publication Maven.
À distance ou virtuel
Ajoutez les paramètres du dépôt à votre fichier
build.gradle
.L'exemple suivant présente les paramètres d'un dépôt distant. Dans cet exemple, le projet dépend d'une version de Guava d'un package.
plugins { id 'java' id "maven-publish" id "com.google.cloud.artifactregistry.gradle-plugin" version "2.2.3" id 'maven' } repositories { maven { url "artifactregistry://LOCATION-maven.pkg.dev /PROJECT_ID/REMOTE-REPOSITORY-NAME" } } dependencies { compile "com.google.guava:guava:31.1-jre" }
La section
plugins
déclare le plug-in Artifact Registry. Pour plus d'informations sur le plug-in, consultez la documentation relative aux outils Maven Artifact Registry.La section
repositories
définit le dépôt Artifact Registry.Dans cet exemple, la section
dependencies
définit une dépendance au niveau Version31.1-jre
du package Guava.
Définissez vos dépendances pour votre package dans la section
dependencies
.Si vous devez utiliser des dépôts dans votre fichier
init.gradle
ousettings.gradle
, vous pouvez ajouter la configuration du plug-in à ces fichiers.Pour
init.gradle
, ajoutez la configuration suivante :initscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath "gradle.plugin.com.google.cloud.artifactregistry:artifactregistry-gradle-plugin:2.2.3" } } apply plugin: com.google.cloud.artifactregistry.gradle.plugin.ArtifactRegistryGradlePlugin
Pour settings.gradle, ajoutez la configuration suivante :
buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath "gradle.plugin.com.google.cloud.artifactregistry:artifactregistry-gradle-plugin:2.2.3" } } apply plugin: "com.google.cloud.artifactregistry.gradle-plugin"
La configuration de l'authentification est terminée.
Configurer l'authentification par mot de passe
Utilisez cette approche lorsque votre application Java nécessite une authentification avec un nom d'utilisateur et un mot de passe donnés.
Configurer un compte de service pour l'authentification par mot de passe
Pour créer un compte de service :
Créez un compte de service pour agir au nom de votre application ou sélectionnez un compte de service existant que vous utilisez pour l'automatisation.
Vous aurez besoin de l'emplacement du fichier de clé de compte de service pour configurer l'authentification avec Artifact Registry. Pour les comptes existants, vous pouvez afficher les clés et en créer sur la page "Comptes de service".
Si vous souhaitez activer le compte de service dans la gcloud CLI actuelle exécutez la commande suivante:
gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
Où
- ACCOUNT est l'utilisateur ou le compte de service.
- KEY-FILE est le chemin d'accès au fichier de clé JSON du compte de service.
Configurer Maven
Configurez Maven pour le type de dépôt que vous utilisez.
Standard
Exécutez la commande suivante pour imprimer la configuration de dépôt à ajouter à votre projet Java.
gcloud artifacts print-settings mvn \ --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION \ --json-key=KEY-FILE
Où
- PROJECT est l'ID de projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
- REPOSITORY est l'ID du dépôt. Si vous avez configuré un dépôt Artifact Registry par défaut, il est utilisé lorsque cette option est omise dans la commande.
- LOCATION est l'emplacement régional ou multirégional du dépôt.
- KEY-FILE est le chemin d'accès au fichier de clé JSON du compte de service.
La commande renvoie les paramètres à inclure dans votre projet Java, y compris une version encodée en base64 de votre clé privée.
- Ajoutez les paramètres de dépôt renvoyés dans l'élément
<project>
aux sections appropriées du fichierpom.xml
pour votre projet Maven. Reportez-vous à la documentation de référence POM de Maven pour en savoir plus sur la structure du fichier.
<project> <distributionManagement> <snapshotRepository> <id>artifact-registry</id> <url>https://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url> </snapshotRepository> <repository> <id>artifact-registry</id> <url>https://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url> </repository> </distributionManagement> <repositories> <repository> <id>artifact-registry</id> <url>https://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </project>
Les éléments
<release>
et<snapshot>
indiquent si le dépôt stocke des packages de version, des packages d'instantané ou les deux. Ces doivent correspondre à ceux du dépôt règles relatives aux versions.- Ajoutez les paramètres d'authentification renvoyés dans l'élément
<settings>
à la section<servers>
du fichier~/.m2/settings.xml
. Dans l'exemple suivant,KEY
est la clé encodée en base64 de votre fichier de clé.
Pour en savoir plus, consultez la documentation de référence sur les paramètres Maven.
<settings> <servers> <server> <id>artifact-registry</id> <configuration> <httpConfiguration> <get> <usePreemptive>true</usePreemptive> </get> <head> <usePreemptive>true</usePreemptive> </head> <put> <params> <property> <name>http.protocol.expect-continue</name> <value>false</value> </property> </params> </put> </httpConfiguration> </configuration> <username>_json_key_base64</username> <password>KEY</password> </server> </servers> </settings>
À distance ou virtuel
Ajoutez les paramètres du dépôt aux sections appropriées du fichier
pom.xml
pour votre projet Maven. Découvrir Maven Documentation de référence sur le produit POM pour en savoir plus sur la structure du fichier.<repositories> <repository> <id>central</id> <name>Maven Central remote repository</name> <url>artifactregistry://LOCATION-maven.pkg.dev/PROJECT_ID/REMOTE-REPOSITORY-NAME</url> <layout>default</layout> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
La section
<repositories>
définit le dépôt Artifact Registry. Pour un dépôt distant, l'élément<id>
doit être défini surcentral
. Ce paramètre remplace la valeur par défaut decentral
de dépôt hérité Super POM :Encodez votre fichier de clé en base64 à l'aide de la commande suivante. Remplacer KEY-FILE par le nom de votre fichier de clé ;
base64 -w 0 KEY-FILE
Ajoutez les paramètres d'authentification dans l'élément
<settings>
à la section<servers>
du fichier~/.m2/settings.xml
.
Pour en savoir plus, consultez la documentation de référence sur les paramètres Maven.
<settings> <servers> <server> <id>artifact-registry</id> <configuration> <httpConfiguration> <get> <usePreemptive>true</usePreemptive> </get> <head> <usePreemptive>true</usePreemptive> </head> <put> <params> <property> <name>http.protocol.expect-continue</name> <value>false</value> </property> </params> </put> </httpConfiguration> </configuration> <username>_json_key_base64</username> <password>KEY</password> </server> </servers> </settings>
La configuration de l'authentification est terminée.
Configurer Gradle
Configurez Gradle pour le type de dépôt que vous utilisez.
Standard
Exécutez la commande suivante pour imprimer la configuration de dépôt à ajouter à votre projet Java.
gcloud artifacts print-settings gradle \ --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION \ --json-key=KEY-FILE
Où
- PROJECT est l'ID de projet.
- REPOSITORY est l'ID ou l'identifiant complet du dépôt. Si vous avez configuré un dépôt Artifact Registry par défaut, il est utilisé lorsque cette option est omise dans la commande.
- KEY-FILE est le chemin d'accès au fichier de clé JSON du compte de service. Si vous avez exécuté la commande pour activer le compte de service, vous pouvez omettre cette option.
La commande renvoie les paramètres à inclure dans votre projet Java, y compris une version de votre clé privée encodée en base64.
La ligne suivante de la configuration renvoyée définit une variable nommée
artifactRegistryMavenSecret
pour votre clé de compte de service. Ajoutez cette ligne à votre fichier~/.gradle/gradle.properties
afin que la clé ne soit pas visible dans vos builds ou dans votre dépôt de gestion de code source.artifactRegistryMavenSecret = KEY
Dans cette ligne, KEY est la clé privée dans le fichier de clé de votre compte de service. Pour
_json_key_base64
,artifactRegistryMavenSecret
est défini sur encodée en base64 comme mot de passe.Dans
build.gradle
, spécifiez les paramètres du dépôt :plugins { id "maven-publish" } publishing { publications { mavenJava(MavenPublication) { groupId 'maven.example.id' from components.java } } repositories { maven { url "https://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY" credentials { username = "_json_key_base64" password = "$artifactRegistryMavenSecret" } authentication { basic(BasicAuthentication) } } } } repositories { maven { url "https://LOCATION-maven.pkg.dev/PROJECT/REPOSITORY" credentials { username = "_json_key_base64" password = "$artifactRegistryMavenSecret" } authentication { basic(BasicAuthentication) } } }
- La section
repositories
définit l'URL et les identifiants du dépôt. pour l'authentification. - La section
publishing
définit les fichiers à importer et la cible Artifact Registry. Vous pouvez mettre à jour la liste des fichiers dans la sectionpublications
lorsque vous êtes prêt pour l'importation. Pour en savoir plus sur les paramètres de publication, consultez la documentation du plug-in de publication Maven.
- La section
À distance ou virtuel
Encodez votre fichier de clé en base64 à l'aide de la commande suivante : Remplacer KEY-FILE par le nom de votre fichier de clé ;
base64 -w 0 KEY-FILE
Dans le fichier
~/.gradle/gradle.properties
, ajoutez la ligne suivante : afin que votre clé ne soit pas visible dans vos builds ou dans votre contrôle des sources un dépôt de clés.artifactRegistryMavenSecret = KEY
Sur cette ligne, KEY correspond au contenu de votre fichier de clé.
Ajoutez les paramètres du dépôt à votre fichier
build.gradle
.
L'exemple suivant montre comment configurer un dépôt distant.
plugins { id 'java' id "maven-publish" id 'maven' } repositories { maven { url "artifactregistry://LOCATION-maven.pkg.dev /PROJECT_ID/REMOTE-REPOSITORY-NAME" credentials { username = "_json_key_base64" password = "$artifactRegistryMavenSecret" } authentication { basic(BasicAuthentication) } dependencies { compile "com.google.guava:guava:31.1-jre" }
La section
repositories
définit le dépôt Artifact Registry.Dans cet exemple, la section
dependencies
définit une dépendance au niveau Version31.1-jre
du package Guava.
Définissez vos dépendances pour votre package dans la section
dependencies
.
La configuration de l'authentification est terminée.