Armazenar gems do Ruby no Artifact Registry
Antes de começar
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Make sure that you have the following role or roles on the project: Artifact Registry Administrator
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
- Click Grant access.
-
In the New principals field, enter your user identifier. This is typically the identifier for a user in a workforce identity pool. For details, see Represent workforce pool users in IAM policies, or contact your administrator.
- Click Select a role, then search for the role.
- To grant additional roles, click Add another role and add each additional role.
- Click Save.
-
Funções exigidas
Para receber as permissões necessárias para criar e gerenciar repositórios de gems do Artifact Registry Ruby, peça ao administrador para conceder a você o papel do IAM de administrador do Artifact Registry (roles/artifactregistry.admin) no seu projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
Iniciar o Cloud Shell
Neste guia de início rápido, você usará o Cloud Shell, um ambiente shell para gerenciar recursos hospedados no Google Cloud.
O Cloud Shell vem pré-instalado com a Google Cloud CLI e o Ruby. A CLI gcloud fornece a principal interface de linha de comando para Google Cloud.
Inicie o Cloud Shell
Acesse o Google Cloud console do.
Na barra de ferramentas do Google Cloud console, clique em Ativar o Cloud Shell.
Uma sessão do Cloud Shell é aberta dentro de um quadro inferior no console.
Use esse shell para executar comandos gcloud.
Configurar a autenticação
O Ruby oferece dois métodos para autenticar solicitações no repositório do Artifact Registry:
- CLI RubyGems: aceita solicitações de envio e recebimento. Essa CLI está disponível com o Ruby por padrão. Ao fazer a autenticação com o RubyGems, você precisa autenticar cada vez que fizer uma solicitação de envio ou recebimento para o repositório.
CLI Bundler: aceita solicitações de recebimento. O Bundler armazena pacotes e origens em um gemfile, que permite que os usuários padronizem as configurações em várias máquinas sem precisar autenticar cada solicitação de envio individual. No entanto, ainda é necessário autenticar novamente suas credenciais no Bundler ocasionalmente.
Para instalar a CLI Bundler, insira
gem install bundler.
Autenticar com a CLI RubyGems
A CLI RubyGems usa tokens OAuth2 para autenticar uma solicitação. Para transmitir tokens OAuth2 para chamadas aos repositórios do Artifact Registry, é necessário transmitir o token Oauth2 com o endereço do repositório ao fazer uma solicitação. Os tokens têm um ciclo de vida de uma hora e precisam ser atualizados a cada hora.
Autenticar solicitações de recebimento
É possível autenticar uma solicitação de envio na linha de comando da Google Cloud CLI ou atualizando o arquivo .gemrc.
Autenticar solicitações de recebimento na linha de comando
Para autenticar a versão mais recente da gem na solicitação de envio, execute o seguinte comando:
gem install GEM_NAME --source https://$ACCESS_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
Para autenticar uma versão específica da gem, adicione
-v GEM_VERSION ao comando gem install.
Em que:
- GEM_NAME é o nome da gem para a qual a solicitação é feita.
- LOCATION é o local regional ou multirregional location do repositório.
- PROJECT é o ID do projeto que contém o repositório.
- REPOSITORY é o ID do repositório.
Autenticar em um arquivo .gemrc
É possível configurar o arquivo /.gemrc global ou específico do projeto para autenticar suas origens em solicitações de recebimento adicionando o seguinte:
# File: ~/.gemrc
# Use the ACCESS_TOKEN retrieved from export ACCESS_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
<...>
:sources:
- https://ACCESS_TOKEN@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/
<...>
Em que:
- ACCESS_TOKEN é seu token de acesso OAuth2.
- LOCATION é o local regional ou multirregional do repositório.
- PROJECT é o ID do projeto que contém o repositório.
- REPOSITORY é o ID do repositório.
Para instalar uma gem usando a origem ou as origens definidas no arquivo /.gemrc, execute:
gem install GEM_NAME
Autenticar solicitações de envio
É possível autenticar uma solicitação de envio na linha de comando da Google Cloud CLI ou atualizando o arquivo de credenciais.
Autenticar solicitações de envio na linha de comando
Para autenticar a solicitação de envio, 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
Em que:
- GEM_NAME é o nome da gem para a qual a solicitação é feita.
- LOCATION é o local regional ou multirregional location do repositório.
- PROJECT é o ID do projeto que contém o repositório.
- REPOSITORY é o ID do repositório.
Autenticar solicitações de envio em um arquivo de credenciais
A ferramenta de linha de comando gem usa o arquivo ~/.gem/credentials para armazenar chaves de API
para envio e recebimento de gems. Para configurar o arquivo de credenciais para autenticar suas origens em solicitações de envio, faça o seguinte:
Atualize o arquivo de credenciais:
Abra
~/.gem/credentialse adicione uma linha para o repositório. A chave é o URL do repositório, e o valor éBearer, seguido pelo token::rubygems_api_key: RUBYGEMS_ORG_KEY https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY: Bearer ACCESS_TOKENEm que:
- RUBYGEMS_ORG_KEY é a chave de API para
RubyGems.org. - LOCATION é o local regional ou multirregional location do repositório.
- PROJECT é o ID do projeto que contém o repositório.
- REPOSITORY é o ID do repositório.
- ACCESS_TOKEN é seu token de acesso OAuth2.
- RUBYGEMS_ORG_KEY é a chave de API para
Envie a gem. Não é necessário definir a
GEM_HOST_API_KEY, já que você já definiu a chave no arquivo de credenciais.gem push GEM_NAME --host https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY
Autenticar com o Bundler
O Bundler do Ruby gerencia dependências de aplicativos em uma ou mais gems. Para configurar o Bundler, faça o seguinte:
Adicione o endereço do repositório como uma
sourceno gemfile:# Gemfile # <...> source "https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"Autentique no repositório usando
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
Em que:
- LOCATION é o local regional ou multirregional location do repositório.
- PROJECT é o ID do projeto. Se essa sinalização for omitida, o projeto padrão ou atual é usado.
- REPOSITORY é o ID do repositório. Se você tiver configurado um repositório do Artifact Registry padrão, ele será usado quando essa sinalização for omitida no comando.
É necessário autenticar novamente no repositório remoto ocasionalmente. Nesse caso, execute o mesmo comando de autenticação da etapa 2.
Para mais informações sobre como configurar o Bundler, consulte Gemfiles na documentação do bundler.io.
Para mais informações sobre métodos de autenticação, consulte Configurar a autenticação no Artifact Registry para repositórios de gems do Ruby.
Criar um repositório
Crie o repositório para sua gem.
Execute o seguinte comando para criar um novo repositório de gems do Ruby no projeto atual chamado
quickstart-ruby-repono localus-west1.gcloud artifacts repositories create quickstart-ruby-repo \ --repository-format=ruby \ --location=us-west1 \ --description="Ruby gem repository"Execute o seguinte comando para verificar se o repositório foi criado:
gcloud artifacts repositories listPara simplificar os comandos
gcloud, defina o repositório padrão comoquickstart-ruby-repoe o local padrão comous-west1. Depois que os valores forem definidos, não será necessário especificá-los nos comandosgcloudque exigem um repositório ou local.Para definir o repositório, execute o seguinte comando:
gcloud config set artifacts/repository quickstart-ruby-repoPara definir o local, execute o seguinte comando:
gcloud config set artifacts/location us-west1Saiba mais sobre esses comandos na documentação do gcloud config set.
Fazer o download de uma gem
Ao criar um projeto Ruby, os arquivos de distribuição são salvos em um subdiretório lib no projeto Ruby. Para simplificar este guia de início rápido, você vai criar um diretório e fazer o download de uma gem para ele.
Para criar o diretório, execute este comando:
mkdir ruby-quickstart
mkdir ruby-quickstart/lib
cd ruby-quickstart/lib
Em seguida, faça o download da gem. É possível usar sua própria gem ou fazer o download de uma gem de amostra na página Popular Gems (gems populares) em rubygems.org. Para fazer o download de uma gem do rubygems.org, execute o seguinte comando:
gem fetch GEM_NAME
Agora você tem uma gem chamada GEM_NAME no diretório
ruby_quickstart/lib. Na próxima seção, você usará a CLI RubyGems para enviar a gem ao repositório.
Enviar a gem para o repositório
Para enviar a gem ao repositório, execute o seguinte comando:
gem push GEM_NAME --host https://us-west1-ruby.pkg.dev/PROJECT/quickstart-ruby-repo
Em que:
- GEM_NAME é o nome da gem a ser enviada ao repositório.
- PROJECT é o ID do projeto. Se essa sinalização for omitida, então o projeto atual ou padrão será usado.
Ver a gem no repositório
Para verificar se a gem foi adicionada, liste os pacotes no repositório ruby-quickstart.
Execute este comando:
gcloud artifacts packages list --repository=ruby-quickstart
Para ver as versões de uma gem, execute o seguinte comando:
gcloud artifacts versions list --package=GEM_NAME
Instalar a gem
Para instalar a gem que você acabou de enviar ao repositório do Artifact Registry, execute o seguinte comando:
export GEM_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"
gem install GEM_NAME --source https://$GEM_TOKEN@us-west1-ruby.pkg.dev/PROJECT/quickstart-ruby-repo
Em que:
- GEM_NAME é o nome da gem a ser instalada no repositório.
- PROJECT é o ID do projeto. Se essa sinalização for omitida, então o projeto atual ou padrão será usado.
Solução de problemas
Consulte Solução de problemas de gems do Ruby para mais informações.
Limpar
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga as etapas abaixo.
Antes de remover o repositório, verifique se as gems que você quer manter estão disponíveis em outro local.
Para excluir o repositório
quickstart-ruby-repo, execute o seguinte comando:gcloud artifacts repositories delete quickstart-ruby-repoSe você quiser remover as configurações padrão de repositório e localização que definiu para a configuração ativa
gcloud, execute os seguintes comandos:gcloud config unset artifacts/repository gcloud config unset artifacts/location
A seguir
- Saiba mais sobre como configurar a autenticação
- Saiba mais sobre como gerenciar repositórios
- Saiba mais sobre como gerenciar pacotes
- Leia nossos recursos sobre DevOps e conheça nosso programa de pesquisa.