Como definir a variável de ambiente GOPRIVATE

15

Comecei a trabalhar em um Goprojeto e ele usa alguns módulos privados dos repositórios particulares do Github e sempre que tento executá- go run main.golo, ocorre um 410 Goneerro abaixo :

verificando github.com/repoURL/[email protected]+incompatible/go.mod: github.com/repoURL/[email protected]+incompatible/go.mod: lendo https: //sum.golang. org/lookup/github.com/!repoURL/[email protected]+incompatível : 410 Gone

Posso clonar facilmente repo privado do terminal, o que significa que minhas sshchaves estão configuradas corretamente. Li aqui que preciso definir GOPRIVATEvariáveis ​​de ambiente, mas não sei como fazer isso.

Alguém pode responder ou apontar para o tutorial relevante?

Ir: v1.13, SO: macOS Mojave

UsamaAmjad
fonte
man $(basename $SHELL)
Peter
11
Existe uma ajuda para isso:go help module-private
Soroush

Respostas:

24

Resposta curta:

go env -w GOPRIVATE=github.com/repoURL/private-repo

OU

Se você deseja permitir todos os repositórios particulares da sua organização

go env -w GOPRIVATE=github.com/<OrgNameHere>/*

Resposta longa:

Consulte "Configuração do módulo para módulos não públicos" para obter mais informações:

A variável de ambiente GOPRIVATE controla quais módulos o comando go considera privados (não disponíveis publicamente) e, portanto, não devem usar o banco de dados proxy ou de soma de verificação. A variável é uma lista separada por vírgula de padrões glob (na sintaxe de path.Match de Go) de prefixos de caminho do módulo. Por exemplo,

 GOPRIVATE=*.corp.example.com,rsc.io/private

faz com que o comando go trate como privado qualquer módulo com um prefixo de caminho que corresponda a qualquer padrão, incluindo git.corp.example.com/xyzzy, rsc.io/private e rsc.io/private/quux.

. .

O comando 'go env -w' (consulte 'go help env') pode ser usado para definir essas variáveis ​​para futuras invocações de comandos go.


Nota sobre o uso do ssh:

Se você usar ssh para acessar o git repo (hospedado localmente), convém adicionar o seguinte ao seu ~/.gitconfig:

[url "ssh://[email protected]/"]
       insteadOf = https://git.local.intranet/

para que os gocomandos possam acessar o servidor git.

ifnotak
fonte
11
Obrigado! Trabalhando agora, o truque era usar o URL curinga com o nome da organização. go env -w GOPRIVATE=github.com/{OrgNameHere}/*
precisa saber é o seguinte