1. Visão geral
O Artifact Registry, antigo Container Registry, é uma central unificada para sua organização gerenciar imagens de contêiner e pacotes de linguagem (como Maven e npm). Ele é totalmente integrado às ferramentas e aos ambientes de execução do Google Cloud e oferece suporte ao gerenciamento de dependências com base em linguagem para uso com ferramentas como npm e Maven. Desse modo, é fácil integrar o Artifact Registry às ferramentas de CI/CD para configurar pipelines automatizados.
Neste laboratório, você vai conhecer alguns recursos disponíveis no Artifact Registry.
O que você vai aprender
Quais são os objetivos de aprendizado deste laboratório?
- Criar repositórios para contêineres e pacotes de linguagem
- Gerenciar imagens de contêiner com o Artifact Registry
- Configurar o Maven para usar o Artifact Registry para dependências Java
2. Configuração e requisitos
Configuração de ambiente personalizada
- Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.



- O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google É possível atualizar o local a qualquer momento.
- O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como
PROJECT_ID. Se você não gostar do ID gerado, crie outro aleatório. Se preferir, teste o seu e confira se ele está disponível. Ele não pode ser mudado após essa etapa e permanece durante o projeto. - Para sua informação, há um terceiro valor, um Número do projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
- Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não será muito cara, se tiver algum custo. Para desligar os recursos e evitar cobranças além deste tutorial, exclua os recursos criados ou o projeto inteiro. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.
Configurar a gcloud
No Cloud Shell, defina o ID e o número do projeto. Salve-as como variáveis PROJECT_ID e PROJECT_NUMBER.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
Ativar os Serviços do Google
gcloud services enable \
cloudresourcemanager.googleapis.com \
container.googleapis.com \
artifactregistry.googleapis.com \
containerregistry.googleapis.com \
containerscanning.googleapis.com
Conseguir o código-fonte
O código-fonte deste laboratório está na organização GoogleCloudPlatform no GitHub. Clone com o comando abaixo e mude para o diretório.
git clone https://github.com/GoogleCloudPlatform/cloud-code-samples/
3. Como trabalhar com imagens de contêiner
Criar um repositório do Docker no Artifact Registry
O Artifact Registry é compatível com o gerenciamento de imagens de contêiner e pacotes de linguagem. Diferentes tipos de artefatos exigem especificações diferentes. Por exemplo, as solicitações de dependências do Maven são diferentes das solicitações de dependências do Node.
Para ser compatível com as diferentes especificações de API, o Artifact Registry precisa saber qual formato você quer que as respostas da API sigam. Para fazer isso, crie um repositório e transmita a flag --repository-format indicando o tipo de repositório desejado.
No Cloud Shell, execute o comando a seguir para criar um repositório para imagens do Docker:
gcloud artifacts repositories create container-dev-repo --repository-format=docker \
--location=us-central1 --description="Docker repository for Container Dev Workshop"
Clique em "Autorizar" se o prompt de autorização do Cloud Shell aparecer
Acesse o console do Google Cloud > Artifact Registry > Repositórios e observe o repositório Docker recém-criado chamado container-dev-repo. Se você clicar nele, verá que está vazio no momento.
Configurar a autenticação do Docker no Artifact Registry
Ao se conectar ao Artifact Registry, as credenciais são necessárias para fornecer acesso. Em vez de configurar credenciais separadas, o Docker pode ser configurado para usar suas credenciais do gcloud de maneira integrada.
No Cloud Shell, execute o comando a seguir para configurar o Docker para usar a CLI do Google Cloud e autenticar solicitações ao Artifact Registry na região us-central1:
gcloud auth configure-docker us-central1-docker.pkg.dev
O comando vai pedir uma confirmação para mudar a configuração do Docker do Cloud Shell. Clique em "Enter".
Conheça o aplicativo de amostra
Um aplicativo de amostra é fornecido no repositório git que você clonou em uma etapa anterior. Mude para o diretório java e revise o código do aplicativo.
cd cloud-code-samples/java/java-hello-world
A pasta contém um exemplo de aplicativo Java que renderiza uma página da Web simples: além de vários arquivos que não são relevantes para este laboratório específico, ela contém o código-fonte, na pasta src, e um Dockerfile que vamos usar para criar uma imagem de contêiner localmente.
Crie a imagem de contêiner
Antes de armazenar imagens de contêiner no Artifact Registry, você precisa criar um.
Execute o comando a seguir para criar a imagem do contêiner e marcá-la corretamente para enviá-la ao repositório na próxima etapa:
docker build -t us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1 .
Envie a imagem do contêiner para o Artifact Registry
Execute o comando a seguir para enviar a imagem do contêiner para o repositório criado anteriormente:
docker push us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1
Analisar a imagem no Artifact Registry
Acesse Console do Google Cloud > Artifact Registry > Repositórios.. Clique em container-dev-repo e verifique se a imagem java-hello-world está lá. Clique na imagem e observe a tag tag1. Veja que a verificação de vulnerabilidades está em execução ou já foi concluída e o número de vulnerabilidades detectadas está visível.

