1. Descripción general
Como la evolución de Container Registry, Artifact Registry permite a tu organización administrar imágenes de contenedor y paquetes de lenguajes (como Maven y npm) en un solo lugar. Está completamente integrado a las herramientas y los entornos de ejecución de Google Cloud, y es compatible con la administración de dependencias basada en lenguajes para usar con herramientas como npm y Maven. Esto facilita la integración con las herramientas de CI/CD para configurar canalizaciones automatizadas.
En este lab, se explican algunas de las funciones disponibles en Artifact Registry.
Qué aprenderás
¿Cuáles son los objetivos de aprendizaje de este lab?
- Crear repositorios para contenedores y paquetes de lenguajes
- Administrar imágenes de contenedor con Artifact Registry
- Configurar Maven y usar Artifact Registry para dependencias de Java
2. Configuración y requisitos
Cómo configurar el entorno a tu propio ritmo
- Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.



- El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla en cualquier momento.
- El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. Por lo general, no importa cuál sea. En la mayoría de los codelabs, deberás hacer referencia al ID del proyecto (suele identificarse como
PROJECT_ID). Si no te gusta el ID que se generó, podrías generar otro aleatorio. También puedes probar uno propio y ver si está disponible. No se puede cambiar después de este paso y se usará el mismo durante todo el proyecto. - Recuerda que hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
- A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no debería costar mucho, tal vez nada. Para cerrar recursos y evitar que se generen cobros más allá de este instructivo, puedes borrar los recursos que creaste o borrar todo el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de USD 300.
Configura gcloud
Establece el ID y número del proyecto en Cloud Shell. Guárdalos como variables PROJECT_ID y PROJECT_NUMBER.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
Habilita los servicios de Google
gcloud services enable \
cloudresourcemanager.googleapis.com \
container.googleapis.com \
artifactregistry.googleapis.com \
containerregistry.googleapis.com \
containerscanning.googleapis.com
Obtén el código fuente
El código fuente de este lab se encuentra en la organización GoogleCloudPlatform en GitHub. Clónalo con el siguiente comando y, luego, cambia al directorio.
git clone https://github.com/GoogleCloudPlatform/cloud-code-samples/
3. Trabaja con imágenes de contenedor
Crea un repositorio de Docker en Artifact Registry
Artifact Registry permite administrar imágenes de contenedor y paquetes de lenguajes. Cada tipo de artefacto requiere especificaciones diferentes. Por ejemplo, las solicitudes de dependencias de Maven son diferentes de las de Node.
Para admitir las diferentes especificaciones de APIs, Artifact Registry necesita saber qué formato quieres que tengan las respuestas de la API. Para ello, crearás un repositorio y pasarás la marca --repository-format, que indica el tipo de repositorio deseado.
Desde Cloud Shell, ejecuta el siguiente comando para crear un repositorio de imágenes de Docker:
gcloud artifacts repositories create container-dev-repo --repository-format=docker \
--location=us-central1 --description="Docker repository for Container Dev Workshop"
Haz clic en Autorizar si aparece la solicitud de autorización de Cloud Shell.
Ve a la consola de Google Cloud: Artifact Registry > Repositorios y observa tu repositorio de Docker recién creado con el nombre container-dev-repo. Si haces clic en él, verás que está vacío por el momento.
Configura la autenticación de Docker en Artifact Registry
Cuando te conectas a Artifact Registry, se requieren credenciales para proporcionar acceso. En lugar de establecer credenciales separadas, Docker puede configurarse para usar tus credenciales de gcloud sin problemas.
Desde Cloud Shell, ejecuta el siguiente comando para configurar Docker de modo que use Google Cloud CLI para autenticar solicitudes a Artifact Registry en la región us-central1:
gcloud auth configure-docker us-central1-docker.pkg.dev
El comando solicitará una confirmación para cambiar la configuración de Docker de Cloud Shell. Presiona Intro.
Explora la aplicación de ejemplo
Se proporciona una aplicación de ejemplo en el repositorio de Git que clonaste en un paso anterior. Cambia al directorio de Java y revisa el código de la aplicación.
cd cloud-code-samples/java/java-hello-world
La carpeta contiene una aplicación de Java de ejemplo que renderiza una página web sencilla: además de varios archivos que no son relevantes para este lab específico, contiene el código fuente, en la carpeta src y un Dockerfile que usaremos para compilar una imagen de contenedor de forma local.
Compila la imagen del contenedor
Antes de poder almacenar imágenes de contenedor en Artifact Registry, debes crear una.
Ejecuta el siguiente comando para compilar la imagen de contenedor y etiquetarla correctamente para enviarla a tu repositorio en el siguiente paso:
docker build -t us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1 .
Envía la imagen del contenedor a Artifact Registry
Ejecuta el siguiente comando para enviar la imagen del contenedor al repositorio que creaste anteriormente:
docker push us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1
Revisa la imagen en Artifact Registry
Ve a la consola de Google Cloud > Artifact Registry > Repositorios. Haz clic en container-dev-repo y verifica que la imagen java-hello-world esté allí. Haz clic en la imagen y ten en cuenta la presencia de la imagen etiquetada como tag1. Puedes ver que el análisis de vulnerabilidades se está ejecutando o ya se completó, y se puede ver la cantidad de vulnerabilidades detectadas.

