Armazenar módulos Go no Artifact Registry
Configure um repositório particular em Go do Artifact Registry, faça upload de um módulo para ele e use o módulo como dependência.
Antes de começar
-
Faça login na sua Conta do Google.
Se você ainda não tiver uma, inscreva-se agora.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative a API Artifact Registry.
- Instale a CLI do Google Cloud.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative a API Artifact Registry.
- Instale a CLI do Google Cloud.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
- Instale o Go 1.15 ou mais recente.
- Instale o complemento
package-go-module
da CLI gcloud:
gcloud components install package-go-module
Criar um repositório
Para criar e configurar um novo repositório:
Execute o comando abaixo para criar um novo repositório.
gcloud artifacts repositories create REPOSITORY \ --repository-format=go \ --location=LOCATION \ --description=DESCRIPTION
Substitua:
- REPOSITORY é o nome do repositório. Para cada local de repositório em um projeto, os nomes dos repositórios precisam ser exclusivos.
- LOCATION é o local regional ou multirregional do repositório. É possível omitir essa sinalização se definir um default.
Para ver uma lista de locais compatíveis, execute o comando
gcloud artifacts locations list
. - DESCRIPTION é uma descrição opcional do repositório. Não inclua dados sensíveis, porque as descrições do repositório não são criptografadas.
Execute o comando a seguir para ver os detalhes do repositório.
gcloud artifacts repositories describe --location=LOCATION REPOSITORY
A saída será assim:
Encryption: Google-managed key Repository Size: 0.000MB createTime: '2022-06-03T20:20:01.644813Z' format: GO mode: STANDARD_REPOSITORY name: projects/my-project/locations/us-west1/repositories/my-repo updateTime: '2022-06-03T20:20:01.644813Z'
Definir padrões para comandos gcloud
É possível simplificar os comandos gcloud CLI
definindo os padrões
para os valores de projeto, repositório e local. Depois que os padrões forem configurados,
as tags --project
, --location
e --repository
não serão mais necessárias.
Empacotar e fazer upload de um módulo do Go
O complemento package-go-module
da CLI gcloud empacota os módulos Go,
permitindo que você controle a versão e faça upload para o Artifact Registry usando o comando
gcloud
.
Criar um módulo Go
Primeiro, crie um módulo Go simples para fazer upload ao seu repositório.
No seu diretório principal, crie um diretório chamado "foo" para seu módulo
mkdir foo
Mude para o diretório do seu módulo e execute
go mod init
para criar um arquivo go.mod para o módulo.cd foo \ go mod init example.com/foo
Substitua
example.com/foo
pelo caminho do módulo. Consulte a Referência de módulos Go para mais informações.Crie um arquivo
foo.go
no diretório foo com o seguinte conteúdo:package foo const HelloWorld = "Hello World!"
Empacotar e fazer upload do módulo
Empacote e faça upload do módulo para seu repositório:
gcloud artifacts go upload --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION \ --module-path=example.com/foo \ --version=VERSION \ --source=SOURCE_LOCATION
Substitua:
- PROJECT pelo ID do projeto do Google Cloud.
- REPOSITORY pelo nome do repositório em que o pacote está armazenado.
- LOCATION pelo local regional ou multirregional do repositório.
example.com/foo
pelo caminho do módulo. Consulte a Referência de módulos Go para mais informações.- VERSION pela
versão semântica
do módulo no formato
vX.Y.Z
, em queX
é a versão principal,Y
é a versão secundária eZ
é a versão do patch. - SOURCE_LOCATION pelo caminho para o diretório raiz do módulo Go. Se você omitir a sinalização
--source
, o padrão será o diretório atual.
O upload do módulo é feito no Artifact Registry.
Para mais informações sobre a criação de módulos do Go, consulte este tutorial.
Listar módulos
Execute o comando a seguir para inspecionar o módulo do Go enviado no projeto, no repositório e no local padrão quando os valores padrão estiverem configurados:
gcloud artifacts packages list
A saída será assim:
Listing items under project my-project, location us-west1, repository my-repo. PACKAGE CREATE_TIME UPDATE_TIME example.com/foo 2022-06-03T20:43:39 2022-06-20T20:37:40
Mais detalhes da versão do módulo
Execute o seguinte comando para exibir as versões do seu módulo no projeto, no repositório e no local padrão quando os valores padrão estiverem configurados:
gcloud artifacts versions list --package=MODULE_PATH
A saída será assim:
Listing items under project my-project, location us-west1, repository my-repo, package example.com/foo. VERSION DESCRIPTION CREATE_TIME UPDATE_TIME v0.1.0 2022-06-03T20:43:39 2022-06-03T20:43:39 v0.1.1 2022-06-20T20:37:40 2022-06-20T20:37:40
Fazer o download de módulos
Para importar módulos armazenados no Artifact Registry, é necessário instruir o Go a procurar dependências do Artifact Registry e ignorar o banco de dados de soma de verificação.
Configurar o ambiente Go
Instrua o Go a fazer o download de módulos do Artifact Registry, do proxy de módulo público do Go e da origem na ordem:
export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
Substitua:
- LOCATION é o local regional ou multirregional do repositório.
- PROJECT é o ID do projeto do Google Cloud.
- REPOSITORY é o nome do repositório em que o pacote está armazenado.
Exclua seu módulo da verificação usando o banco de dados público de soma de verificação:
export GONOSUMDB=MODULE_PATH_REGEX
Substitua MODULE_PATH_REGEX pelo caminho do módulo ou um regex se quiser excluir vários módulos.
Para impedir que o módulo
example.com/foo
seja verificado usando o banco de dados público de soma de verificação, execute o seguinte comando:export GONOSUMDB=example.com/foo
Se você quiser que todos os módulos com caminhos de módulo que começam em
example.com
sejam excluídos da verificação usando o banco de dados público de soma de verificação, execute o seguinte comando:export GONOSUMDB=example.com/*
Autenticar no Artifact Registry
Ao fazer o download de módulos Go empacotados para usar como dependências do
Artifact Registry, o binário do Go usa as credenciais no arquivo .netrc
para se autenticar no Artifact Registry. Para simplificar o processo de
autenticação, use o auxiliar de credenciais do Go para atualizar os tokens no
arquivo .netrc
para autenticação no Artifact Registry.
O Artifact Registry é compatível com os seguintes métodos de autenticação.
- Credenciais de curta duração (recomendado)
- Use a ferramenta auxiliar de credencial do Go
do Artifact Registry para atualizar os tokens de autenticação no arquivo
.netrc
. - Usar uma chave de conta de serviço
- Use esta opção quando não for possível usar credenciais no seu ambiente para
autenticação. Adicione a chave da conta de serviço não criptografada ao arquivo
.netrc
.
Adicionar o auxiliar de credenciais do Go a GONOPROXY
Antes de usar o auxiliar de credencial do Go, ele precisa ser adicionado à lista de GONOPROXY
para forçar o Go a fazer o download dele diretamente no GitHub. Se você tem outros módulos que
quer que sejam transferidos por download diretamente da origem, adicione-os em uma lista separada por vírgulas,
conforme mostrado neste exemplo:
export GONOPROXY=MODULE_PATH1, MODULE_PATH2
Em que MODULE_PATH1 e MODULE_PATH2 são caminhos de módulo de módulos para download da origem.
Para adicionar o auxiliar de credenciais do Go à lista GONOPROXY
e executá-lo para configurar as
credenciais:
Adicionar o auxiliar de credenciais do Go ao
GONOPROXY
export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
Execute o seguinte comando para adicionar as credenciais do Artifact Registry ao arquivo
.netrc
com a ferramenta de pacote do módulo Go:GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \ add-locations --locations=LOCATION \ [--json_key=path/to/service/account/key.json]
Em que LOCATION é o local regional ou multirregional do seu repositório. Para adicionar vários locais, insira-os como uma lista separada por vírgulas.
O auxiliar de credenciais do Go adiciona configurações ao arquivo
.netrc
para autenticação no Artifact Registry. Se você transmitir a sinalização--json_key
, a chave será adicionada ao arquivo.netrc
para autenticação por senha.
Usar o módulo como dependência
Se você estiver usando credenciais de curta duração para autenticar no Artifact Registry, precisará atualizar seu token OAuth executando o seguinte comando:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 refresh
No diretório principal, crie um diretório chamado "bar"
mkdir bar
Mude os diretórios para o diretório do módulo e execute
go mod init
para criar um arquivogo.mod
para seu pacote.cd bar \ go mod init example.com/bar
Substitua
example.com/bar
pelo caminho do módulo. Consulte a Referência de módulos Go para mais informações.Para exigir a versão do foo armazenada no Artifact Registry, edite o arquivo
go.mod
para que fique assim:module example.com/bar go 1.19 require example.com/foo v0.1.0
Substitua:
example.com/foo
é o caminho do módulo obrigatório.v0.1.0
é a versão armazenada no Artifact Registry.
Crie um arquivo
main.go
no diretóriobar
com o seguinte conteúdo:package main import ( "fmt" foo "example.com/foo" ) func main() { fmt.Println(foo.HelloWorld) }
Execute go mod tidy para fazer o download das dependências, incluindo o pacote foo:
go mod tidy
Execute o módulo da barra:
go run .
A saída será assim:
Hello World!
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, siga estas etapas. Antes de remover o repositório, verifique se os módulos que você quer manter estão disponíveis em outro local.
Para excluir o repositório:
gcloud artifacts repositories delete \ --location=LOCATION \ --project=PROJECT \ REPOSITORY
Substitua:
- LOCATION pelo local regional ou multirregional do repositório.
- PROJECT pelo ID do projeto do Google Cloud.
- REPOSITORY pelo nome do repositório.
Se você quiser remover as configurações padrão de repositório e localização definidas para a configuração ativa da gcloud, execute os seguintes comandos:
gcloud config unset artifacts/repository gcloud config unset artifacts/location
A seguir
- Saiba mais sobre como configurar a autenticação.
- Saiba mais sobre como gerenciar repositórios.
- Saiba mais sobre como gerenciar módulos Go.
- Leia nossos recursos sobre DevOps e explore o programa de pesquisa Pesquisa e avaliação de DevOps.