Esta página descreve como criar repositórios remotos do Artifact Registry.
Os repositórios remotos armazenam artefactos das seguintes origens a montante:
- Repositórios padrão do Artifact Registry.
- Fontes externas, como as seguintes:
- CentOS
- Debian
- Docker Hub
- GitHub Container Registry (ghcr.io)
- Maven Central
- O índice de pacotes Python (PyPI)
Um repositório remoto funciona como um proxy para a origem a montante, para que tenha mais controlo sobre as suas dependências. Quando pede uma versão de um pacote pela primeira vez, o Artifact Registry transfere e armazena em cache o pacote no repositório remoto. Da próxima vez que pedir a mesma versão do pacote, o Artifact Registry disponibiliza a cópia em cache.
Se pedir um artefacto de uma origem a montante que não existe ou que não contém a versão especificada, o pedido falha.
Os outros modos de repositório são:
- Padrão: o modo de repositório predefinido. Carregar ou publicar artefactos, como pacotes privados, diretamente em repositórios padrão. Embora possa fazer a transferência diretamente de repositórios padrão individuais, o acesso a grupos de repositórios com um repositório virtual simplifica a configuração das ferramentas.
- Virtual: um repositório que funciona como um único ponto de acesso para vários repositórios a montante, incluindo repositórios remotos e padrão.
Para mais detalhes sobre como funcionam os repositórios remotos, consulte a Vista geral do repositório remoto.
Antes de começar
- Ative o Artifact Registry, incluindo a ativação da API Artifact Registry e a instalação da CLI Google Cloud.
- Opcional: configure as predefinições para os comandos da CLI gcloud.
- Se precisar de chaves de encriptação geridas pelo cliente (CMEK) para encriptar o conteúdo do repositório, crie e ative uma chave no Cloud KMS para o repositório.
Se quiser autenticar-se num repositório a montante, ative a API Secret Manager.
gcloud services enable secretmanager.googleapis.com \ --project=PROJECT_ID
Se o Artifact Registry estiver num perímetro de serviço do VPC Service Controls, ative a API Access Context Manager, se ainda não estiver ativada.
gcloud services enable accesscontextmanager.googleapis.com \ --project=PROJECT_ID
Se quiser definir um repositório do Artifact Registry como upstream, e este estiver num projeto diferente do seu repositório remoto, tem de conceder à conta de serviço do projeto do repositório remoto acesso ao projeto do repositório upstream antes de criar o repositório remoto.
Conceda a função de agente do serviço Os repositórios remotos usam o agente de serviço do Artifact Registry para fazer a autenticação nos repositórios upstream do Artifact Registry. Tem de conceder ao agente do serviço de repositório remoto acesso de leitura ao repositório a montante.
Para conceder ao agente de serviço do repositório remoto a função de agente de serviço do Artifact Registry no repositório a montante, execute o seguinte comando:
gcloud projects add-iam-policy-binding UPSTREAM_REPOSITORY \ --member serviceAccount:service-REMOTE_PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \ --location=REGION \ --project=UPSTREAM_PROJECT_ID \ --role roles/artifactregistry.serviceAgent
Substitua o seguinte:
UPSTREAM_REPOSITORY
é o ID do repositório a montante. Os repositórios upstream do Artifact Registry têm de ser repositórios no modo padrão.REMOTE_PROJECT_NUMBER
é o número do projeto do projeto Google Cloud para o seu repositório remoto.REMOTE_PROJECT_ID
é o ID do projeto do repositório remoto. Google CloudREGION
é a região na qual quer criar o seu repositório remoto.UPSTREAM_PROJECT_ID
é o ID do Google Cloud projeto com o repositório a montante.
Funções necessárias
Para receber as autorizações de que precisa para gerir repositórios, peça ao seu administrador que lhe conceda as seguintes funções de IAM:
-
Crie repositórios remotos e conceda acesso a repositórios individuais:
Administrador do Artifact Registry (
roles/artifactregistry.admin
) no projeto -
Guarde as credenciais do repositório upstream numa versão secreta:
Administrador do Secret Manager (
roles/secretmanager.admin
) no projeto -
Conceda acesso a origens a montante fora de um perímetro de serviço do VPC Service Controls:
Editor do Access Context Manager (
roles/accesscontextmanager.policyEditor
) no projeto, na pasta ou na organização onde a política de acesso é aplicada
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Crie um repositório remoto
Quando cria um repositório remoto, tem de configurar as seguintes definições, que não podem ser alteradas após a criação do repositório:
- Formato do artefacto.
- O modo do repositório foi definido como remoto.
- Origem a montante do repositório remoto.
- Localização do repositório.
- Encriptação com Google-owned and Google-managed encryption keys ou chaves de encriptação geridas pelo cliente. O Artifact Registry usa o Google-owned and Google-managed encryption keys por predefinição.
O Artifact Registry aplica restrições de políticas da organização que exigem a CMEK para encriptar recursos ou limitar as chaves do Cloud KMS que podem ser usadas para proteção CMEK.
consola
Abra a página Repositórios na Google Cloud consola.
Clique em Criar repositório.
Especifique o nome do repositório. Para cada localização do repositório num projeto, os nomes dos repositórios têm de ser exclusivos.
Na secção Formato, selecione o formato do repositório.
Na secção Modo de repositório, selecione Remoto.
Na secção Origem do repositório remoto, selecione uma das seguintes formas de introduzir o URL do repositório a montante:
- Selecione a origem predefinida de upstream apresentada para o seu tipo de formato.
- Selecione Personalizado para especificar o URL completo de um repositório público ou privado para formatos suportados.
- Selecione Repositório do Artifact Registry para selecionar um repositório do Artifact Registry padrão.
Se selecionou Personalizado, no campo Repositório personalizado, introduza o URL completo do repositório. Não é possível alterar o URL após a criação do repositório.
Para ver exemplos de alguns URLs upstream comuns, consulte o artigo Upstreams personalizados.
Se selecionou Repositório do Artifact Registry:
- No campo Repositório do Artifact Registry, introduza o nome completo do repositório que quer usar como upstream ou clique em Procurar para ver uma lista de repositórios aos quais tem acesso. Apenas são apresentados os repositórios com o mesmo formato que o seu repositório remoto.
- Clique no nome do repositório que quer usar como upstream.
- Clique em Selecionar.
Se selecionou uma das origens de dados predefinidas ou introduziu um URL completo através do botão Personalizado, no Modo de autenticação do repositório remoto, escolha uma das seguintes opções:
- Autenticado: para introduzir o seu nome de utilizador e segredo para autenticação no seu repositório a montante.
- Não autenticado: para ignorar a autenticação no repositório a montante.
Se selecionou Autenticado, introduza o seguinte:
- No campo Nome de utilizador, introduza o seu nome de utilizador para o repositório a montante.
- No campo Secret, introduza a versão do Secret onde guardou a palavra-passe do repositório a montante.
Pode editar estes valores após criar o repositório. Para mais informações sobre a autenticação em origens remotas de repositórios, consulte o artigo Configure a autenticação em origens remotas de repositórios.
Na secção Tipo de localização, escolha a localização do repositório:
Escolha o tipo de localização: região ou várias regiões. A lista de localizações é alterada para refletir a sua seleção.
Na lista Região ou Várias regiões, selecione uma localização.
Para obter informações sobre os tipos de localizações e as localizações suportadas, consulte o artigo Localizações de repositórios
Adicione uma descrição para o repositório. As descrições ajudam a identificar a finalidade do repositório e o tipo de artefactos que contém.
Não inclua dados confidenciais, uma vez que as descrições dos repositórios não são encriptadas.
Se quiser usar etiquetas para organizar os seus repositórios, clique em Adicionar etiqueta e introduza o par de chave-valor para a etiqueta. Pode adicionar, editar ou remover etiquetas depois de criar o repositório.
Na secção Encriptação, escolha o mecanismo de encriptação para o repositório.
- Google-managed encryption key - Encriptar o conteúdo do repositório com um Google-owned and Google-managed encryption key.
- Chave gerida pelo cliente: encriptar o conteúdo do repositório com uma chave que controla através do Cloud Key Management Service. Para ver instruções de configuração de chaves, consulte o artigo Configurar CMEK para repositórios.
Se quiser usar políticas de limpeza para eliminar artefactos não usados, na secção Políticas de limpeza:
- Selecione Execução de teste para testar a política antes de a aplicar.
- Clique em Adicionar política para adicionar uma política de conservação ou eliminação ao seu repositório.
- Atribua um nome descritivo à política de limpeza no campo Nome.
Na secção Tipo de política, selecione uma das seguintes opções:
- Eliminação condicional: elimina artefactos com base nas condições que definir.
- Manutenção condicional: mantém artefactos com base nas condições que definir.
Manter versões mais recentes: mantém um número definido das versões mais recentes por pacote.
Para mais detalhes sobre as políticas de limpeza, consulte o artigo Configure políticas de limpeza.
Na secção Análise de artefactos, escolha as definições de análise de vulnerabilidades:
Ativado: permite a análise neste repositório. A API Container Scanning tem de estar ativada no seu projeto.
Quando ativa a API Container Scanning, a faturação começa imediatamente. Depois de ativar a API Container Scanning num projeto, a análise de vulnerabilidades é ativada para todos os repositórios novos e existentes. Quando envia uma imagem para o Artifact Registry, esta é analisada automaticamente pela análise de artefactos.
Desativada: impede a análise neste repositório. Se a API Container Scanning estiver ativada no seu projeto, a análise continua noutros repositórios. Este repositório vai ser excluído.
Para mais informações sobre as opções de análise de vulnerabilidades, consulte o artigo Ative e desative a análise automática.
Clique em Criar.
O Artifact Registry cria o repositório e adiciona-o à lista de repositórios.
CLI gcloud
Para criar um repositório, execute o comando para o formato de repositório adequado:
Docker
gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
--project=PROJECT_ID \
--repository-format=docker \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
--disable-vulnerability-scanning \
--remote-docker-repo=UPSTREAM
Flags opcionais para autenticação no repositório a montante:
--remote-username=USERNAME
--remote-password-secret-version=SECRET_VERSION
Substitua o seguinte:
REMOTE-REPOSITORY-NAME
com o nome do repositório. Para cada localização do repositório num projeto, os nomes dos repositórios têm de ser exclusivos.PROJECT_ID
com o ID do projeto. Se esta flag for omitida, é usado o projeto atual ou predefinido.LOCATION
com a localização regional ou multirregional do repositório. Pode omitir esta sinalização se definir uma predefinição. Para ver uma lista de localizações suportadas, execute o comandogcloud artifacts locations list
.DESCRIPTION
com uma descrição opcional do repositório. Não inclua dados confidenciais, uma vez que as descrições dos repositórios não são encriptadas.REMOTE-REPOSITORY-DESCRIPTION
com uma descrição da configuração do repositório externo para este repositório remoto.USERNAME
opcionalmente, se estiver a usar a autenticação, com o seu nome de utilizador para autenticar no repositório a montante.SECRET_VERSION
opcionalmente, se estiver a usar a autenticação, com a versão secreta que contém a palavra-passe do repositório a montante.UPSTREAM
com o nome a montante predefinido, o caminho do repositório do Artifact Registry ou o URL definido pelo utilizador do repositório a montante.
Para repositórios upstream do Artifact Registry, formate o caminho do repositório de forma semelhante à seguinte:projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY
.
Para informações sobre as origens de dados predefinidas disponíveis e as origens de dados definidas pelo utilizador suportadas, consulte o artigo Formatos suportados.--disable-vulnerability-scanning
: é um sinalizador opcional que configura o seu repositório para desativar a análise de vulnerabilidades automática.--allow-vulnerability-scanning
: é um sinalizador opcional que configura o seu repositório para permitir a análise de vulnerabilidades automática. Para mais informações, consulte o artigo Ative ou desative a análise automática.
Por exemplo, o comando seguinte cria um repositório remoto denominado
my-repo
na região us-east1
no Google Cloud projeto
my-project
e pode autenticar-se no repositório a montante através do
nome de utilizador my-username
e da versão secreta
projects/my-project/secrets/my-secret/versions/1
.
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=docker \
--location=us-east1 \
--description="Remote Docker repository" \
--mode=remote-repository \
--remote-repo-config-desc="Docker Hub" \
--remote-username=my-username \
--remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
--remote-docker-repo=DOCKER-HUB
Para mais informações sobre a autenticação em repositórios upstream do Docker Hub, consulte o artigo Configure a autenticação de repositórios remotos no Docker Hub.
Maven
gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
--project=PROJECT_ID \
--repository-format=maven \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
--disable-vulnerability-scanning \
--remote-mvn-repo=UPSTREAM
Flags opcionais para autenticação no repositório a montante:
--remote-username=USERNAME
--remote-password-secret-version=SECRET_VERSION
Substitua o seguinte:
REMOTE-REPOSITORY-NAME
com o nome do repositório. Para cada localização do repositório num projeto, os nomes dos repositórios têm de ser exclusivos.PROJECT_ID
com o ID do projeto. Se esta flag for omitida, é usado o projeto atual ou predefinido.LOCATION
com a localização regional ou multirregional do repositório. Pode omitir esta sinalização se definir uma predefinição. Para ver uma lista de localizações suportadas, execute o comandogcloud artifacts locations list
.DESCRIPTION
com uma descrição opcional do repositório. Não inclua dados confidenciais, uma vez que as descrições dos repositórios não são encriptadas.REMOTE-REPOSITORY-DESCRIPTION
com uma descrição da configuração do repositório externo para este repositório remoto.USERNAME
opcionalmente, se estiver a usar a autenticação, com o seu nome de utilizador para autenticar no repositório a montante.SECRET_VERSION
opcionalmente, se estiver a usar a autenticação, com a versão secreta que contém a palavra-passe do repositório a montante.UPSTREAM
com o nome a montante predefinido, o caminho do repositório do Artifact Registry ou o URL definido pelo utilizador do repositório a montante.
Para repositórios upstream do Artifact Registry, formate o caminho do repositório de forma semelhante à seguinte:projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY
.
Para informações sobre as origens de dados predefinidas disponíveis e as origens de dados definidas pelo utilizador suportadas, consulte o artigo Formatos suportados.--disable-vulnerability-scanning
: é um sinalizador opcional que configura o seu repositório para desativar a análise de vulnerabilidades automática.--allow-vulnerability-scanning
: é um sinalizador opcional que configura o seu repositório para permitir a análise de vulnerabilidades automática. Para mais informações, consulte o artigo Ative ou desative a análise automática.
Por exemplo, o comando seguinte cria um repositório remoto denominado
my-repo
na região us-east1
no Google Cloud projeto
my-project
e pode autenticar-se no repositório a montante através do
nome de utilizador my-username
e da versão secreta
projects/my-project/secrets/my-secret/versions/1
.
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=maven \
--location=us-east1 \
--description="Remote Maven repository" \
--mode=remote-repository \
--remote-repo-config-desc="Maven Central" \
--remote-username=my-username \
--remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
--remote-mvn-repo=MAVEN-CENTRAL
npm
gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
--project=PROJECT_ID \
--repository-format=npm \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
--disable-vulnerability-scanning \
--remote-npm-repo=UPSTREAM
Flags opcionais para autenticação no repositório a montante:
--remote-username=USERNAME
--remote-password-secret-version=SECRET_VERSION
Substitua o seguinte:
REMOTE-REPOSITORY-NAME
com o nome do repositório. Para cada localização do repositório num projeto, os nomes dos repositórios têm de ser exclusivos.PROJECT_ID
com o ID do projeto. Se esta flag for omitida, é usado o projeto atual ou predefinido.LOCATION
com a localização regional ou multirregional do repositório. Pode omitir esta sinalização se definir uma predefinição. Para ver uma lista de localizações suportadas, execute o comandogcloud artifacts locations list
.DESCRIPTION
com uma descrição opcional do repositório. Não inclua dados confidenciais, uma vez que as descrições dos repositórios não são encriptadas.REMOTE-REPOSITORY-DESCRIPTION
com uma descrição da configuração do repositório externo para este repositório remoto.USERNAME
opcionalmente, se estiver a usar a autenticação, com o seu nome de utilizador para autenticar no repositório a montante.SECRET_VERSION
opcionalmente, se estiver a usar a autenticação, com a versão secreta que contém a palavra-passe do repositório a montante.UPSTREAM
com o nome a montante predefinido, o caminho do repositório do Artifact Registry ou o URL definido pelo utilizador do repositório a montante.
Para repositórios upstream do Artifact Registry, formate o caminho do repositório de forma semelhante à seguinte:projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY
.
Para informações sobre as origens de dados predefinidas disponíveis e as origens de dados definidas pelo utilizador suportadas, consulte o artigo Formatos suportados.--disable-vulnerability-scanning
: é um sinalizador opcional que configura o seu repositório para desativar a análise de vulnerabilidades automática.--allow-vulnerability-scanning
: é um sinalizador opcional que configura o seu repositório para permitir a análise de vulnerabilidades automática. Para mais informações, consulte o artigo Ative ou desative a análise automática.
Por exemplo, o comando seguinte cria um repositório remoto denominado
my-repo
na região us-east1
no Google Cloud projeto
my-project
e pode autenticar-se no repositório a montante através do
nome de utilizador my-username
e da versão secreta
projects/my-project/secrets/my-secret/versions/1
.
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=npm \
--location=us-east1 \
--description="Remote npm repository" \
--mode=remote-repository \
--remote-repo-config-desc="Public npm registry" \
--remote-username=my-username \
--remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
--remote-npm-repo=NPMJS
Python
gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
--project=PROJECT_ID \
--repository-format=python \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
--disable-vulnerability-scanning \
--remote-python-repo=UPSTREAM
Flags opcionais para autenticação no repositório a montante:
--remote-username=USERNAME
--remote-password-secret-version=SECRET_VERSION
Substitua o seguinte:
REMOTE-REPOSITORY-NAME
com o nome do repositório. Para cada localização do repositório num projeto, os nomes dos repositórios têm de ser exclusivos.PROJECT_ID
com o ID do projeto. Se esta flag for omitida, é usado o projeto atual ou predefinido.LOCATION
com a localização regional ou multirregional do repositório. Pode omitir esta sinalização se definir uma predefinição. Para ver uma lista de localizações suportadas, execute o comandogcloud artifacts locations list
.DESCRIPTION
com uma descrição opcional do repositório. Não inclua dados confidenciais, uma vez que as descrições dos repositórios não são encriptadas.REMOTE-REPOSITORY-DESCRIPTION
com uma descrição da configuração do repositório externo para este repositório remoto.USERNAME
opcionalmente, se estiver a usar a autenticação, com o seu nome de utilizador para autenticar no repositório a montante.SECRET_VERSION
opcionalmente, se estiver a usar a autenticação, com a versão secreta que contém a palavra-passe do repositório a montante.UPSTREAM
com o nome a montante predefinido, o caminho do repositório do Artifact Registry ou o URL definido pelo utilizador do repositório a montante.
Para repositórios upstream do Artifact Registry, formate o caminho do repositório de forma semelhante à seguinte:projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY
.
Para informações sobre as origens de dados predefinidas disponíveis e as origens de dados definidas pelo utilizador suportadas, consulte o artigo Formatos suportados.--disable-vulnerability-scanning
: é um sinalizador opcional que configura o seu repositório para desativar a análise de vulnerabilidades automática.--allow-vulnerability-scanning
: é um sinalizador opcional que configura o seu repositório para permitir a análise de vulnerabilidades automática. Para mais informações, consulte o artigo Ative ou desative a análise automática.
Por exemplo, o comando seguinte cria um repositório remoto denominado
my-repo
na região us-east1
no Google Cloud projeto
my-project
e pode autenticar-se no repositório a montante através do
nome de utilizador my-username
e da versão secreta
projects/my-project/secrets/my-secret/versions/1
.
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=python \
--location=us-east1 \
--description="Remote Python repository" \
--mode=remote-repository \
--remote-repo-config-desc="PyPI" \
--remote-username=my-username \
--remote-password-secret-version=projects/my-project/secrets/my-secret/versions/1 \
--remote-python-repo=PYPI
Apt (pré-visualização)
gcloud artifacts repositories create REMOTE_REPOSITORY_NAME \
--project=PROJECT_ID \
--repository-format=apt \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE_REPOSITORY_DESCRIPTION" \
--remote-apt-repo=APT_REPOSITORY_BASE \
--remote-apt-repo-path="APT_REPOSITORY_PATH"
Substitua o seguinte:
REMOTE_REPOSITORY_NAME
com o nome do repositório. Para cada localização do repositório num projeto, os nomes dos repositórios têm de ser exclusivos.PROJECT_ID
com o ID do projeto. Se esta flag for omitida, é usado o projeto atual ou predefinido.LOCATION
com a localização regional ou multirregional do repositório. Pode omitir esta sinalização se definir uma predefinição. Para ver uma lista de localizações suportadas, execute o comandogcloud artifacts locations list
.DESCRIPTION
com uma descrição opcional do repositório. Não inclua dados confidenciais, uma vez que as descrições dos repositórios não são encriptadas.REMOTE_REPOSITORY_DESCRIPTION
com uma descrição opcional da configuração do repositório externo para este repositório remoto.APT_REPOSITORY_BASE
com um dos nomes base do repositório suportados indicados nos upstream suportados do pacote do SO para repositórios remotos do Apt.APT_REPOSITORY_PATH
com o resto do URL do repositório a montante que quer colocar em cache no seu repositório remoto após a base do repositório.
Por exemplo, o comando seguinte cria um repositório remoto com o nome my-repo
para colocar em cache o repositório Debian buster na região us-east1
no projeto Google Cloud my-project
. O URL completo do repositório
a montante é http://deb.debian.org/debian/dists/buster
.
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=apt \
--location=us-east1 \
--description="Apt remote repository" \
--mode=remote-repository \
--remote-repo-config-desc="Debian buster distribution" \
--remote-apt-repo=DEBIAN \
--remote-apt-repo-path="debian/dists/buster"
Yum (pré-visualização)
gcloud artifacts repositories create REMOTE_REPOSITORY_NAME \
--project=PROJECT_ID \
--repository-format=yum \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE_REPOSITORY_DESCRIPTION" \
--remote-yum-repo=YUM_REPOSITORY_BASE \
--remote-yum-repo-path="YUM_REPOSITORY_PATH"
Substitua o seguinte:
REMOTE_REPOSITORY_NAME
com o nome do repositório. Para cada localização do repositório num projeto, os nomes dos repositórios têm de ser exclusivos.PROJECT_ID
com o ID do projeto. Se esta flag for omitida, é usado o projeto atual ou predefinido.LOCATION
com a localização regional ou multirregional do repositório. Pode omitir esta sinalização se definir uma predefinição. Para ver uma lista de localizações suportadas, execute o comandogcloud artifacts locations list
.DESCRIPTION
com uma descrição opcional do repositório. Não inclua dados confidenciais, uma vez que as descrições dos repositórios não são encriptadas.REMOTE_REPOSITORY_DESCRIPTION
com uma descrição opcional da configuração do repositório externo para este repositório remoto.YUM_REPOSITORY_BASE
com um dos nomes base do repositório suportados indicados nos upstream suportados do pacote do SO para repositórios remotos do Yum.YUM_REPOSITORY_PATH
com o resto do URL do repositório a montante que quer colocar em cache no seu repositório remoto após a base do repositório.
Por exemplo, o seguinte comando cria um repositório remoto para pacotes Yum
denominado my-repo
na região us-east1
no Google Cloud projeto
my-project
para o repositório a montante 9-stream/BaseOs/x86_64/os
. O URL completo do repositório é https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=yum \
--location=us-east1 \
--description="Yum remote repository" \
--mode=remote-repository \
--remote-repo-config-desc="CentOS 8 x86" \
--remote-yum-repo=CENTOS_STREAM \
--remote-yum-repo-path="9-stream/BaseOs/x86_64/os"
Ir
Os repositórios remotos do Go do Artifact Registry só suportam o upstream público https://proxy.golang
.
gcloud artifacts repositories create REMOTE-REPOSITORY-NAME \
--project=PROJECT_ID \
--repository-format=go \
--location=LOCATION \
--description="DESCRIPTION" \
--mode=remote-repository \
--remote-repo-config-desc="REMOTE-REPOSITORY-DESCRIPTION" \
--remote-go-repo=https://proxy.golang.org
Substitua o seguinte:
REMOTE-REPOSITORY-NAME
é o nome do repositório. Para cada localização do repositório num projeto, os nomes dos repositórios têm de ser exclusivos.PROJECT_ID
é o ID do projeto. Se esta flag for omitida, é usado o projeto atual ou predefinido.LOCATION
é a localização regional ou multirregional do repositório. Pode omitir esta sinalização se definir uma predefinição. Para ver uma lista de localizações suportadas, execute o comandogcloud artifacts locations list
.DESCRIPTION
é uma descrição opcional do repositório. Não inclua dados confidenciais, uma vez que as descrições dos repositórios não são encriptadas.REMOTE-REPOSITORY-DESCRIPTION
é uma descrição da configuração do repositório externo para este repositório remoto.
Por exemplo, o comando seguinte cria um repositório remoto com o nome
my-repo
na região us-east1
no projeto Google Cloud
my-project
.
gcloud artifacts repositories create my-repo \
--project=my-project \
--repository-format=go \
--location=us-east1 \
--description="Remote Go repository" \
--mode=remote-repository \
--remote-repo-config-desc="Go proxy" \
--remote-go-repo=https://proxy.golang.org
O Artifact Registry cria o seu repositório. Execute o seguinte comando para ver uma descrição do repositório:
gcloud artifacts repositories describe REMOTE_REPOSITORY_NAME \
--location=LOCATION
Terraform
Use o recurso google_artifact_registry_repository para criar repositórios.
É necessária a versão terraform-provider-google
5.0.0
ou mais recente.
Se for a primeira vez que usa o Terraform para o Google Cloud, consulte a página Introdução - Google Cloud no Website da HashiCorp.
O exemplo seguinte define o fornecedor e um repositório remoto com o nome do recurso do Terraform my-repo
.
Docker
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo" {
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "DESCRIPTION"
format = "docker"
kms_key_name = "KEY"
mode = "REMOTE_REPOSITORY"
remote_repository_config {
description = "CONFIG_DESCRIPTION"
docker_repository {
public_repository = "DOCKER_HUB"
}
}
cleanup_policy_dry_run = DRY_RUN_STATUS
cleanup_policies {
id = "POLICY_NAME"
action = "DELETE"
condition {
tag_state = "TAG_STATE"
tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
older_than = "TIME_SINCE_UPLOAD"
}
}
cleanup_policies {
id = "POLICY_NAME"
action = "KEEP"
condition {
tag_state = "TAG_STATE"
tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
}
}
cleanup_policies {
id = "POLICY_NAME"
action = "KEEP"
most_recent_versions {
package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
keep_count = KEEP_COUNT
}
}
}
Onde
PROJECT-ID
é o Google Cloud ID do projeto.LOCATION
é a localização do repositório.REPOSITORY_ID
é o ID do repositório.DESCRIPTION
é a descrição opcional do repositório. Não inclua dados confidenciais, uma vez que as descrições dos repositórios não são encriptadas.KEY
é o nome da chave do Cloud Key Management Service, se estiver a usar chaves de encriptação geridas pelo cliente (CMEK) para encriptação. Omita este argumento para usar a predefinição, as chaves de encriptação geridas pela Google.CONFIG_DESCRIPTION
é a descrição opcional da origem remota.- O
DRY_RUN_STATUS
determina se as políticas de limpeza eliminam artefactos ou apenas registam os artefactos que seriam eliminados se definissem políticas de limpeza no repositório. Omita se não quiser adicionar políticas de limpeza ao repositório. *true
: define as políticas para serem executadas no modo de execução de ensaio. Não são eliminados artefactos no modo de teste. *false
: aplica as políticas de limpeza. Os artefactos são eliminados ou mantidos consoante as políticas. Para mais informações sobre as políticas de limpeza, consulte o artigo Configure políticas de limpeza.POLICY_NAME
é o nome da política de limpeza.TAG_STATE
é o estado da etiqueta ao qual aplicar a política. Os valores sãotagged
,untagged
eany
.any
aplica-se a artefactos etiquetados e não etiquetados. Se um repositório tiver etiquetas imutáveis ativadas, não é possível eliminar os artefactos etiquetados.TAG_PREFIX
eTAG_PREFIX_N
são prefixos de etiquetas aos quais a política se aplica.PKG_PREFIX
ePKG_PREFIX_N
são prefixos de pacotes para aplicar a política.TIME_SINCE_UPLOAD
é o tempo desde que uma versão do artefacto foi carregada para o repositório, especificado como uma duração. Pode especificar durações de segundos, minutos, horas ou dias anexandos
,m
,h
oud
, respetivamente.KEEP_COUNT
é o número de versões por pacote de um artefacto a manter no seu repositório.
Maven
Se não especificar uma política de versão, o Artifact Registry cria um repositório Maven que armazena versões de lançamento e instantâneos de pacotes por predefinição.
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo" {
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "DESCRIPTION"
format = "maven"
kms_key_name = "KEY"
mode = "REMOTE_REPOSITORY"
remote_repository_config {
description = "CONFIG_DESCRIPTION"
maven_repository {
public_repository = "MAVEN_CENTRAL"
}
}
cleanup_policy_dry_run = DRY_RUN_STATUS
cleanup_policies {
id = "POLICY_NAME"
action = "DELETE"
condition {
tag_state = "TAG_STATE"
tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
older_than = "TIME_SINCE_UPLOAD"
}
}
cleanup_policies {
id = "POLICY_NAME"
action = "KEEP"
condition {
tag_state = "TAG_STATE"
tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
}
}
cleanup_policies {
id = "POLICY_NAME"
action = "KEEP"
most_recent_versions {
package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
keep_count = KEEP_COUNT
}
}
}
Onde
PROJECT-ID
é o Google Cloud ID do projeto.LOCATION
é a localização do repositório.REPOSITORY_ID
é o ID do repositório.DESCRIPTION
é a descrição opcional do repositório. Não inclua dados confidenciais, uma vez que as descrições dos repositórios não são encriptadas.KEY
é o nome da chave do Cloud Key Management Service, se estiver a usar chaves de encriptação geridas pelo cliente (CMEK) para encriptação. Omita este argumento para usar a predefinição, as chaves de encriptação geridas pela Google.CONFIG_DESCRIPTION
é a descrição opcional da origem remota.- O
DRY_RUN_STATUS
determina se as políticas de limpeza eliminam artefactos ou apenas registam os artefactos que seriam eliminados se definissem políticas de limpeza no repositório. Omita se não quiser adicionar políticas de limpeza ao repositório. *true
: define as políticas para serem executadas no modo de execução de ensaio. Não são eliminados artefactos no modo de teste. *false
: aplica as políticas de limpeza. Os artefactos são eliminados ou mantidos consoante as políticas. Para mais informações sobre as políticas de limpeza, consulte o artigo Configure políticas de limpeza.POLICY_NAME
é o nome da política de limpeza.TAG_STATE
é o estado da etiqueta ao qual aplicar a política. Os valores sãotagged
,untagged
eany
.any
aplica-se a artefactos etiquetados e não etiquetados. Se um repositório tiver etiquetas imutáveis ativadas, não é possível eliminar os artefactos etiquetados.TAG_PREFIX
eTAG_PREFIX_N
são prefixos de etiquetas aos quais a política se aplica.PKG_PREFIX
ePKG_PREFIX_N
são prefixos de pacotes para aplicar a política.TIME_SINCE_UPLOAD
é o tempo desde que uma versão do artefacto foi carregada para o repositório, especificado como uma duração. Pode especificar durações de segundos, minutos, horas ou dias anexandos
,m
,h
oud
, respetivamente.KEEP_COUNT
é o número de versões por pacote de um artefacto a manter no seu repositório.
Para armazenar versões de instantâneos e lançamentos em repositórios diferentes, especifique uma política de versões para o repositório através de um bloco maven_config
. Este bloco suporta as seguintes definições:
version_policy
define a política de versões com um dos seguintes valores:VERSION_POLICY_UNSPECIFIED
: armazene o instantâneo e publique pacotes. Esta é a predefinição.- RELEASE: apenas pacotes de lançamento na loja.
- SNAPSHOT: armazena apenas pacotes de capturas instantâneas.
allow_snapshot_overwrites
configura um repositório com uma política de versõesSNAPSHOT
para aceitar instantâneos não únicos que substituam as versões existentes no repositório.
O exemplo seguinte define um repositório Maven com uma política de versão de lançamento.
provider "google" {
project = "my-project"
}
resource "google_artifact_registry_repository" "my-repo" {
provider = google-beta
location = "LOCATION"
repository_id = "my-repo"
description = "Maven repository"
format = "MAVEN"
mode = "REMOTE_REPOSITORY"
maven_config {
version_policy = "RELEASE"
}
}
npm
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo" {
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "DESCRIPTION"
format = "npm"
kms_key_name = "KEY"
mode = "REMOTE_REPOSITORY"
remote_repository_config {
description = "CONFIG_DESCRIPTION"
npm_repository {
public_repository = "NPMJS"
}
}
cleanup_policy_dry_run = DRY_RUN_STATUS
cleanup_policies {
id = "POLICY_NAME"
action = "DELETE"
condition {
tag_state = "TAG_STATE"
tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
older_than = "TIME_SINCE_UPLOAD"
}
}
cleanup_policies {
id = "POLICY_NAME"
action = "KEEP"
condition {
tag_state = "TAG_STATE"
tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
}
}
cleanup_policies {
id = "POLICY_NAME"
action = "KEEP"
most_recent_versions {
package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
keep_count = KEEP_COUNT
}
}
}
Onde
PROJECT-ID
é o Google Cloud ID do projeto.LOCATION
é a localização do repositório.REPOSITORY_ID
é o ID do repositório.DESCRIPTION
é a descrição opcional do repositório. Não inclua dados confidenciais, uma vez que as descrições dos repositórios não são encriptadas.KEY
é o nome da chave do Cloud Key Management Service, se estiver a usar chaves de encriptação geridas pelo cliente (CMEK) para encriptação. Omita este argumento para usar a predefinição, as chaves de encriptação geridas pela Google.CONFIG_DESCRIPTION
é a descrição opcional da origem remota.- O
DRY_RUN_STATUS
determina se as políticas de limpeza eliminam artefactos ou apenas registam os artefactos que seriam eliminados se definissem políticas de limpeza no repositório. Omita se não quiser adicionar políticas de limpeza ao repositório. *true
: define as políticas para serem executadas no modo de execução de ensaio. Não são eliminados artefactos no modo de teste. *false
: aplica as políticas de limpeza. Os artefactos são eliminados ou mantidos consoante as políticas. Para mais informações sobre as políticas de limpeza, consulte o artigo Configure políticas de limpeza.POLICY_NAME
é o nome da política de limpeza.TAG_STATE
é o estado da etiqueta ao qual aplicar a política. Os valores sãotagged
,untagged
eany
.any
aplica-se a artefactos etiquetados e não etiquetados. Se um repositório tiver etiquetas imutáveis ativadas, não é possível eliminar os artefactos etiquetados.TAG_PREFIX
eTAG_PREFIX_N
são prefixos de etiquetas aos quais a política se aplica.PKG_PREFIX
ePKG_PREFIX_N
são prefixos de pacotes para aplicar a política.TIME_SINCE_UPLOAD
é o tempo desde que uma versão do artefacto foi carregada para o repositório, especificado como uma duração. Pode especificar durações de segundos, minutos, horas ou dias anexandos
,m
,h
oud
, respetivamente.KEEP_COUNT
é o número de versões por pacote de um artefacto a manter no seu repositório.
Python
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo" {
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "DESCRIPTION"
format = "python"
kms_key_name = "KEY"
mode = "REMOTE_REPOSITORY"
remote_repository_config {
description = "CONFIG_DESCRIPTION"
python_repository {
public_repository = "PYPI"
}
}
cleanup_policy_dry_run = DRY_RUN_STATUS
cleanup_policies {
id = "POLICY_NAME"
action = "DELETE"
condition {
tag_state = "TAG_STATE"
tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
older_than = "TIME_SINCE_UPLOAD"
}
}
cleanup_policies {
id = "POLICY_NAME"
action = "KEEP"
condition {
tag_state = "TAG_STATE"
tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"]
package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
}
}
cleanup_policies {
id = "POLICY_NAME"
action = "KEEP"
most_recent_versions {
package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"]
keep_count = KEEP_COUNT
}
}
}
Onde
PROJECT-ID
é o Google Cloud ID do projeto.LOCATION
é a localização do repositório.REPOSITORY_ID
é o ID do repositório.DESCRIPTION
é a descrição opcional do repositório. Não inclua dados confidenciais, uma vez que as descrições dos repositórios não são encriptadas.KEY
é o nome da chave do Cloud Key Management Service, se estiver a usar chaves de encriptação geridas pelo cliente (CMEK) para encriptação. Omita este argumento para usar a predefinição, as chaves de encriptação geridas pela Google.CONFIG_DESCRIPTION
é a descrição opcional da origem remota.- O
DRY_RUN_STATUS
determina se as políticas de limpeza eliminam artefactos ou apenas registam os artefactos que seriam eliminados se definissem políticas de limpeza no repositório. Omita se não quiser adicionar políticas de limpeza ao repositório. *true
: define as políticas para serem executadas no modo de execução de ensaio. Não são eliminados artefactos no modo de teste. *false
: aplica as políticas de limpeza. Os artefactos são eliminados ou mantidos consoante as políticas. Para mais informações sobre as políticas de limpeza, consulte o artigo Configure políticas de limpeza.POLICY_NAME
é o nome da política de limpeza.TAG_STATE
é o estado da etiqueta ao qual aplicar a política. Os valores sãotagged
,untagged
eany
.any
aplica-se a artefactos etiquetados e não etiquetados. Se um repositório tiver etiquetas imutáveis ativadas, não é possível eliminar os artefactos etiquetados.TAG_PREFIX
eTAG_PREFIX_N
são prefixos de etiquetas aos quais a política se aplica.PKG_PREFIX
ePKG_PREFIX_N
são prefixos de pacotes para aplicar a política.TIME_SINCE_UPLOAD
é o tempo desde que uma versão do artefacto foi carregada para o repositório, especificado como uma duração. Pode especificar durações de segundos, minutos, horas ou dias anexandos
,m
,h
oud
, respetivamente.KEEP_COUNT
é o número de versões por pacote de um artefacto a manter no seu repositório.
Apt (pré-visualização)
provider "google" {
project = "PROJECT_ID"
}
resource "google_artifact_registry_repository" "my-repo" {
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "DESCRIPTION"
format = "APT"
mode = "REMOTE_REPOSITORY"
remote_repository_config {
description = "CONFIG_DESCRIPTION"
apt_repository {
public_repository {
repository_base = "REPOSITORY_BASE"
repository_path = "REPOSITORY_PATH"
}
}
}
}
Onde
- PROJECT-ID é o Google Cloud ID do projeto.
- LOCATION é a localização do repositório.
- REPOSITORY_ID é o ID do repositório.
- DESCRIPTION é a descrição opcional do repositório. Não inclua dados confidenciais, uma vez que as descrições dos repositórios não são encriptadas.
- CONFIG_DESCRIPTION é a descrição opcional da origem remota.
- REPOSITORY_BASE é a base do repositório público predefinido para o Apt.
Os valores possíveis são
DEBIAN
eUBUNTU
. - REPOSITORY_PATH é o repositório específico da base. Por
exemplo
debian/dists/buster
.
Yum (pré-visualização)
provider "google" {
project = "PROJECT_ID"
}
resource "google_artifact_registry_repository" "my-repo" {
location = "LOCATION"
repository_id = "REPOSITORY_ID"
description = "DESCRIPTION"
format = "YUM"
mode = "REMOTE_REPOSITORY"
remote_repository_config {
description = "CONFIG_DESCRIPTION"
yum_repository {
public_repository {
repository_base = "REPOSITORY_BASE"
repository_path = "REPOSITORY_PATH"
}
}
}
}
Onde
- PROJECT-ID é o Google Cloud ID do projeto.
- LOCATION é a localização do repositório.
- REPOSITORY_ID é o ID do repositório.
- DESCRIPTION é a descrição opcional do repositório. Não inclua dados confidenciais, uma vez que as descrições dos repositórios não são encriptadas.
- CONFIG_DESCRIPTION é a descrição opcional da origem remota.
- REPOSITORY_BASE é a base do repositório público predefinido para o Yum.
Os valores possíveis são
CENTOS
,CENTOS_DEBUG
,CENTOS_VAULT
,CENTOS_STREAM
,ROCKY
eEPEL
. - REPOSITORY_PATH é o repositório específico da base. Por
exemplo
"centos/8-stream/BaseOS/x86_64/os
.
O Artifact Registry cria o seu repositório. Execute o seguinte comando para ver uma descrição do repositório:
gcloud artifacts repositories describe REPOSITORY \
--location=LOCATION
Depois de criar o repositório:
- Conceda acesso ao repositório.
- Opcional: configure políticas de limpeza para eliminar artefactos não usados.
- Configure o Docker, os gestores de pacotes e outros clientes de terceiros para autenticar em repositórios.
- Configure repositórios remotos do Artifact Registry para autenticar nas respetivas origens a montante.
- Imagens de contentores: configure a autenticação do repositório remoto no Docker Hub
- Pacotes de idiomas:
- Upstreams personalizados definidos pelo utilizador: configure a autenticação para upstreams de repositórios remotos
Edite as descrições dos repositórios
Pode alterar a descrição do repositório a partir da Google Cloud consola ou da CLI gcloud.
Consola
Abra a página Repositórios na Google Cloud consola.
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
Edite a descrição do repositório e, de seguida, clique em Guardar.
gcloud
Para atualizar a descrição do repositório, execute o comando:
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT \
--location=LOCATION \
--description="DESCRIPTION"
Substitua o seguinte:
REPOSITORY
: o nome do repositório. Se configurou um repositório predefinido, pode omitir esta flag para usar a predefinição.PROJECT
: o Google Cloud ID do projeto. Se esta flag for omitida, é usado o projeto atual ou predefinido.-
LOCATION
é a localização regional ou multirregional do repositório. Use esta flag para ver repositórios numa localização específica. Se tiver configurado uma localização predefinida, pode omitir esta flag para usar a predefinição. DESCRIPTION
: uma descrição do repositório.
Acesso a origens a montante num perímetro de serviço
Os serviços num perímetro de serviço dos VPC Service Controls têm acesso restrito a recursos fora do perímetro.
Pode permitir ou recusar o acesso a origens a montante numGoogle Cloud projeto e localização especificados.
Por predefinição, o Artifact Registry nega o acesso a origens upstream se não tiver concedido acesso explicitamente.
Para o Artifact Registry, a função necessária é a de administrador do Artifact Registry (roles/artifactregistry.admin
).
Veja as definições das origens a montante
Para ver a configuração de uma combinação específica de projeto e localização, execute o seguinte comando:
gcloud artifacts vpcsc-config describe \
--project=PROJECT_ID \
--location=LOCATION
Por exemplo, use o seguinte comando para ver as definições dos repositórios remotos
em us-east1
no projeto my-project
:
gcloud artifacts vpcsc-config describe \
--project=my-project \
--location=us-east1
Permita o acesso a fontes a montante
Para permitir o acesso a origens a montante numa localização especificada, execute o comando:
gcloud artifacts vpcsc-config allow \
--project=PROJECT_ID \
--location=LOCATION
Por exemplo, use o seguinte comando para permitir que todos os repositórios remotos em
us-east1
no projeto my-project
acedam às respetivas origens a montante fora
do perímetro:
gcloud artifacts vpcsc-config allow \
--project=my-project \
--location=us-east1
Negue o acesso a fontes a montante
Quando nega o acesso a origens a montante, os artefactos em cache existentes nos repositórios remotos continuam disponíveis.
Para negar o acesso a origens a montante numa localização especificada, execute o comando:
gcloud artifacts vpcsc-config deny \
--project=PROJECT_ID \
--location=LOCATION
Por exemplo, use o seguinte comando para bloquear o acesso a origens a montante fora do perímetro para todos os repositórios remotos em us-west1
no projeto my-project
:
gcloud artifacts vpcsc-config deny \
--project=my-project \
--location=us-west1
O que se segue?
- Crie um repositório remoto do Docker Hub.
- Saiba mais acerca dos repositórios remotos do Artifact Registry.
- Configure a autenticação do repositório remoto no Docker Hub.