Armazenar módulos Go no Artifact Registry
Configurar um repositório Go privado do Artifact Registry e fazer upload de um módulo a ele e usar 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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Instale o Go 1.15 ou posterior.
- Instale o complemento da CLI gcloud
package-go-module
:
gcloud components install package-go-module
Crie 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 é regional ou multirregional.
local
para o repositório. É possível omitir essa sinalização se definir
default.
Para ver uma lista de locais compatíveis, execute o comando
gcloud artifacts locations list
: - DESCRIPTION é uma descrição opcional do repositório. O que não fazer incluir dados sensíveis, já que as descrições dos repositórios 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
Para simplificar os comandos gcloud CLI
,
Como configurar os padrões
para valores de projeto, repositório e local. Quando os padrões forem configurados,
As tags --project
, --location
e --repository
não são necessárias.
Empacotar e fazer upload de um módulo Go
O complemento package-go-module
da CLI gcloud empacota os módulos Go,
o que permite criar versões e fazer upload para o Artifact Registry usando o gcloud
kubectl.
Criar um módulo Go
Primeiro, crie um módulo Go simples para fazer upload para seu repositório.
No seu diretório inicial, crie um diretório chamado "foo" para seu módulo
mkdir foo
Mude os diretórios para o diretório do módulo e execute
go mod init
para criar um arquivo go.mod para seu módulo.cd foo \ go mod init example.com/foo
Substitua
example.com/foo
pelo caminho do módulo. Consulte a Referência dos 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 de projeto do Google Cloud;
- REPOSITORY pelo nome do repositório em que o é armazenado.
- LOCATION com o modelo regional ou multirregional local do repositório.
example.com/foo
pelo caminho do módulo. Consulte a Referência dos módulos Go para mais informações.- VERSION com o
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 de patch. - SOURCE_LOCATION pelo caminho para o diretório raiz do Go.
mais tarde neste módulo. Se você omitir a flag
--source
, o padrão será o diretório atual.
O upload do módulo é feito no Artifact Registry.
Para mais informações sobre como criar módulos Go, consulte este tutorial.
Listar módulos
Execute o comando a seguir para inspecionar o módulo Go enviado no arquivo projeto, repositório e local quando os valores padrão forem 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 comando a seguir para exibir as versões do seu módulo no formato projeto, repositório e local em que valores padrão são 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 to procure dependências do Artifact Registry e ignore a banco de dados de soma de verificação.
Configurar o ambiente Go
Instrua Go para fazer o download de módulos do Artifact Registry, o aplicativo Go público proxy do módulo e, em seguida, source nessa ordem:
export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
Substitua:
- LOCATION é regional ou multirregional. local do repositório.
- PROJECT é seu Google Cloud ID do projeto.
- REPOSITORY é o nome do repositório em que o é armazenado.
Evite que seu módulo seja verificado usando o banco de dados de checksum público:
export GONOSUMDB=MODULE_PATH_REGEX
Substitua MODULE_PATH_REGEX pelo caminho do módulo ou por um regex. se você quiser excluir vários módulos.
Para impedir que o módulo
example.com/foo
seja verificado usando o comando checksum, execute o seguinte comando:export GONOSUMDB=example.com/foo
Se você quiser que todos os módulos com caminhos de módulo começando em
example.com
sejam não incluído na 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 Go usa as credenciais no arquivo netrc para autenticar no Artifact Registry. Para simplificar a autenticação você pode usar o auxiliar de credenciais do Go para atualizar os tokens em seu netrc para autenticação no Artifact Registry.
O local do arquivo netrc pode ser definido com a variável de ambiente netrc.
Se a variável NETRC
não estiver definida, o comando go
lerá
$HOME/.netrc
em plataformas do tipo UNIX ou %USERPROFILE%\_netrc
no Windows.
O Artifact Registry é compatível com os seguintes métodos de autenticação.
- Credenciais de curta duração (recomendado)
- Usar a ferramenta auxiliar de credenciais do Go do Artifact Registry para atualizar os tokens de autenticação no arquivo netrc.
- Usar uma chave de conta de serviço
Use essa 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 ao arquivo GONOPROXY
Antes de usar o auxiliar de credenciais do Go, ele precisa ser adicionado à lista GONOPROXY
para forçar o Go a fazer o download dele diretamente do GitHub. Se você tiver outros módulos
você quiser fazer o download diretamente da fonte, adicione-os separados por vírgula.
lista, conforme mostrado no exemplo a seguir:
export GONOPROXY=MODULE_PATH1, MODULE_PATH2
Onde MODULE_PATH1 e MODULE_PATH2 são caminhos de módulos dos quais o download será feito da origem.
Para adicionar o auxiliar de credenciais do Go à sua lista GONOPROXY
e executá-lo para configurar sua
credenciais:
Adicionar o auxiliar de credenciais do Go ao seu
GONOPROXY
export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
Execute o comando a seguir para adicionar as credenciais do Artifact Registry ao seu 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 regional ou multirregional local do seu repositório. Para adicionar vários locais, insira-os como uma vírgula uma lista separada.
O assistente de credenciais do Go adiciona configurações ao seu arquivo netrc para autenticação no Artifact Registry. Se você transmitir a sinalização
--json_key
, a chave será adicionada seu arquivo netrc para autenticação por senha.
Usar o módulo como dependência
Se você estiver usando credenciais de curta duração para autenticação para o Artifact Registry, atualize 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 seu diretório inicial, 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 o pacote.cd bar \ go mod init example.com/bar
Substitua
example.com/bar
pelo caminho do módulo. Consulte a Referência dos módulos Go para mais informações.Para exigir a versão de foo armazenada no Artifact Registry, edite
go.mod
para se parecer com o seguinte: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 de dependências, incluindo o pacote foo:
go mod tidy
Execute o módulo de barras:
go run .
A saída será assim:
Hello World!
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga estas etapas. Antes de remover o repositório, verifique se que os módulos que você deseja manter estejam disponíveis em outro local.
Para excluir o repositório:
gcloud artifacts repositories delete \ --location=LOCATION \ --project=PROJECT \ REPOSITORY
Substitua:
- LOCATION com o modelo regional ou multirregional local do repositório.
- PROJECT pelo ID de projeto do Google Cloud;
- REPOSITORY pelo nome do repositório.
Se você quiser remover as configurações padrão de repositório e local 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 como gerenciar repositórios.
- Saiba como gerenciar módulos Go.
- Leia nossos recursos sobre DevOps e explore a Programa de pesquisa DevOps Research and Assessment.