Clique no número de vulnerabilidades para ver a lista de vulnerabilidades detectadas na imagem, com o nome do boletim CVE e a gravidade. Clique em "VER" em cada vulnerabilidade listada para conferir mais detalhes:

4. como trabalhar com pacotes de idioma
Nesta seção, você vai aprender a configurar um repositório Java do Artifact Registry e fazer upload de pacotes nele, usando-os em diferentes aplicativos.
Criar um repositório de pacotes Java
No Cloud Shell, execute o seguinte comando para criar um repositório para artefatos Java:
gcloud artifacts repositories create container-dev-java-repo \
--repository-format=maven \
--location=us-central1 \
--description="Java package repository for Container Dev Workshop"
Clique em "Autorizar" se o prompt de autorização do Cloud Shell aparecer
Acesse o console do Google Cloud > Artifact Registry > Repositórios e observe o repositório Maven recém-criado chamado container-dev-java-repo. Se você clicar nele, verá que está vazio no momento.
Configurar a autenticação no Artifact Repository
Use o comando a seguir para atualizar o local conhecido do Application Default Credentials (ADC) com suas credenciais de conta de usuário para que o auxiliar de credenciais do Artifact Registry possa fazer a autenticação usando essas credenciais ao se conectar com repositórios:
gcloud auth login --update-adc
Configurar o Maven para o Artifact Registry
Execute o comando a seguir na pasta java-hello-world para abrir o Editor do Cloud Shell e adicionar a pasta do aplicativo ao espaço de trabalho:
cloudshell workspace .
Ative os cookies de terceiros clicando em "O site não está funcionando?" e depois em "Permitir cookies".
Depois que o navegador for recarregado, abra o Cloud Shell e execute o comando acima mais uma vez para carregar a pasta do aplicativo.


Abra o arquivo pom.xml no editor do Cloud Shell e clique em "Abrir editor".

Abra o terminal no Editor do Cloud Shell e execute o comando a seguir para imprimir a configuração do repositório e adicioná-la ao seu projeto Java:
gcloud artifacts print-settings mvn \
--repository=container-dev-java-repo \
--location=us-central1
e adicione as configurações retornadas às seções apropriadas no arquivo pom.xml.
Visualização do Cloud Editor com terminal integrado:

Atualize a seção 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>
Atualize a seção 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>
Atualize as extensões.
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.1.0</version>
</extension>
</extensions>
Aqui está um exemplo do arquivo completo para referência. Substitua <PROJECT> pelo ID do projeto.
<?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>
Fazer upload do pacote Java para o Artifact Registry
Com o Artifact Registry configurado no Maven, agora você pode usar o Artifact Registry para armazenar Jars Java para que outros projetos na sua organização os usem.
Execute o comando a seguir para fazer upload do pacote Java no Artifact Registry:
mvn deploy
Verificar o pacote Java no Artifact Registry
Acesse Console do Cloud > Artifact Registry > Repositórios. Clique em container-dev-java-repo e verifique se o artefato binário hello-world está lá:

5. Parabéns!
Parabéns, você concluiu o codelab.
Conteúdo abordado
- Criou repositórios para contêineres e pacotes de linguagem
- Imagens de contêiner gerenciadas com o Artifact Registry
- Configurou o Maven para usar o Artifact Registry para dependências Java
Limpeza
Execute o comando a seguir para excluir o projeto:
gcloud projects delete $PROJECT_ID