Gérer les modules Go

Cette page explique comment gérer les modules Go empaquetés stockés dans Artifact Registry.

Avant de commencer

  1. Si le dépôt cible n'existe pas, créez un dépôt. Choisissez Go comme format de dépôt.
  2. Vérifiez que vous disposez des autorisations requises pour le dépôt.
  3. (Facultatif) Configurez des valeurs par défaut pour les commandes gcloud.
  4. Installez Go 1.15 ou une version ultérieure.
  5. Installez le module complémentaire gcloud CLI package-go-module:

    gcloud components install package-go-module
  6. Configurez Go pour authentifier avec Artifact Registry.

Rôles requis

Pour obtenir les autorisations nécessaires pour gérer les modules, demandez à votre administrateur de vous attribuer les rôles IAM suivants sur le dépôt:

Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Importer un module

Modes de dépôt:standard

Pour empaqueter et importer un module dans votre dépôt, exécutez la commande suivante:

  gcloud artifacts go upload --project=PROJECT \
      --repository=REPOSITORY \
      --location=LOCATION \
      --module-path=MODULE_PATH \
      --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 le package est stocké.
  • LOCATION par l'emplacement régional ou multirégional du dépôt.
  • MODULE_PATH par le chemin d'accès au module. Par exemple: example.com/foo Pour plus d'informations, consultez la documentation de référence sur les modules Go.
  • VERSION par la version sémantique du module sous la forme vX.Y.Z, où X est la version majeure, Y est la version mineure et Z est la version du correctif.
  • SOURCE_LOCATION par le chemin d'accès au répertoire racine de votre module Go. 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 ce tutoriel.

Importer une nouvelle version du module

Modes de dépôt:standard

Pour importer une nouvelle version de votre module dans le projet, le dépôt et l'emplacement par défaut lorsque les valeurs par défaut sont configurées, exécutez la commande suivante avec le nouveau numéro de version:

  gcloud artifacts go upload \
      --module-path=MODULE_PATH \
      --version=VERSION \
      --source=SOURCE_LOCATION

Remplacez VERSION par la version de votre module mis à jour. Par exemple, pour importer la version 0.1.1 d'un module avec le chemin d'accès example.com/foo, exécutez la commande suivante:

  gcloud artifacts go upload \
      --module-path=example.com/foo \
      --version=v0.1.1 \
      --source=SOURCE_LOCATION

Pour marquer un module comme version préliminaire, ajoutez un tiret après VERSION, puis les identifiants de la version préliminaire de votre module:

  gcloud artifacts go upload \
      --module-path=MODULE_PATH \
      --version=VERSION-PRE_RELEASE_IDENTIFIERS \
      --source=SOURCE_LOCATION

Remplacez PRE_RELEASE_IDENTIFIERS par des caractères alphanumériques ASCII et des traits d'union séparés par un point. Par exemple, pour importer la version préliminaire d'un module dont le chemin d'accès au module example.com/foo est identifié par alpha.x.12m.5, exécutez la commande suivante:

  gcloud artifacts go upload \
      --module-path=example.com/foo \
      --version=v1.0.0-alpha.x.12m.5 \
      --source=SOURCE_LOCATION

Importer une nouvelle version majeure

Modes de dépôt:standard

Les versions majeures ne sont pas rétrocompatibles avec les versions précédentes. Pour empêcher les utilisateurs d'importer une modification destructive, les versions majeures après v1 doivent avoir des chemins d'accès de module différents de ceux des versions précédentes. À partir de v2, la version majeure est ajoutée à la fin du chemin d'accès au module.

Par exemple, le chemin de module pour v2.0.0 de example.com/foo serait example.com/foo/v2.

Il est recommandé de développer des versions majeures après v1 dans des répertoires distincts nommés d'après leur suffixe de version majeure.

Pour importer une nouvelle version majeure 2.0.0 d'un module avec le chemin d'accès example.com/foo vers le projet, le dépôt et l'emplacement par défaut lorsque les valeurs par défaut sont configurées:

  gcloud artifacts go upload --module-path=example.com/foo/v2 --version=v2.0.0

Répertorier les modules

Modes de dépôt:standard

Exécutez la commande suivante pour inspecter un module Go importé dans le projet, le dépôt et l'emplacement par défaut lorsque les valeurs par défaut sont configurées:

  gcloud artifacts packages list

Le résultat doit se présenter 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

Modes de dépôt:standard

