1. Présentation
Artifact Registry vous permet de stocker différents types d'artefacts, de créer plusieurs dépôts dans un même projet et d'associer une région ou un emplacement multirégional spécifique à chaque dépôt. Il existe plusieurs modes de dépôt. Chaque mode a une fonction différente. Le schéma suivant illustre l'une des nombreuses façons d'utiliser des dépôts dans différents modes ensemble. Le schéma montre un workflow sur deux projets Google Cloud. Dans un projet de développement, les développeurs créent une application Java. Dans un projet d'exécution distinct, une autre compilation crée une image de conteneur avec l'application à déployer sur Google Kubernetes Engine.
Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes.
- Déployer vos packages privés à l'aide de dépôts standards
- Mettre en cache les packages Maven Central à l'aide de dépôts distants
- Utilisez des dépôts virtuels pour combiner plusieurs dépôts en amont dans une seule configuration
Configuration de l'environnement au rythme de chacun
- Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)
- Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères non utilisée par les API Google. Vous pouvez le modifier à tout moment.
- L'ID du projet est unique parmi tous les projets Google Cloud et non modifiable une fois défini. La console Cloud génère automatiquement une chaîne unique. généralement, vous ne vous souciez
pas de ce que c’est. Dans la plupart des ateliers de programmation, vous devrez référencer l'ID du projet (il est généralement identifié comme
PROJECT_ID
). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre au hasard. Vous pouvez également essayer la vôtre pour voir si elle est disponible. Il ne peut pas être modifié après cette étape et restera actif pendant toute la durée du projet. - Pour votre information, il existe une troisième valeur, le numéro de projet, utilisé par certaines API. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
- Vous devez ensuite activer la facturation dans la console Cloud pour utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour arrêter les ressources afin d'éviter que des frais ne vous soient facturés au-delà de ce tutoriel, vous pouvez supprimer les ressources que vous avez créées ou l'ensemble du projet. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai gratuit pour bénéficier d'un crédit de 300 $.
Configuration de Workspace
Configurer gcloud
Dans Cloud Shell, définissez l'ID et le numéro de votre projet. Enregistrez-les en tant que variables PROJECT_ID
et PROJECT_NUMBER
.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
Activer les API
gcloud services enable artifactregistry.googleapis.com
Cloner le dépôt
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
cd java-docs-samples/container-registry/container-analysis
2. Dépôts standards
Les dépôts standards vous permettent de stocker vos packages privés et de les partager avec vos autres applications.
Créer un dépôt Maven standard
Dans Cloud Shell, exécutez la commande suivante pour créer un dépôt pour les artefacts Java:
gcloud artifacts repositories create container-dev-java-repo \
--repository-format=maven \
--location=us-central1 \
--description="Java package repository for Container Dev Workshop"
Cliquez sur "Autoriser" si l'invite d'autorisation Cloud Shell s'affiche.
Accédez à la console Google Cloud – Artifact Registry – Dépôts et notez le dépôt Maven que vous venez de créer, nommé container-dev-java-repo
. Si vous cliquez dessus, vous pouvez constater qu'il est vide pour le moment.
gcloud artifacts repositories describe container-dev-java-repo \
--location=us-central1
Elle doit renvoyer une réponse semblable à celle-ci :
Encryption: Google-managed key Repository Size: 0.000MB createTime: '2023-03-21T19:01:45.461589Z' description: Java package repository for Container Dev Workshop format: MAVEN mavenConfig: {} mode: STANDARD_REPOSITORY name: projects/qwiklabs-gcp-03-4304110dc461/locations/us-central1/repositories/container-dev-java-repo updateTime: '2023-03-21T19:01:45.461589Z'
Configurer Maven pour Artifact Registry
Exécutez la commande suivante pour afficher la configuration du dépôt à ajouter à votre projet Java:
gcloud artifacts print-settings mvn \
--repository=container-dev-java-repo \
--location=us-central1
La commande précédente renvoie un fichier XML à ajouter au fichier pom.xml de vos projets.
- La section repositories (Dépôts) indique où Maven peut télécharger les artefacts distants destinés au projet en cours.
- La section distributionManagement spécifie le dépôt distant vers lequel le projet sera transféré lors de son déploiement.
- La section sur les extensions ajoute artifactregistry-maven-wagon, qui active la couche d'authentification et de transport nécessaire pour se connecter à Artifact Registry
- Remarque: Les extensions peuvent exister dans pom.xml ou extensions.xml. Dans les cas où le projet dépend d'un projet parent, les dépendances sont accessibles avant que les autres entrées du fichier pom.xml ne soient chargées. Pour que le parent ait accès à l'extension, vous pouvez la placer dans un fichier extensions.xml chargé avant pom.xml, ce qui la rend disponible pour les dépendances parentes.
Copiez les trois sections, ouvrez pom.xml
dans l'éditeur Cloud Shell et ajoutez les paramètres renvoyés au bas du fichier, juste dans la balise de fermeture project
.
Conseil: Dans cloudshell, exécutez la commande suivante dans le terminal pour ouvrir l'éditeur dans le répertoire actuel.
cloudshell workspace .
Exemple: (les noms de votre projet seront différents dans vos URL)
...
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</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.0</version>
</extension>
</extensions>
</build>
</project>
Importer votre package Java dans Artifact Registry
Maintenant qu'Artifact Registry est configuré dans Maven, vous pouvez utiliser Artifact Registry pour stocker des fichiers JAR Java qui seront utilisés par d'autres projets de votre organisation.
Exécutez la commande suivante pour importer votre package Java dans Artifact Registry:
mvn deploy -DskipTests
Si vous souhaitez exécuter à nouveau cette commande, veillez à augmenter la version dans le fichier pom.xml.
Vérifier le package Java dans Artifact Registry
Accédez à Cloud Console – Artifact Registry – Dépôts. Cliquez sur container-dev-java-repo
et vérifiez que l'artefact binaire hello-world
s'y trouve:
3. Dépôts distants
Les dépôts distants permettent de mettre en cache des packages tiers pour plus de fiabilité et de sécurité.
Créer un dépôt distant
Remarque: Pour plus d'informations sur l'authentification et la configuration, consultez la documentation du produit.
Dans Cloud Shell, exécutez la commande suivante pour créer un dépôt distant pour les artefacts Maven Central:
gcloud artifacts repositories create maven-central-cache \
--project=$PROJECT_ID \
--repository-format=maven \
--location=us-central1 \
--description="Remote repository for Maven Central caching" \
--mode=remote-repository \
--remote-repo-config-desc="Maven Central" \
--remote-mvn-repo=MAVEN-CENTRAL
Vérifier le dépôt dans la console
Accédez à Cloud Console – Artifact Registry – Dépôts. Cliquez sur maven-central-cache
. Notez qu'il a été créé et qu'il est actuellement vide.
Vérifier le dépôt dans le terminal
gcloud artifacts repositories describe maven-central-cache \
--location=us-central1
Intégrer le dépôt à votre projet
Exécutez la commande suivante pour afficher la configuration du dépôt à ajouter à votre projet Java:
gcloud artifacts print-settings mvn \
--repository=maven-central-cache \
--location=us-central1
Ajoutez la section du dépôt au fichier pom.xml. Veillez à ne pas copier les <repositories> externes de la sortie.
Remplacez l'ID du dépôt que vous venez d'ajouter par "central". pour s'assurer que chaque entrée du dépôt possède un identifiant unique.
Exemple: (les noms de votre projet seront différents dans vos URL)
...
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>central</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/maven-central-cache</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.0</version>
</extension>
</extensions>
</build>
</project>
Exécutez les commandes suivantes dans votre terminal afin de créer un extensions.xml
pour votre projet. Pour utiliser le mécanisme des principales extensions, assurez-vous que Maven peut résoudre les dépendances de parents ou de plug-ins à partir d'Artifact Registry.
mkdir .mvn
cat > .mvn/extensions.xml << EOF
<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.0</version>
</extension>
</extensions>
EOF
Extraire des dépendances du dépôt distant
Exécutez la commande suivante pour compiler votre application à l'aide du dépôt distant:
rm -rf ~/.m2/repository
mvn compile
Examiner les packages dans la console
Accédez à Cloud Console – Artifact Registry – Dépôts. Cliquez sur maven-central-cache
et vérifiez que les artefacts binaires y sont mis en cache:
4. Dépôts virtuels
Les dépôts virtuels servent d'interface permettant d'accéder à plusieurs dépôts via une seule configuration. Cela simplifie la configuration client pour les utilisateurs de vos artefacts et renforce la sécurité en limitant les attaques par confusion de dépendance.
Créer un fichier de règles
cat > ./policy.json << EOF
[
{
"id": "private",
"repository": "projects/${PROJECT_ID}/locations/us-central1/repositories/container-dev-java-repo",
"priority": 100
},
{
"id": "central",
"repository": "projects/${PROJECT_ID}/locations/us-central1/repositories/maven-central-cache",
"priority": 80
}
]
EOF
Créer le dépôt virtuel
gcloud artifacts repositories create virtual-maven-repo \
--project=${PROJECT_ID} \
--repository-format=maven \
--mode=virtual-repository \
--location=us-central1 \
--description="Virtual Maven Repo" \
--upstream-policy-file=./policy.json
Intégrer le dépôt à votre projet
Exécutez la commande suivante pour afficher la configuration du dépôt à ajouter à votre projet Java:
gcloud artifacts print-settings mvn \
--repository=virtual-maven-repo \
--location=us-central1
Remplacez l'intégralité de la section des dépôts dans votre fichier pom par la section des dépôts virtuels figurant dans le résultat.
Exemple: (les noms de votre projet seront différents dans vos URL)
...
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/virtual-maven-repo</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.0</version>
</extension>
</extensions>
</build>
</project>
Extraire des dépendances du dépôt virtuel
Étant donné que le dépôt virtuel est un passthrough et ne stocke aucun package réel, pour illustrer clairement le processus, vous allez supprimer le dépôt maven-central-cache que vous avez créé précédemment et le recréer, pour recommencer avec un dépôt vide.
Exécutez les commandes suivantes pour recréer le dépôt de cache
gcloud artifacts repositories delete maven-central-cache \
--project=$PROJECT_ID \
--location=us-central1 \
--quiet
gcloud artifacts repositories create maven-central-cache \
--project=$PROJECT_ID \
--repository-format=maven \
--location=us-central1 \
--description="Remote repository for Maven Central caching" \
--mode=remote-repository \
--remote-repo-config-desc="Maven Central" \
--remote-mvn-repo=MAVEN-CENTRAL
Vous pouvez examiner le dépôt vide dans la console. Accédez à Console Cloud – Artifact Registry – Dépôts
Exercez maintenant le dépôt virtuel en créant votre projet à l'aide de la commande suivante :
rm -rf ~/.m2/repository
mvn compile
Examiner les packages dans la console
Accédez à Cloud Console – Artifact Registry – Dépôts. Cliquez sur maven-central-cache
et vérifiez que les artefacts binaires ont été configurés pour être extraits du dépôt virtuel, mais qu'ils ont finalement été extraits de maven-central-cache
:
5. Félicitations !
Félicitations, vous avez terminé cet atelier de programmation.
Points abordés
- avoir utilisé des dépôts standards pour déployer vos packages privés ;
- Utilisation de dépôts distants pour mettre en cache les packages centraux Maven
- Utilisation de dépôts virtuels pour combiner plusieurs dépôts en amont dans une seule configuration
Nettoyage
Exécutez la commande suivante pour supprimer le projet.
gcloud projects delete ${PROJECT_ID}
—
Dernière mise à jour: 22/03/2023