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 les solutions possibles à ces situations.

Identifiants push expirés

Vous avez effectué 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 location du dépôt.
  • PROJECT est l'ID de projet. Si cette option est ignorée, alors 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 à vous connecter lors du push

Vous avez effectué une requête 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 effectué 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, alors le projet en cours ou par défaut est utilisé.
  • REPOSITORY est le nom de votre dépôt dans Artifact Registry.

Erreur de requête pull : Could not fetch specs

Vous avez effectué 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 de manière incorrecte même si la demande d'extraction a réussi. Utilisez une commande verbose pour vérifier que votre demande d'extraction a réussi, par exemple bundle install --verbose.