Para los desarrolladores de Golang, administrar e instalar módulos Go suele ser sencillo cuando se trata de repositorios públicos. Sin embargo, las cosas se vuelven más complicadas cuando necesitas trabajar con módulos Go privados.
La cadena de herramientas de módulos Go no proporciona un mecanismo integrado para trabajar con módulos privados más allá del uso de un GOPROXY privado, y configurar y mantener uno adecuadamente no es una opción para todos los desarrolladores u organizaciones. Algunos servicios de repositorio de paquetes admiten el trabajo con módulos privados de Go, pero generalmente no brindan la experiencia más limpia para los desarrolladores.
Por esta razón, en la mayoría de los casos, terminamos organizando configuraciones complejas de Git (.netrc o .gitconfig) combinadas con algunas variables de entorno de Go para administrar la autenticación con nuestros repositorios privados cuando usamos go get, go install o go mod download. .
El problema con estas configuraciones de Git es que no son evidentes para todos los desarrolladores y pueden ser inseguras ya que pueden requerir el almacenamiento de credenciales de texto sin formato en el sistema de archivos. Estos problemas se vuelven aún más problemáticos al configurar sistemas CI/CD, crear imágenes de Docker, etc.
Como desarrolladores de Golang desde hace mucho tiempo (desde la época en que los módulos de Go ni siquiera existían), siempre hemos soñado con un momento en el que trabajar con bibliotecas privadas de Go fuera tan fácil y poderoso como trabajar con las públicas.
Imagínese desarrollar y enviar sus bibliotecas Go privadas a GitHub e inmediatamente obtener -u los nuevos cambios del código fuente de su proyecto configurando solo la variable de entorno GOPROXY. Sin configuraciones de Git complicadas e inseguras, sin mantenimiento de GOPROXY autohospedado, sin flujos de trabajo de publicación complejos y propensos a errores, y la misma configuración para su máquina de desarrollo local, Dockerfile y entorno CI/CD.
Saluda a goproxy.dev, un servicio GOPROXY privado que se integra con GitHub para brindarte instalación perfecta de módulos privados Go.
Simplemente inicia sesión en goproxy.dev con tu cuenta de GitHub, otorga acceso a los repositorios privados que usarás y exporta tus variables de entorno GOPROXY y GONOSUMDB.
export [email protected],proxy.golang.org,direct export GONOSUMDB=github.com/your-organization
Estas variables de entorno de Go se pueden configurar directamente desde la configuración de su shell (.zshrc, .bashrc, etc.) o usando go env -w.
Luego puedes ejecutar tus comandos go habituales para instalar y descargar tus módulos privados.
go get github.com/your-organization/[email protected] go install github.com/your-organization/go-module/cmd ... go mod download
La integración con goproxy.dev solo requiere configurar dos variables de entorno. La mejor manera de hacerlo durante una compilación de Docker es mediante la función de secretos de compilación de Docker.
Dentro de tu 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 .
Y la carrera:
GOPROXY="[your GOPROXY value]" docker build --secret id=GOPROXY
Simplemente configura un secreto para tus GitHub Actions que contenga tu URL de GOPROXY y úsalo desde tus flujos de trabajo:
jobs: build: - run: | go mod download go build . env: GOPROXY: ${{ secrets.PRIVATE_GOPROXY }} GONOSUMDB: github.com/your-organization
Con goproxy.dev tendrás la mejor experiencia de desarrollador al consumir bibliotecas con Go. Ya sea que dependa de bibliotecas públicas de código abierto o de módulos privados de su organización, tendrá un flujo de trabajo unificado: configure su variable de entorno GOPROXY y obtenga dependencias para una versión específica, una rama de Git o una confirmación.
Obtenga más información y comience a usar goproxy.dev hoy registrándose para nuestra prueba gratuita de 14 días.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3