Para desenvolvedores Golang, gerenciar e instalar módulos Go geralmente é simples ao lidar com repositórios públicos. No entanto, as coisas ficam mais complicadas quando você precisa trabalhar com módulos Go privados.
A cadeia de ferramentas de módulos Go não fornece um mecanismo integrado para trabalhar com módulos privados além de usar um GOPROXY privado, e configurar e manter um adequadamente não é uma opção para todos os desenvolvedores ou organizações. Alguns serviços de repositório de pacotes suportam o trabalho com módulos Go privados, mas geralmente não fornecem a experiência mais limpa para desenvolvedores.
Por esse motivo, na maioria dos casos, acabamos organizando configurações complexas do Git (.netrc ou .gitconfig) combinadas com algumas variáveis de ambiente Go para gerenciar a autenticação com nossos repositórios privados ao usar go get, go install ou go mod download .
O problema com essas configurações do Git é que elas não são evidentes para todos os desenvolvedores e podem ser inseguras, pois podem exigir o armazenamento de credenciais de texto simples no sistema de arquivos. Esses problemas se tornam ainda mais problemáticos ao configurar sistemas CI/CD, construir imagens Docker, etc.
Como desenvolvedores Golang de longa data (vindos da época em que os módulos Go nem existiam), sempre sonhamos com uma época em que trabalhar com bibliotecas Go privadas fosse tão fácil e poderoso quanto trabalhar com bibliotecas públicas.
Imagine desenvolver e enviar suas bibliotecas Go privadas para o GitHub e imediatamente obter -u as novas alterações do código-fonte do seu projeto, definindo apenas a variável de ambiente GOPROXY. Sem configurações Git complicadas e inseguras, sem manutenção GOPROXY auto-hospedada, sem fluxos de trabalho de publicação complexos e propensos a erros e a mesma configuração para sua máquina de desenvolvimento local, Dockerfile e ambiente CI/CD.
Diga olá ao goproxy.dev, um serviço GOPROXY privado que se integra ao GitHub para fornecer a você instalação perfeita de módulos privados Go.
Basta fazer login em goproxy.dev com sua conta GitHub, conceder acesso aos repositórios privados que você usará e exportar suas variáveis de ambiente GOPROXY e GONOSUMDB.
export [email protected],proxy.golang.org,direct export GONOSUMDB=github.com/your-organization
Essas variáveis de ambiente Go podem ser definidas diretamente na configuração do seu shell (.zshrc, .bashrc, etc.) ou usando go env -w.
Em seguida, você pode executar seus comandos go habituais para instalar e baixar seus módulos privados.
go get github.com/your-organization/[email protected] go install github.com/your-organization/go-module/cmd ... go mod download
A integração com goproxy.dev requer apenas a configuração de duas variáveis de ambiente. A melhor maneira de fazer isso durante uma compilação do Docker é usando o recurso de segredos de compilação do Docker.
Dentro do seu Dockerfile:
COPY go.mod go.sum ./ RUN --mount=type=secret,id=GOPROXY \ GOPROXY=$(cat /run/secrets/GOPROXY) \ GONOSUMDB=github.com/your-organization \ go mod download RUN go build .
E a corrida:
GOPROXY="[your GOPROXY value]" docker build --secret id=GOPROXY
Basta configurar um segredo para suas ações do GitHub contendo seu URL GOPROXY e usá-lo em seus fluxos de trabalho:
jobs: build: - run: | go mod download go build . env: GOPROXY: ${{ secrets.PRIVATE_GOPROXY }} GONOSUMDB: github.com/your-organization
Com goproxy.dev você terá a melhor experiência de desenvolvedor ao consumir bibliotecas com Go. Quer você dependa de bibliotecas públicas de código aberto ou de módulos privados de sua organização, você terá um fluxo de trabalho unificado: configure sua variável de ambiente GOPROXY e obtenha dependências para uma versão específica, branch Git ou commit.
Saiba mais e comece a usar goproxy.dev hoje, inscrevendo-se em nosso teste gratuito de 14 dias.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3