Go Module Proxy
Go Module Proxy
Seção intitulada “Go Module Proxy”O Go Team provê alguns serviços através do Google, como um mirror para acelerar o download, um banco de dados com checksums para validação do conteúdo dos módulos e um indice para descoberta de novos módulos.
O que é um Go Proxy?
Seção intitulada “O que é um Go Proxy?”É qualquer servidor que aceite uma requisição GET no padrão esperado. um exemplo seria:
$ GET $GOPROXY/<module>/@v/listIrá retornar uma lista com as versões conhecidas do modulo, sendo uma por linha, veja aqui um exemplo: https://proxy.golang.org/rsc.io/quote/@v/list
Agora um ponto interessante a ser analisado é o .mod da dependência, que pode ser acessado seguindo o padrão:
$ GET $GOPROXY/<module>/@v/<version>.modComo, por exemplo: https://proxy.golang.org/rsc.io/quote/@v/v1.5.1.mod
O download do pacote pode ser feito diretamente através do:
$ GET $GOPROXY/<module>/@v/<version>.zipComo, por exemplo: https://proxy.golang.org/rsc.io/quote/@v/v1.5.1.zip
Para que serve o proxy?
Seção intitulada “Para que serve o proxy?”Do ponto de vista de uso, comandos como go build fazem os downloads necessários automaticamente quando os requisitos já estão no go.mod. O proxy armazena versões de módulos e pode continuar servindo uma versão mesmo quando o repositório original está indisponível. Isso depende da disponibilidade e da política do proxy.
Os hashes em go.sum e no Checksum Database permitem detectar alterações no conteúdo recebido. O cache de um proxy não garante que o código seja livre de vulnerabilidades.
Configurando o proxy
Seção intitulada “Configurando o proxy”Desde Go 1.13, o padrão é https://proxy.golang.org,direct. O índice de módulos é um serviço separado, usado para descobrir versões publicadas.
go env GOPROXY
# Configurar outro proxygo env -w GOPROXY=https://goproxy.cn,directCom uma vírgula, o Go tenta a próxima entrada apenas quando o proxy responde 404 ou 410. Com |, tenta a próxima entrada em qualquer erro. direct significa buscar diretamente no repositório, usando um VCS permitido.
No Go 1.27, módulos são o padrão e não é preciso configurar GO111MODULE=on. O download direto via Bazaar (bzr) foi removido.
Outro ponto de atenção é caso você tenha a necessidade de utilizar um repositório privado, o go permite o uso da variavel:
go env -w GOPRIVATE="minhaempresa.com"Mais informações
Seção intitulada “Mais informações”Mais informações sobre o proxy
Seção intitulada “Mais informações sobre o proxy”go help goproxyMais informações sobre as variáveis do go
Seção intitulada “Mais informações sobre as variáveis do go”go help environment