Résoudre les problèmes liés aux gems Ruby

Ce document explique pourquoi certaines erreurs peuvent se produire lorsque vous utilisez des gems Ruby dans un dépôt Artifact Registry, et présente les solutions possibles pour ces situations.

Identifiants push expirés

Vous avez envoyé une requête push, mais vous avez reçu le message d'erreur suivant :

Pushing gem to https://LOCATION-ruby.pkg.devPROJECT/REPOSITORY..
The request does not have valid authentication credentials.

Pour actualiser vos identifiants, générez un jeton en exécutant la commande suivante :

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

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.

Invite de connexion lors de l'envoi

Vous avez envoyé une demande push, mais vous avez reçu un message vous demandant vos identifiants ruby.pkg.dev :

Enter your https://us-ruby.pkg.dev/REPOSITORY/GEM_NAME credentials.
Don't have an account yet? Create one at https://us-ruby.pkg.dev/REPOSITORY/GEM_NAME/sign_up
   Email:

Essayez d'exécuter la commande suivante :

GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"

Identifiants pull expirés

Vous avez envoyé une demande d'extraction, mais vous avez reçu le message d'erreur suivant :

 Unable to download data from https://oauth2accesstoken:REDACTED@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/ - bad response Unauthorized 401 (https://oauth2accesstoken:REDACTED@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/latest_specs.4.8.gz)

Pour actualiser vos identifiants, supprimez la source d'identifiants expirée de gem sources. Ensuite, générez un jeton en exécutant la commande suivante :

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

Où :

  • LOCATION est l'emplacement de votre 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 le nom de votre dépôt dans Artifact Registry.

Erreur de demande d'extraction : Could not fetch specs

Vous avez envoyé une demande d'extraction, mais vous avez reçu le message d'erreur suivant :

Retrying fetcher due to error (2/4): Bundler::HTTPError Could not fetch specs from https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/ due to underlying error <bad response Not Found 404 (https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/specs.4.8.gz)>

Cette erreur peut s'afficher à tort même si la demande d'extraction a abouti. Utilisez une commande verbose pour vérifier que votre demande d'extraction a réussi, par exemple bundle install --verbose.