Maison >développement back-end >Golang >Configuration et utilisation de modules privés dans Go

Configuration et utilisation de modules privés dans Go

Patricia Arquette
Patricia Arquetteoriginal
2024-10-22 17:16:031072parcourir

Setting up and utilizing private modules in Go

Démarrer avec des modules privés dans Go peut devenir une tâche ardue sans les bonnes ressources de référence. Il en est ainsi car les modules Go ne sont pas stockés ou servis à partir d'un référentiel central, mais ils peuvent être extraits de différents référentiels ; un exemple étant Github.

Importer des packages Go publics dans votre projet peut être aussi simple que d'exécuter une seule commande :

$ allez chercher github.com/author/module-name

D'un autre côté, la configuration et l'utilisation de modules privés dans Go nécessiteront plus d'étapes. Avec les modules privés, vous pouvez héberger des packages privés dans le référentiel de votre choix et les utiliser sans nécessairement rendre le code accessible au public.

Pour configurer un module privé, commencez par créer un répertoire et accédez-y. Initialisez le module en exécutant la commande suivante :

$ go mod init github.com/author/module-name

L'étape suivante consiste à valider, à ajouter une balise pour le commit qui facilite la gestion des versions du module et à pousser le module vers un référentiel, Github dans ce cas.

Dans cet exemple, le module est la racine de votre projet, mais il existe des cas où un autre module go est la racine et vous pourriez avoir des sous-modules. Avec les sous-modules, la commande ci-dessus se traduirait par ci-dessous :

$ go mod init github.com/author/root-module/module-name

Récupérer un référentiel privé
Le module est désormais hébergé dans un référentiel mais il est privé, il nécessite donc une authentification avant de pouvoir l'extraire et l'utiliser dans ses projets. Les projets peuvent accéder au module en s'authentifiant à l'aide de variables d'environnement locales, via une action Github ou un fichier docker.

Dans cet article, nous nous concentrerons sur l'accès à un référentiel privé tout en utilisant des variables d'environnement locales. Ceci peut être réalisé avec les deux options suivantes.

Dans ces deux options, il est obligatoire de définir la variable d'environnement GOPRIVATE. La variable d'environnement GOPRIVATE aide la commande Go à déterminer si le module récupéré est public ou privé. Il contient des modèles qui sont vérifiés par rapport aux noms de packages du référentiel et tout nom de package correspondant à cette variable ne sera pas récupéré via le serveur de cache public Go.

Définissez et exportez la variable d'environnement GOPRIVATE en exécutant les commandes ci-dessous dans le répertoire du module.

$ export GOPRIVATE=github.com/author/module-name

Alternativement, vous pouvez utiliser la commande Go env pour définir la variable GOPRIVATE comme ci-dessous :

$ go env -w GOPRIVATE=github.com/author/module-name
$ go env GOPRIVATE

*Configurer git pour récupérer via SSH au lieu de HTTP(S)
*

La commande Go get utilise http ou https pour récupérer les modules depuis git. Pour vous assurer qu'il utilise ssh pour extraire le module, vous pouvez le faire en éditant le fichier de configuration git ou en utilisant cette commande :

$ go env -w GOPRIVATE=github.com/author/module-name
$ go env GOPRIVATE

*Configurer Go avec un jeton d'accès personnel
*

Avec la variable GOPRIVATE définie, cette option vous oblige à définir et exporter deux autres variables.

Variable GITHUB_ACCESS_TOKEN définie sur un jeton d'accès personnel, que vous pouvez créer à partir des paramètres de Github : Jeton d'accès personnel. Assurez-vous de donner un nom au jeton et sélectionnez le dépôt dans la section de portée.

L'autre variable à définir et à exporter est la variable GONOPROXY définie sur localhost, soulignant que cette URL ne doit pas être comparée à la base de données de somme de contrôle.

$ git config --global url."git@github.com:author/module-name".insteadOf "https://github.com/author/module-name"

Enfin, mettez à jour la configuration globale de git pour utiliser le jeton personnel généré.

$ export GONOPROXY=localhost 
$ export GITHUB_ACCESS_TOKEN=<your-token>

Avec ces configurations en place, vous devriez maintenant pouvoir récupérer le module privé avec l'une des options ci-dessus et l'utiliser dans votre projet. Pour récupérer le module, exécutez go run . commande pour construire le projet qui à son tour extrait le module au fur et à mesure qu'il ajoute l'une des dépendances du projet ou en exécutant la commande go get spécifiant le chemin github du module.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn