Configure a autenticação no Artifact Registry para repositórios de gems Ruby

Esta página descreve como configurar a autenticação com um repositório de gems Ruby do Artifact Registry.

Tem de se autenticar no Artifact Registry quando usa uma aplicação de terceiros para se ligar a um repositório.

Não precisa de configurar a autenticação para o Cloud Build nem para os Google Cloud ambientes de tempo de execução, como o Google Kubernetes Engine e o Cloud Run.

Antes de começar

  1. Se o repositório de destino não existir, crie um repositório de gemas Ruby.
  2. Confirme se o Ruby está instalado. Para ver instruções de instalação, consulte o Google Cloud tutorial de configuração do Ruby.
  3. Verifique se a conta de utilizador ou a conta de serviço que está a usar tem as autorizações necessárias para aceder ao repositório.
  4. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

    gcloud init

    Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

  5. (Opcional) Configure as predefinições para os comandos da CLI gcloud.

Vista geral

O Ruby suporta dois métodos para autenticar pedidos ao seu repositório do Artifact Registry:

  • CLI do RubyGems: suporta pedidos de envio e obtenção. Esta CLI está disponível com o Ruby por predefinição. Quando se autentica com o RubyGems, tem de se autenticar sempre que faz um pedido push ou pull para o seu repositório.
  • CLI Bundler: suporta pedidos de envio. O Bundler armazena pacotes e envios em um Gemfile, o que permite aos utilizadores padronizar as configurações em várias máquinas sem necessidade de autenticar cada pedido de obtenção individual. No entanto, tem de voltar a autenticar as suas credenciais no Bundler ocasionalmente.

    Para instalar a CLI Bundler, introduza gem install bundler.

Autentique com a CLI do RubyGems

A CLI RubyGems usa tokens OAuth2 para autenticar um pedido. Para transmitir tokens OAuth2 para chamadas aos seus repositórios do Artifact Registry, tem de primeiro gerar o token e, em seguida, transmiti-lo com a morada do seu repositório quando fizer um pedido. Os tokens têm uma duração de uma hora e têm de ser atualizados de hora a hora.

Autentique pedidos de envio

Pode autenticar um pedido de obtenção na linha de comandos da CLI do Google Cloud ou atualizando o ficheiro .gemrc.

Autentique pedidos de obtenção na linha de comandos

Para se autenticar na versão mais recente do gem no seu pedido de envio, execute o seguinte comando:

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

Para fazer a autenticação para uma versão específica do gem, adicione -v GEM_VERSION ao comando gem install.

Onde:

  • GEM_NAME é o nome da pedra preciosa para a qual o pedido é feito.
  • LOCATION é a localização regional ou multirregional do repositório.
  • PROJECT é o ID do projeto que contém o repositório.
  • REPOSITORY é o ID do repositório.

Autentique-se num ficheiro .gemrc

Pode configurar o ficheiro /.gemrc global ou específico do projeto para autenticar as suas fontes em pedidos de obtenção adicionando o seguinte:

# 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/
<...>

Para instalar um gem através da origem ou das origens definidas no ficheiro /.gemrc, execute o seguinte comando:

gem install GEM_NAME

Autentique pedidos push

Pode autenticar um pedido push na linha de comandos da Google Cloud CLI ou atualizando o ficheiro de credenciais.

Autentique pedidos push na linha de comandos

Para autenticar o pedido push, execute o seguinte comando:

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

Onde:

  • GEM_NAME é o nome da pedra preciosa para a qual o pedido é feito.
  • LOCATION é a localização regional ou multirregional do repositório.
  • PROJECT é o ID do projeto que contém o repositório.
  • REPOSITORY é o ID do repositório.

Autentique pedidos push num ficheiro de credenciais

A ferramenta de linha de comandos gem usa o ficheiro ~/.gem/credentials para armazenar chaves da API para enviar e extrair gems. Para configurar o ficheiro de credenciais para autenticar as suas fontes em pedidos push, faça o seguinte:

  1. Gere uma chave de acesso OAuth2 executando o seguinte comando:

    gcloud auth print-access-token

    Este token funciona como a sua chave da API para o Artifact Registry.

  2. Atualize o ficheiro de credenciais:

    1. Abra o ficheiro ~/.gem/credentials e adicione uma linha para o seu repositório. A chave é o URL do seu repositório e o valor é Bearer, seguido do seu token:

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

      Onde:

      • RUBYGEMS_ORG_KEY é a chave da API para RubyGems.org.
      • LOCATION é a localização regional ou multirregional do repositório.
      • PROJECT é o ID do projeto que contém o repositório.
      • REPOSITORY é o ID do repositório.
      • OAUTH_TOKEN é a sua chave de acesso OAuth2.
    2. Empurre a gema. Tenha em atenção que não precisa de definir o GEM_HOST_API_KEY, uma vez que já definiu a chave no ficheiro de credenciais.

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

Autentique com o Bundler

O Bundler do Ruby gere as dependências das aplicações em um ou mais gems. Para configurar o Bundler, faça o seguinte:

  1. Adicione o endereço do seu repositório como um source no seu gemfile:

    # Gemfile
    # <...>
    source "https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"
    
  2. Autentique-se no repositório através 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
    

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, este é usado quando esta flag é omitida do comando.

Tem de voltar a autenticar-se no repositório remoto ocasionalmente. Neste caso, execute o mesmo comando de autenticação do passo 2.

Para mais informações sobre a configuração do Bundler, consulte Gemfiles na documentação do bundler.io.

O que se segue?