Stocker des modules Go dans Artifact Registry
Configurez un dépôt Go Artifact Registry privé, importez-y un module et utilisez-le comme dépendance.
Avant de commencer
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Installez Go 1.15 ou une version ultérieure.
- Installez le module complémentaire
package-go-module
de la gcloud CLI :
gcloud components install package-go-module
Créer un dépôt
Pour créer et configurer un dépôt :
Exécutez la commande suivante pour créer un dépôt.
gcloud artifacts repositories create REPOSITORY \ --repository-format=go \ --location=LOCATION \ --description=DESCRIPTION
Remplacez les éléments suivants :
- REPOSITORY est le nom du dépôt. Pour chaque emplacement de dépôt d'un projet, les noms de dépôt doivent être uniques.
- LOCATION est l'emplacement régional ou multirégional
lieu
pour le dépôt. Vous pouvez omettre cet indicateur si vous définissez
default
Pour afficher la liste des emplacements pris en charge, exécutez la commande
gcloud artifacts locations list
- DESCRIPTION est une description facultative du dépôt. À ne pas faire inclure des données sensibles, car les descriptions de référentiel ne sont pas chiffrées.
Exécutez la commande suivante pour afficher les détails du dépôt.
gcloud artifacts repositories describe --location=LOCATION REPOSITORY
Le résultat se présente comme suit :
Encryption: Google-managed key Repository Size: 0.000MB createTime: '2022-06-03T20:20:01.644813Z' format: GO mode: STANDARD_REPOSITORY name: projects/my-project/locations/us-west1/repositories/my-repo updateTime: '2022-06-03T20:20:01.644813Z'
Définir des valeurs par défaut pour les commandes gcloud
Vous pouvez simplifier vos commandes gcloud CLI
en
la configuration des paramètres par défaut
pour les valeurs de projet, de dépôt et d'emplacement. Une fois les valeurs par défaut
configurées,
Vous n'avez pas besoin des tags --project
, --location
et --repository
.
Empaqueter et importer un module Go
Le module complémentaire gcloud CLI package-go-module
empaquette vos modules Go, ce qui vous permet de les versionner et de les importer dans Artifact Registry à l'aide de la commande gcloud
.
Créer un module Go
Commencez par créer un module Go simple à importer dans votre dépôt.
Dans votre répertoire d'accueil, créez un répertoire nommé "foo". pour votre module
mkdir foo
Changez de répertoire dans le répertoire de votre module et exécutez
go mod init
pour créer un fichier go.mod pour votre module.cd foo \ go mod init example.com/foo
Remplacez
example.com/foo
par le chemin d'accès au module. Consultez le Documentation de référence sur les modules Go pour en savoir plus.Dans votre répertoire "foo", créez un fichier
foo.go
avec le contenu suivant:package foo const HelloWorld = "Hello World!"
Empaqueter et importer le module
Empaquetez et importez le module dans votre dépôt:
gcloud artifacts go upload --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION \ --module-path=example.com/foo \ --version=VERSION \ --source=SOURCE_LOCATION
Remplacez les éléments suivants :
- PROJECT par l'ID de votre projet Google Cloud.
- REPOSITORY par le nom du dépôt dans lequel package est stocké.
- LOCATION avec l'emplacement régional ou multirégional lieu du dépôt.
example.com/foo
avec le chemin d'accès au module. Pour en savoir plus, consultez la documentation de référence sur les modules Go.- VERSION avec le
version sémantique
du module sous la forme
vX.Y.Z
, oùX
est la version majeure,Y
est la version mineure, etZ
est la version de correctif. - SOURCE_LOCATION par le chemin d'accès au répertoire racine de votre environnement Go.
de ce module. Si vous omettez l'option
--source
, le répertoire actuel est la valeur par défaut.
Le module est importé dans Artifact Registry.
Pour en savoir plus sur la création de modules Go, consultez cette tutoriel.
Répertorier les modules
Exécutez la commande suivante pour inspecter le module Go importé dans le fichier par défaut le projet, le dépôt et l'emplacement lorsque les valeurs par défaut sont configurées:
gcloud artifacts packages list
Le résultat se présente comme suit :
Listing items under project my-project, location us-west1, repository my-repo. PACKAGE CREATE_TIME UPDATE_TIME example.com/foo 2022-06-03T20:43:39 2022-06-20T20:37:40
Afficher les détails de la version du module
Exécutez la commande suivante pour afficher les versions de votre module dans les le projet, le dépôt et l'emplacement valeurs par défaut sont configurées:
gcloud artifacts versions list --package=MODULE_PATH
Le résultat se présente comme suit :
Listing items under project my-project, location us-west1, repository my-repo, package example.com/foo. VERSION DESCRIPTION CREATE_TIME UPDATE_TIME v0.1.0 2022-06-03T20:43:39 2022-06-03T20:43:39 v0.1.1 2022-06-20T20:37:40 2022-06-20T20:37:40
Télécharger des modules
Pour importer des modules stockés dans Artifact Registry, vous devez demander à Go rechercher les dépendances d'Artifact Registry et contourner base de données de somme de contrôle.
Configurer l'environnement Go
Demandez à Go de télécharger des modules depuis Artifact Registry, le service public Go module proxy, puis "source" dans cet ordre:
export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
Remplacez les éléments suivants :
- LOCATION est l'emplacement régional ou multirégional lieu du dépôt.
- PROJECT est votre Google Cloud ID du projet.
- REPOSITORY est le nom du dépôt dans lequel package est stocké.
Excluez votre module de la vérification à l'aide de la base de données publique des sommes de contrôle:
export GONOSUMDB=MODULE_PATH_REGEX
Remplacez MODULE_PATH_REGEX par le chemin d'accès de votre module ou par une expression régulière. si vous souhaitez exclure plusieurs modules.
Pour empêcher la vérification de votre module
example.com/foo
à l'aide de la règle de la base de données de contrôle, exécutez la commande suivante:export GONOSUMDB=example.com/foo
Si vous souhaitez que tous les modules dont le chemin d'accès commence par
example.com
exclu de la vérification à l'aide de la base de données publique des sommes de contrôle, exécutez la la commande suivante:export GONOSUMDB=example.com/*
S'authentifier dans Artifact Registry
Lors du téléchargement de modules Go empaquetés à utiliser comme dépendances à partir de Artifact Registry, le binaire Go utilise les identifiants de votre fichier netrc pour s'authentifier auprès d'Artifact Registry. Pour simplifier le processus d'authentification, vous pouvez utiliser l'assistant d'identification Go pour actualiser les jetons de votre fichier netrc afin de vous authentifier auprès d'Artifact Registry.
L'emplacement de votre fichier netrc peut être défini à l'aide de la variable d'environnement netrc.
Si la variable NETRC
n'est pas définie, la commande go
lit
$HOME/.netrc
sur les plates-formes de type UNIX ou %USERPROFILE%\_netrc
sous Windows.
Artifact Registry est compatible avec les méthodes d'authentification suivantes.
- Identifiants de courte durée (recommandé)
- Utilisez l'assistant d'identification Go d'Artifact Registry pour mettre à jour les jetons d'authentification dans votre fichier netrc.
- Utiliser une clé de compte de service
Utilisez cette option lorsque vous ne pouvez pas utiliser les identifiants dans votre environnement pour l'authentification unique. Ajoutez la clé de compte de service non chiffrée à votre fichier netrc.
Ajouter l'assistant d'identification Go à GONOPROXY
Avant d'utiliser l'assistant d'identifiants Go, vous devez l'ajouter à la liste GONOPROXY
pour forcer Go à le télécharger directement depuis GitHub. Si vous avez d'autres modules
à télécharger directement à partir de la source. Ajoutez-les en les séparant par une virgule
comme illustré dans l'exemple suivant:
export GONOPROXY=MODULE_PATH1, MODULE_PATH2
Où MODULE_PATH1 et MODULE_PATH2 sont les chemins d'accès des modules à télécharger à partir de la source.
Pour ajouter l'assistant d'identification Go à votre liste GONOPROXY
et l'exécuter pour configurer vos identifiants :
Ajouter l'assistant d'identification Go à votre
GONOPROXY
export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
Exécutez la commande suivante pour ajouter vos identifiants Artifact Registry à votre netrc à l'aide de l'outil de package du module Go:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \ add-locations --locations=LOCATION \ [--json_key=path/to/service/account/key.json]
Où LOCATION est l'emplacement régional ou multirégional de votre dépôt. Pour ajouter plusieurs zones, saisissez-les sous la forme d'une liste d'éléments séparés par une virgule.
L'assistant d'identification Go ajoute des paramètres à votre fichier netrc pour l'authentification à Artifact Registry. Si vous transmettez l'option
--json_key
, la clé est ajoutée à votre fichier netrc pour l'authentification par mot de passe.
Utiliser votre module en tant que dépendance
Si vous utilisez des identifiants éphémères pour l'authentification à Artifact Registry, vous devez actualiser votre jeton OAuth en exécutant la commande suivante:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 refresh
Dans votre répertoire d'accueil, créez un répertoire nommé "bar"
mkdir bar
Changez de répertoire dans le répertoire de votre module et exécutez
go mod init
pour créer un fichiergo.mod
pour votre package.cd bar \ go mod init example.com/bar
Remplacez
example.com/bar
par le chemin d'accès au module. Consultez le Documentation de référence sur les modules Go pour en savoir plus.Pour exiger la version de foo stockée dans Artifact Registry, modifiez votre fichier
go.mod
pour qu'il ressemble à ceci :module example.com/bar go 1.19 require example.com/foo v0.1.0
Remplacez les éléments suivants :
example.com/foo
est le chemin d'accès du module requis.v0.1.0
est la version stockée dans Artifact Registry
Créez un fichier
main.go
dans votre répertoirebar
avec ce qui suit : contenus:package main import ( "fmt" foo "example.com/foo" ) func main() { fmt.Println(foo.HelloWorld) }
Exécutez go mod tidy pour télécharger les dépendances, y compris le paquet foo:
go mod tidy
Exécutez le module "bar" :
go run .
Le résultat se présente comme suit :
Hello World!
Effectuer un nettoyage
Pour éviter que les ressources utilisées sur cette page soient facturées sur votre compte Google Cloud, procédez comme suit :
Pour éviter que les ressources utilisées sur cette page ne soient facturées sur votre compte Google Cloud, procédez comme suit : Avant de supprimer le dépôt, assurez-vous que les modules que vous souhaitez conserver sont disponibles ailleurs.
Pour supprimer le dépôt :
gcloud artifacts repositories delete \ --location=LOCATION \ --project=PROJECT \ REPOSITORY
Remplacez les éléments suivants :
- LOCATION avec l'emplacement régional ou multirégional du dépôt.
- PROJECT par l'ID de votre projet Google Cloud.
- REPOSITORY par le nom du dépôt.
Si vous souhaitez supprimer le dépôt par défaut et les paramètres d'emplacement que vous avez définis pour la configuration gcloud active, exécutez les commandes suivantes :
gcloud config unset artifacts/repository gcloud config unset artifacts/location
Étape suivante
- En savoir plus sur la configuration de l'authentification
- Découvrez comment gérer les dépôts.
- Découvrez comment gérer les modules Go.
- Consultez nos ressources sur le DevOps et explorez les programme de recherche DevOps Research and Assessment.