GSP1185

Visão geral
O Artifact Registry permite que você armazene diferentes tipos de artefatos, crie vários repositórios em um único projeto e associe uma região ou multirregião específica a cada repositório. Há vários modos de repositório. Cada modo tem uma finalidade diferente. O diagrama a seguir mostra uma das muitas maneiras possíveis de usar repositórios em diferentes modos juntos. O diagrama mostra um fluxo de trabalho em dois projetos do Google Cloud. Em um projeto de desenvolvimento, os desenvolvedores criam um aplicativo Java. Em um projeto de ambiente de execução separado, outro build cria uma imagem de contêiner com o aplicativo para implantação no Google Kubernetes Engine.
Neste laboratório, você aprenderá a realizar as seguintes tarefas.
- Usar repositórios padrão para implantar seus pacotes particulares
- Usar repositórios remotos para armazenar em cache pacotes centrais do Maven
- Usar repositórios virtuais para combinar vários repositórios upstream em uma configuração
Configuração e requisitos
Antes de clicar no botão Começar o Laboratório
Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é iniciado quando você clica em Começar o laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.
Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.
Confira os requisitos para concluir o laboratório:
- Acesso a um navegador de Internet padrão (recomendamos o Chrome).
Observação: para executar este laboratório, use o modo de navegação anônima ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.
- Tempo para concluir o laboratório – não se esqueça: depois de começar, não será possível pausar o laboratório.
Observação: não use seu projeto ou conta do Google Cloud neste laboratório para evitar cobranças extras na sua conta.
Como iniciar seu laboratório e fazer login no console do Google Cloud
-
Clique no botão Começar o laboratório. Se for preciso pagar, você verá um pop-up para selecionar a forma de pagamento.
No painel Detalhes do laboratório à esquerda, você vai encontrar o seguinte:
- O botão Abrir console do Google Cloud
- O tempo restante
- As credenciais temporárias que você vai usar neste laboratório
- Outras informações, se forem necessárias
-
Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.
O laboratório ativa os recursos e depois abre a página Fazer login em outra guia.
Dica: coloque as guias em janelas separadas lado a lado.
Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
-
Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.
{{{user_0.username | "Nome de usuário"}}}
Você também encontra o Nome de usuário no painel Detalhes do laboratório.
-
Clique em Avançar.
-
Copie a Senha abaixo e cole na caixa de diálogo de boas-vindas.
{{{user_0.password | "Senha"}}}
Você também encontra a Senha no painel Detalhes do laboratório.
-
Clique em Seguinte.
Importante: você precisa usar as credenciais fornecidas no laboratório, e não as da sua conta do Google Cloud.
Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
-
Acesse as próximas páginas:
- Aceite os Termos e Condições.
- Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
- Não se inscreva em testes sem custo financeiro.
Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.
Observação: clique em Menu de navegação no canto superior esquerdo para acessar uma lista de produtos e serviços do Google Cloud.
Ativar o Cloud Shell
O Cloud Shell é uma máquina virtual com várias ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud. O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.
- Clique em Ativar o Cloud Shell
na parte de cima do console do Google Cloud.
Depois de se conectar, você verá que sua conta já está autenticada e que o projeto está configurado com seu Project_ID, . A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
A gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.
- (Opcional) É possível listar o nome da conta ativa usando este comando:
gcloud auth list
- Clique em Autorizar.
Saída:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (Opcional) É possível listar o ID do projeto usando este comando:
gcloud config list project
Saída:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Observação: consulte a documentação completa da gcloud no Google Cloud no guia de visão geral da gcloud CLI.
Configuração do Workspace
- No Cloud Shell, defina o ID e o número do projeto. Salve-os como as 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)')
- Ative a API Artifact Registry:
gcloud services enable artifactregistry.googleapis.com
- Clone o repositório necessário para este laboratório e acesse o diretório
container-analysis:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
cd java-docs-samples/container-registry/container-analysis
Tarefa 1: Repositórios padrão
Os repositórios padrão oferecem uma maneira de armazenar seus pacotes particulares e compartilhá-los em outros aplicativos
- Execute o comando a seguir para criar um repositório Maven padrão 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 comando de autorização do Cloud Shell aparecer.
-
No console do Cloud, acesse Artifact Registry > Repositórios e observe o repositório Maven recém-criado chamado container-dev-java-repo. Se você clicar nele, vai ver que está vazio no momento.
-
Analise o repositório no terminal:
gcloud artifacts repositories describe container-dev-java-repo \
--location=us-central1
deve retornar uma resposta semelhante a esta
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'
Clique em Verificar meu progresso para conferir o objetivo.
Criar um repositório Maven padrão
Tarefa 2: Configurar o Maven para o Artifact Registry
- Execute o comando a seguir para mostrar a configuração do repositório para adicioná-la ao seu projeto Java:
gcloud artifacts print-settings mvn \
--repository=container-dev-java-repo \
--location=us-central1
O comando anterior retorna o XML a ser adicionado ao pom.xml dos seus projetos.
- A seção repositories especifica onde o Maven pode fazer o download de artefatos remotos para uso no projeto atual.
- A seção distributionManagement especifica para qual repositório remoto o projeto será enviado quando for implantado.
- A seção extensions adiciona o artifactregistry-maven-wagon, que ativa a camada de autenticação e transporte necessária para se conectar ao Artifact Registry
- Observação: as extensões podem existir em pom.xml ou extensions.xml. Nos casos em que o projeto depende de um projeto pai, essas dependências são acessadas antes do carregamento do restante das entradas no pom.xml. Para garantir que o pai tenha acesso à extensão, ela pode ser colocada em um arquivo extensions.xml, que é carregado antes do pom.xml, tornando-o disponível para as dependências do pai.
- Execute o seguinte comando no Cloud Shell para abrir o Editor no diretório atual:
cloudshell workspace .
- Copie as três seções e abra o arquivo
pom.xml no editor do Cloud Shell. Adicione as configurações retornadas na parte de baixo do arquivo, logo dentro da tag de fechamento project.
Exemplo: (os nomes dos seus projetos serão diferentes nos seus URLs)
...
<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>
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 -DskipTests
Se quiser executar esse comando de novo, aumente a versão no pom.xml.
- No console do Cloud, acesse Artifact Registry > Repositórios e clique em
container-dev-java-repo para verificar se o artefato binário hello-world está lá:
Tarefa 3: Repositórios remotos
Os repositórios remotos permitem armazenar em cache pacotes de terceiros para aumentar a confiabilidade e a segurança.
- Execute o seguinte comando para criar um repositório remoto para artefatos do 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
- No console do Cloud, acesse Artifact Registry > Repositórios. Clique em
maven-central-cache e observe que ele foi criado e está vazio no momento.
Clique em Verificar meu progresso para conferir o objetivo.
Criar um repositório remoto
- Analise o repositório no terminal:
gcloud artifacts repositories describe maven-central-cache \
--location=us-central1
- Execute o comando a seguir para mostrar a configuração do repositório para adicioná-la ao seu projeto Java:
gcloud artifacts print-settings mvn \
--repository=maven-central-cache \
--location=us-central1
-
Adicione a seção do repositório ao seu pom.xml. Não copie a tag externa <repositories> da saída.
-
Mude o ID do repositório recém-adicionado para "central" para garantir que cada entrada de repositório tenha um ID exclusivo.
Exemplo: (os nomes dos seus projetos serão diferentes nos seus URLs)
...
<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>
- Execute os comandos a seguir no terminal para criar um
extensions.xml para seu projeto. Use o mecanismo de extensões principais para garantir que o Maven possa resolver dependências de plug-ins ou principais do 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
- Execute o comando a seguir para compilar o aplicativo usando o repositório remoto:
rm -rf ~/.m2/repository
mvn compile
- No console do Cloud, acesse Artifact Registry > Repositórios. Clique em
maven-central-cache e verifique se os artefatos binários estão armazenados em cache lá:
Tarefa 4: Repositórios virtuais
Os repositórios virtuais atuam como uma interface para que vários repositórios sejam acessados por meio de uma única configuração. Isso simplifica a configuração do cliente para os consumidores dos seus artefatos e aumenta a segurança ao mitigar ataques de confusão de dependências.
- Criar um arquivo de política
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
- Criar o repositório virtual
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
Clique em Verificar meu progresso para conferir o objetivo.
Criar um repositório virtual
- Execute o comando a seguir para mostrar a configuração do repositório para adicioná-la ao seu projeto Java:
gcloud artifacts print-settings mvn \
--repository=virtual-maven-repo \
--location=us-central1
- Substitua toda a seção de repositórios no seu pom pela seção de repositórios virtuais da saída.
Exemplo: (os nomes dos seus projetos serão diferentes nos seus URLs)
...
<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>
Extrair dependências do repositório virtual
Como o repositório virtual é uma passagem e não armazena nenhum pacote real, para demonstrar claramente o processo, você vai excluir o repositório maven-central-cache que criou anteriormente e recriá-lo para começar novamente com um repositório vazio
- Execute os comandos a seguir para recriar o repositório 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
-
Você pode revisar o repositório vazio no console. Console do Cloud > Artifact Registry > Repositórios
-
Agora, exercite o repositório virtual criando seu projeto com o seguinte comando:
rm -rf ~/.m2/repository
mvn compile
- Revise os pacotes no console. Console do Cloud > Artifact Registry > Repositórios. Clique em
maven-central-cache e verifique se os artefatos binários foram configurados para serem extraídos do repositório virtual, mas foram extraídos do maven-central-cache.
Parabéns!
Você aprendeu a usar vários modos de repositório e as diversas finalidades que esses repositórios atendem.
Próximas etapas/Saiba mais
Treinamento e certificação do Google Cloud
Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, on demand e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.
Manual atualizado em 10 de setembro de 2024
Laboratório testado em 6 de dezembro de 2023
Copyright 2024 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de empresas e produtos podem ser marcas registradas das empresas a que estão associados.