Este documento explica por que motivo podem ocorrer determinados erros quando trabalha com gems Ruby num repositório do Artifact Registry e possíveis soluções para essas situações.
Credenciais push expiradas
Enviou um pedido push, mas recebeu a seguinte mensagem de erro:
Pushing gem to https://LOCATION-ruby.pkg.devPROJECT/REPOSITORY..
The request does not have valid authentication credentials.
Para atualizar as suas credenciais, gere um novo token executando o seguinte comando:
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
Onde:
- LOCATION é a localização regional ou multirregional do repositório.
- PROJECT é o ID do projeto. Se esta flag for omitida, é usado o projeto predefinido atual.
- REPOSITORY é o ID do repositório. Se configurou um repositório do Artifact Registry predefinido, esse repositório predefinido é usado quando esta flag é omitida do comando.
Pedido de início de sessão ao enviar
Fez um pedido push, mas recebeu uma mensagem a pedir as suas credenciais do 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:
Experimente executar o seguinte:
GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"
Credenciais de obtenção expiradas
Criou um pedido de obtenção, mas recebeu a seguinte mensagem de erro:
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)
Para atualizar as suas credenciais, remova a origem de credenciais expirada de
gem sources. Em seguida, execute o seguinte comando para gerar um novo token:
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
Onde:
- LOCATION é a localização do seu repositório.
- PROJECT é o ID do projeto. Se esta flag for omitida, é usado o projeto predefinido atual.
- REPOSITORY é o nome do seu repositório no Artifact Registry.
Erro no pedido de envio: Could not fetch specs
Criou um pedido de obtenção, mas recebeu a seguinte mensagem de erro:
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)>
Este erro pode aparecer incorretamente, mesmo que o pedido de obtenção tenha sido
bem-sucedido. Use um comando verbose para verificar se o pedido de obtenção foi bem-sucedido, como bundle install --verbose.