Configurer l'authentification auprès d'Artifact Registry pour les dépôts de gems Ruby

Cette page explique comment configurer l'authentification avec un dépôt de gems Ruby Artifact Registry.

Vous devez vous authentifier auprès d'Artifact Registry lorsque vous utilisez une application tierce pour vous connecter à un dépôt.

Vous n'avez pas besoin de configurer l'authentification pour Cloud Build ni pour les environnements d'exécution Google Cloudtels que Google Kubernetes Engine et Cloud Run.

Avant de commencer

  1. Si le dépôt cible n'existe pas, créez un dépôt de gems Ruby.
  2. Vérifiez que Ruby est installé. Pour obtenir des instructions d'installation, consultez leGoogle Cloud tutoriel de configuration de Ruby.
  3. Vérifiez que le compte utilisateur ou le compte de service que vous utilisez dispose des autorisations requises pour accéder au dépôt.
  4. Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :

    gcloud init

    Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  5. (Facultatif) Configurez des valeurs par défaut pour les commandes gcloud CLI.

Présentation

Ruby est compatible avec deux méthodes d'authentification des requêtes envoyées à votre dépôt Artifact Registry :

  • CLI RubyGems : compatible avec les requêtes push et pull. Cette CLI est disponible avec Ruby par défaut. Lorsque vous vous authentifiez auprès de RubyGems, vous devez vous authentifier chaque fois que vous effectuez une requête push ou pull vers votre dépôt.
  • CLI Bundler : compatible avec les demandes d'extraction. Bundler stocke les packages et les flux en amont dans un fichier Gemfile, ce qui permet aux utilisateurs de standardiser les configurations sur plusieurs machines sans avoir à authentifier chaque demande d'extraction individuelle. Toutefois, vous devez toujours réauthentifier vos identifiants auprès de Bundler de temps en temps.

    Pour installer la CLI Bundler, saisissez gem install bundler.

S'authentifier avec RubyGems CLI

L'interface de ligne de commande RubyGems utilise des jetons OAuth2 pour authentifier une requête. Pour transmettre des jetons OAuth2 aux appels à vos dépôts Artifact Registry, vous devez d'abord générer le jeton, puis le transmettre avec l'adresse de votre dépôt lorsque vous effectuez une requête. Les jetons ont une durée de vie d'une heure et doivent être actualisés toutes les heures.

Authentifier les demandes d'extraction

Vous pouvez authentifier une demande d'extraction dans la ligne de commande Google Cloud CLI ou en mettant à jour votre fichier .gemrc.

Authentifier les demandes d'extraction dans la ligne de commande

Pour vous authentifier pour la dernière version du gem dans votre demande d'extraction;extraction, exécutez la commande suivante :

export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
gem install GEM_NAME --source https://$GEM_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY

Pour vous authentifier pour une version spécifique de gem, ajoutez -v GEM_VERSION à la commande gem install.

Où :

  • GEM_NAME est le nom du gem pour lequel la demande est effectuée.
  • LOCATION est l'emplacement régional ou multirégional du dépôt.
  • PROJECT est l'ID du projet contenant le dépôt.
  • REPOSITORY est l'ID du dépôt.

S'authentifier dans un fichier .gemrc

Vous pouvez configurer votre fichier /.gemrc global ou spécifique à un projet pour vous authentifier auprès de vos sources sur les demandes d'extraction en ajoutant les éléments suivants :

# File: ~/.gemrc

# Use the GEM_TOKEN retrieved from export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"

<...>
:sources:
    - https://GEM_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPO/
<...>

Pour installer un gem à l'aide de la ou des sources définies dans votre fichier /.gemrc, exécutez la commande suivante :

gem install GEM_NAME

Authentifier les requêtes push

Vous pouvez authentifier une requête push dans la ligne de commande Google Cloud CLI ou en mettant à jour votre fichier d'identifiants.

Authentifier les requêtes push dans la ligne de commande

Pour authentifier votre requête push, exécutez la commande suivante :

export GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"
gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY

Où :

  • GEM_NAME est le nom du gem pour lequel la demande est effectuée.
  • LOCATION est l'emplacement régional ou multirégional du dépôt.
  • PROJECT est l'ID du projet contenant le dépôt.
  • REPOSITORY est l'ID du dépôt.

Authentifier les requêtes push dans un fichier d'identifiants

L'outil de ligne de commande gem utilise le fichier ~/.gem/credentials pour stocker les clés API permettant d'envoyer et d'extraire des gems. Pour configurer votre fichier d'identifiants afin de vous authentifier auprès de vos sources sur les requêtes push, procédez comme suit :

  1. Générez un jeton d'accès OAuth2 en exécutant la commande suivante :

    gcloud auth print-access-token

    Ce jeton sert de clé API pour Artifact Registry.

  2. Mettez à jour votre fichier d'identifiants :

    1. Ouvrez ~/.gem/credentials et ajoutez une ligne pour votre dépôt. La clé correspond à l'URL de votre dépôt, et la valeur est Bearer, suivie de votre jeton :

      :rubygems_api_key: RUBYGEMS_ORG_KEY
      https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY: Bearer OAUTH_TOKEN
      

      Où :

      • RUBYGEMS_ORG_KEY est la clé API pour RubyGems.org.
      • LOCATION est l'emplacement régional ou multirégional du dépôt.
      • PROJECT est l'ID du projet contenant le dépôt.
      • REPOSITORY est l'ID du dépôt.
      • OAUTH_TOKEN est votre jeton d'accès OAuth2.
    2. Transmettez votre gem. Notez que vous n'avez pas besoin de définir GEM_HOST_API_KEY, car vous avez déjà défini la clé dans votre fichier d'identifiants.

      gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
      

S'authentifier avec Bundler

Le Bundler Ruby gère les dépendances des applications sur un ou plusieurs gems. Pour configurer Bundler, procédez comme suit :

  1. Ajoutez l'adresse de votre dépôt en tant que source dans votre fichier Gemfile :

    # Gemfile
    # <...>
    source "https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"
    
  2. Authentifiez-vous auprès de votre dépôt à l'aide de bundle config :

    export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
    export HOST="https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"
    bundle config $HOST $GEM_TOKEN
    

Où :

  • LOCATION est l'emplacement régional ou multirégional du dépôt.
  • PROJECT est l'ID de projet. Si cette option est ignorée, le projet en cours ou par défaut est utilisé.
  • REPOSITORY est l'ID du dépôt. Si vous avez configuré un dépôt Artifact Registry par défaut, il est utilisé lorsque cette option est omise dans la commande.

Vous devrez parfois vous réauthentifier auprès de votre dépôt distant. Dans ce cas, exécutez la même commande d'authentification que celle de l'étape 2.

Pour en savoir plus sur la configuration de Bundler, consultez Gemfiles dans la documentation bundler.io.

Étapes suivantes