Haz clic en la cantidad de vulnerabilidades y verás la lista de vulnerabilidades detectadas en la imagen, con el nombre del boletín de CVE y la gravedad. Puedes hacer clic en VER para cada vulnerabilidad de la lista y obtener más detalles:

4. Trabaja con paquetes de lenguajes
En esta sección, verás cómo configurar un repositorio de Java de Artifact Registry y subir paquetes a él para aprovecharlos en diferentes aplicaciones.
Crea un repositorio de paquetes de Java
Desde Cloud Shell, ejecuta el siguiente comando para crear un repositorio de artefactos de Java:
gcloud artifacts repositories create container-dev-java-repo \
--repository-format=maven \
--location=us-central1 \
--description="Java package repository for Container Dev Workshop"
Haz clic en Autorizar si aparece la solicitud de autorización de Cloud Shell.
Ve a la consola de Google Cloud: Artifact Registry > Repositorios y observa el repositorio de Maven recién creado con el nombre container-dev-java-repo. Si le haces clic, verás que está vacío por el momento.
Configura la autenticación en Artifact Repository
Usa el siguiente comando para actualizar la ubicación conocida de las credenciales predeterminadas de la aplicación (ADC) con las credenciales de tu cuenta de usuario de modo que el auxiliar de credenciales de Artifact Registry pueda autenticarse con ellas al conectarse a los repositorios:
gcloud auth login --update-adc
Configura Maven para Artifact Registry
Ejecuta el siguiente comando desde la carpeta java-hello-world para abrir el Editor de Cloud Shell y agregar la carpeta de la aplicación a su lugar de trabajo:
cloudshell workspace .
Para habilitar las cookies de terceros, haz clic en "¿El sitio ya funciona?" y, luego, en "Permitir cookies".
Después de que se vuelva a cargar el navegador, abre Cloud Shell y vuelve a ejecutar el comando anterior para cargar la carpeta de la aplicación.


Abre pom.xml en el editor de Cloud Shell y haz clic en "Abrir editor".

Abre la terminal desde el editor de Cloud Shell y ejecuta el siguiente comando para imprimir la configuración del repositorio que deseas agregar a tu proyecto de Java:
gcloud artifacts print-settings mvn \
--repository=container-dev-java-repo \
--location=us-central1
y agrega la configuración que se muestra a las secciones correspondientes del archivo pom.xml.
Vista del editor de Cloud con terminal integrada:

Actualiza la sección distributionManagement
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</repository>
</distributionManagement>
Actualiza la sección repositories
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
Actualiza las extensiones
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.1.0</version>
</extension>
</extensions>
Este es un ejemplo del archivo completo como referencia. Asegúrate de reemplazar <PROJECT> por el ID de tu proyecto.
<?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>
<artifactId>hello-world</artifactId>
<packaging>jar</packaging>
<name>Cloud Code Hello World</name>
<description>Getting started with Cloud Code</description>
<version>1.0.0</version>
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
</parent>
<properties>
<java.version>1.8</java.version>
<checkstyle.config.location>./checkstyle.xml</checkstyle.config.location>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.2</version>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.1.0</version>
</extension>
</extensions>
</build>
<!-- The Spring Cloud GCP BOM will manage spring-cloud-gcp version numbers for you. -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-dependencies</artifactId>
<version>1.2.8.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-logging</artifactId>
</dependency>
</dependencies>
</project>
Sube tu paquete de Java a Artifact Registry
Con Artifact Registry configurado en Maven, ahora puedes usar Artifact Registry para almacenar archivos JAR de Java y usarlos en otros proyectos de tu organización.
Ejecuta el siguiente comando para subir tu paquete de Java a Artifact Registry:
mvn deploy
Verifica el paquete de Java en Artifact Registry
Ve a Consola de Cloud > Artifact Registry > Repositorios. Haz clic en container-dev-java-repo y verifica que el artefacto binario hello-world esté allí:

5. ¡Felicitaciones!
¡Felicitaciones! Completaste el codelab.
Temas abordados
- Repositorios creados para contenedores y paquetes de lenguajes
- Imágenes de contenedor administradas con Artifact Registry
- Configuraste Maven para usar Artifact Registry como repositorio de dependencias Java.
Limpieza
Ejecuta el siguiente comando para borrar el proyecto:
gcloud projects delete $PROJECT_ID