Pour les développeurs Golang, la gestion et l'installation des modules Go sont généralement simples lorsqu'il s'agit de référentiels publics. Cependant, les choses deviennent plus délicates lorsqu'il faut travailler avec des modules Go privés.
La chaîne d'outils des modules Go ne fournit pas de mécanisme intégré pour travailler avec des modules privés au-delà de l'utilisation d'un GOPROXY privé, et en configurer et en maintenir un correctement n'est pas une option pour tous les développeurs ou organisations. Certains services de référentiel de packages prennent en charge l'utilisation de modules Go privés, mais n'offrent généralement pas l'expérience la plus propre aux développeurs.
Pour cette raison, dans la plupart des cas, nous finissons par organiser des configurations Git complexes (.netrc ou .gitconfig) combinées à certaines variables d'environnement Go pour gérer l'authentification avec nos référentiels privés lors de l'utilisation de go get, go install ou go mod télécharger.
Le problème avec ces configurations Git est qu'elles ne sont pas évidentes pour tous les développeurs et qu'elles peuvent ne pas être sécurisées car elles peuvent nécessiter le stockage d'informations d'identification en texte brut dans le système de fichiers. Ces problèmes deviennent encore plus problématiques lors de la configuration des systèmes CI/CD, de la création d'images Docker, etc.
En tant que développeurs Golang de longue date (venant de l'époque où les modules Go n'existaient même pas), nous avons toujours rêvé d'une époque où travailler avec des bibliothèques Go privées serait aussi simple et puissant que de travailler avec des bibliothèques publiques. .
Imaginez développer et pousser vos bibliothèques Go privées sur GitHub, et allez immédiatement récupérer les nouvelles modifications du code source de votre projet en définissant uniquement la variable d'environnement GOPROXY. Pas de configurations Git délicates et non sécurisées, pas de maintenance GOPROXY auto-hébergée, pas de workflows de publication complexes et sujets aux erreurs, et la même configuration pour votre machine de développement locale, Dockerfile et votre environnement CI/CD.
Dites bonjour à goproxy.dev, un service GOPROXY privé qui s'intègre à GitHub pour vous fournir installation transparente de modules privés Go.
Connectez-vous simplement à goproxy.dev avec votre compte GitHub, donnez accès aux référentiels privés que vous utiliserez et exportez vos variables d'environnement GOPROXY et GONOSUMDB.
export GOPROXY=TOKEN@proxy.goproxy.dev,proxy.golang.org,direct export GONOSUMDB=github.com/your-organization
Ces variables d'environnement Go peuvent être définies directement à partir de la configuration de votre shell (.zshrc, .bashrc, etc.) ou en utilisant go env -w.
Ensuite, vous pouvez exécuter vos commandes go habituelles pour installer et télécharger vos modules privés.
go get github.com/your-organization/go-module@v2.0.0 go install github.com/your-organization/go-module/cmd ... go mod download
L'intégration avec goproxy.dev ne nécessite que la configuration de deux variables d'environnement. La meilleure façon de le faire lors d'une build Docker est d'utiliser la fonctionnalité Docker build secrets.
Dans votre fichier Docker :
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 .
Et la course :
GOPROXY="[your GOPROXY value]" docker build --secret id=GOPROXY
Configurez simplement un secret pour vos actions GitHub contenant votre URL GOPROXY et utilisez-le depuis vos workflows :
jobs: build: - run: | go mod download go build . env: GOPROXY: ${{ secrets.PRIVATE_GOPROXY }} GONOSUMDB: github.com/your-organization
Avec goproxy.dev, vous bénéficierez de la meilleure expérience de développeur lors de la consommation de bibliothèques avec Go. Que vous dépendiez de bibliothèques publiques open source ou de modules privés de votre organisation, vous disposerez d'un flux de travail unifié : configurez votre variable d'environnement GOPROXY et récupérez les dépendances pour une version spécifique, une branche Git ou un commit.
Apprenez-en plus et démarrez avec goproxy.dev dès aujourd'hui en vous inscrivant à notre essai gratuit de 14 jours.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!