Exécutez la commande suivante pour afficher les versions d'un module dans le projet, le dépôt et l'emplacement par défaut lorsque les valeurs par défaut sont configurées:

  gcloud artifacts versions list --package=MODULE_PATH

Le résultat doit se présenter 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

Utiliser un module comme dépendance

Modes de dépôt:standard

Pour importer des modules stockés dans Artifact Registry, vous devez demander à Go de rechercher les dépendances d'Artifact Registry et de contourner la base de données de somme de contrôle. Suivez les instructions pour configurer l'authentification et l'environnement Go de la section Configurer l'authentification pour Go.

  1. Si vous utilisez des identifiants éphémères pour vous authentifier auprès d'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@latest refresh
    
  2. Si votre module ne dispose pas encore d'un fichier go.mod, accédez aux répertoires dans le dossier de votre module, puis exécutez la commande go mod init afin de créer un fichier go.mod pour votre package.

      go mod init MODULE_PATH
    

    Remplacez MODULE_PATH par le chemin d'accès au module stocké dans Artifact Registry. Pour en savoir plus, consultez la documentation de référence sur les modules Go.

  3. Pour exiger que la version de votre module soit stockée dans Artifact Registry, modifiez votre fichier go.mod comme suit:

    
    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
  4. Incluez le chemin d'accès du module comme d'habitude dans la section import de votre fichier main.go.

    Par exemple, pour importer un module dont le chemin d'accès example.com/foo est stocké dans Artifact Registry, votre section d'importation doit ressembler à ceci:

      
      package main
    
      import (
        foo "example.com/foo"
      )
    
      func main() {
    
        ...
    
      }
    
      
    
  5. Exécutez go mod tidy pour télécharger les dépendances:

      go mod tidy
    
  6. Exécutez votre module normalement:

      go run .
    

    Le module stocké dans Artifact Registry est téléchargé et utilisé comme dépendance.

Supprimer les modules Go empaquetés

Modes de dépôt:standard

Vous pouvez supprimer un package et toutes ses versions, ou supprimer une version spécifique.

  • La suppression d'un package est irréversible.

Avant de supprimer un package ou une version de package, vérifiez que vous avez communiqué ou résolu toute dépendance importante associée.

Pour supprimer un package, procédez comme suit :

Console

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Dans la liste des dépôts, cliquez sur le dépôt approprié.

    La page Packages répertorie les packages du dépôt.

  3. Sélectionnez le package que vous souhaitez supprimer.

  4. Cliquez sur SUPPRIMER.

  5. Dans la boîte de dialogue de confirmation, cliquez sur SUPPRIMER.

gcloud

Exécutez la commande ci-dessous.

gcloud artifacts packages delete PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] [--async]

  • PACKAGE est le nom du package dans le dépôt.
  • REPOSITORY est le nom du dépôt. Si vous avez configuré un dépôt par défaut, vous pouvez omettre cet indicateur pour utiliser le dépôt par défaut.
  • LOCATION est un emplacementrégional ou multirégional . Utilisez cette option pour afficher les dépôts dans un emplacement spécifique. Si vous avez configuré un emplacement default, vous pouvez omettre cette option afin d'utiliser l'emplacement par défaut.
  • --async renvoie immédiatement une réponse, sans attendre la fin de l'opération en cours.

Pour supprimer des versions d'un package, procédez comme suit :

Console

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Dans la liste des dépôts, cliquez sur le dépôt approprié.

    La page Packages répertorie les packages du dépôt.

  3. Cliquez sur un package pour afficher ses versions.

  4. Sélectionnez les versions que vous souhaitez supprimer.

  5. Cliquez sur SUPPRIMER.

  6. Dans la boîte de dialogue de confirmation, cliquez sur SUPPRIMER.

gcloud

Exécutez la commande ci-dessous.

gcloud artifacts versions delete VERSION \
    --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] \
    [--async]

  • PACKAGE est le nom du package dans le dépôt.
  • REPOSITORY est le nom du dépôt. Si vous avez configuré un dépôt par défaut, vous pouvez omettre cet indicateur pour utiliser le dépôt par défaut.
  • LOCATION est un emplacementrégional ou multirégional . Utilisez cette option pour afficher les dépôts dans un emplacement spécifique. Si vous avez configuré un emplacement default, vous pouvez omettre cette option afin d'utiliser l'emplacement par défaut.
  • --async est immédiatement renvoyé, sans attendre la fin de l'opération en cours.

Étapes suivantes