Gerenciar gems do Ruby

Nesta página, descrevemos como adicionar, visualizar e excluir gems e versões de gems do Ruby.

Antes de começar

  1. Instale e inicialize a Google Cloud CLI.

    A Google Cloud CLI versão 354.0.0 ou mais recente é necessária para executar comandos de repositórios do Ruby. Você pode verificar a versão com o comando:

    gcloud version
    
  2. Se o repositório de destino não existir, então crie um repositório de pacotes do Ruby.

  3. Verifique se o Ruby está instalado. Para instruções de instalação, consulte o Google Cloud tutorial de configuração do Ruby.

  4. (Opcional) Defina padrões para comandos gcloud.

Funções exigidas

Para receber as permissões necessárias para gerenciar gems, peça ao administrador que conceda a você as seguintes funções do IAM no repositório:

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 usando personalizados papéis ou outros predefinidos papéis.

Adicionar gems

Os pacotes no Ruby são chamados de gems, em que cada gem contém um nome, uma versão e uma plataforma. Um projeto do Ruby também precisa conter um gemfile, que é um arquivo de configuração que especifica as dependências de gem necessárias.

Modos de repositório: padrão

Ao criar um projeto do Ruby, os arquivos de distribuição são salvos em um subdiretório lib no projeto. Em seguida, você pode usar o RubyGems para fazer upload de gems para um repositório padrão.

Para adicionar uma gem ao repositório do Artifact Registry:

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

Em que:

  • GEM_NAME é o nome da gem a ser enviada ao repositório.
  • LOCATION é o local do repositório.
  • PROJECT é o ID do projeto. Se essa flag for omitida, então o projeto atual ou projeto padrão será usado.
  • REPOSITORY é o nome do repositório no Artifact Registry.

Visualizar gems e versões

Modos de repositório: padrão

Para conferir pacotes e versões de pacotes usando o console Google Cloud ou gcloud:

Console

  1. Abra a página Repositórios no console do Google Cloud .

    Abrir a página Repositórios

  2. Na lista de repositórios, clique no repositório apropriado.

    A página Pacotes lista os pacotes no repositório.

  3. Clique em um pacote para visualizar as versões dele.

gcloud

Para listar pacotes em um repositório, execute o seguinte comando:

gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]

Substitua:

  • REPOSITORY é o nome do repositório. Se você tiver configurado um repositório padrão, poderá omitir essa flag para usar o padrão.
  • LOCATION é o local regional ou multirregional do repositório. Se você tiver configurado um local padrão, poderá omitir essa flag para usar o padrão.

Para ver as versões de um pacote, execute o seguinte comando:

gcloud artifacts versions list --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION]

Substitua:

  • PACKAGE é o ID do pacote ou o identificador totalmente qualificado do pacote.
  • REPOSITORY é o nome do repositório. Se você tiver configurado um repositório padrão, poderá omitir essa flag para usar o padrão.
  • LOCATION é o local regional ou multirregional do repositório. Use esta flag para conferir repositórios em um local específico. Se você tiver configurado um local padrão, poderá omitir essa flag para usar o padrão.

Para repositórios remotos, a lista retornada precisa incluir todas as dependências diretas e transitivas.

Listar arquivos

Modos de repositório: padrão

É possível listar arquivos em um repositório, arquivos em todas as versões de um pacote especificado ou arquivos em uma versão específica de um pacote.

Para todos os comandos a seguir, é possível definir um número máximo de arquivos a serem retornados adicionando a flag --limit ao comando.

Para listar todos os arquivos no projeto, repositório e local quando os valores padrão estiverem configurados:

gcloud artifacts files list

Para listar arquivos em um projeto, repositório e local especificados, execute o comando:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION

Para listar arquivos de todas as versões de um pacote específico:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE

Para listar arquivos de uma versão específica do pacote:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --version=VERSION

Substitua os seguintes valores:

  • LOCATION: o local regional ou multirregional do repositório.
  • PROJECT: o ID do seu Google Cloud projeto. Se o ID do projeto tiver dois pontos (:), consulte Projetos com escopo de domínio.
  • REPOSITORY: o nome do repositório em que a imagem está armazenada.
  • PACKAGE: o nome do pacote.
  • VERSION: a versão do pacote.

Exemplos

Considere as seguintes informações do pacote:

  • Projeto: my-project
  • Repositório: my-repo
  • Local do repositório: us-west1
  • Pacote: my-app

O comando a seguir lista todos os arquivos no repositório my-repo no local us-west1 no projeto padrão:

gcloud artifacts files list \
    --location=us-west1 \
    --repository=my-repo
O comando a seguir lista arquivos na versão 1.0 do pacote.

gcloud artifacts files list \
    --project=my-project \
    --location=us-west1 \
    --repository=my-repo \
    --package=my-app \
    --version=1.0

Instalar gems

Modos de repositório: padrão

Para instalar a versão estável mais recente de um pacote:

gem install GEM_NAME

Para repositórios padrão, faça o download de um pacote diretamente do repositório.

Para um repositório remoto, faça o download de uma cópia armazenada em cache do pacote e das dependências dele. Se uma cópia armazenada em cache não existir, o repositório remoto fará o download do pacote da origem upstream e o armazenará em cache antes de disponibilizá-lo para você. É possível verificar se o repositório remoto recuperou os pacotes da origem upstream visualizando a lista de pacotes no repositório.

Para um repositório virtual, o Artifact Registry pesquisa repositórios upstream para o pacote solicitado.

  • Os repositórios remotos upstream farão o download e armazenarão em cache o pacote solicitado se uma cópia armazenada em cache não existir. Os repositórios virtuais só disponibilizam pacotes solicitados, eles não os armazenam.
  • Se você solicitar uma versão disponível em mais de um repositório upstream, o Artifact Registry escolherá um repositório upstream para usar com base nas configurações de prioridade configuradas para o repositório virtual.

Por exemplo, considere um repositório virtual com as seguintes configurações de prioridade para repositórios upstream:

  • main-repo: prioridade definida como 100
  • secondary-repo1: prioridade definida como 80.
  • secondary-repo2: prioridade definida como 80.
  • test-repo: prioridade definida como 20.

main-repo tem o valor de prioridade mais alto. Portanto, o repositório virtual sempre o pesquisa primeiro.

secondary-repo1 e secondary-repo2 têm a prioridade definida como 80. Se um pacote solicitado não estiver disponível em main-repo, o Artifact Registry pesquisará esses repositórios em seguida. Como ambos têm o mesmo valor de prioridade, o Artifact Registry pode escolher disponibilizar um pacote de qualquer repositório se a versão estiver disponível nos dois.

test-repo tem o valor de prioridade mais baixo e vai disponibilizar um artefato armazenado se nenhum dos outros repositórios upstream o tiver.

Informações adicionais

Ao enviar ou extrair gems de um repositório do Artifact Registry, se a gem solicitada ou as dependências dela não forem encontradas no repositório especificado, o cliente gem usará qualquer outra origem definida no gemfile da gem. Se você quiser buscar e instalar apenas diretamente do Artifact Registry, execute o comando a seguir para remover uma origem que não seja do Artifact Registry do gemfile:

gem sources --remove SOURCE

Para adicionar rubygems.org de volta como uma origem:

gem sources --add SOURCE

Em que SOURCE é o endereço da origem, como https://rubygems.org.

Excluir pacotes e versões

Modos de repositório: padrão

É possível excluir um pacote e todas as versões dele ou excluir uma versão específica.

  • Depois de excluir um pacote, não é possível desfazer a ação.
  • Para repositórios remotos, apenas a cópia armazenada em cache do pacote é excluída. A origem upstream não é afetada. Se você excluir um pacote armazenado em cache, o Artifact Registry fará o download e o armazenará em cache novamente na próxima vez que o repositório receber uma solicitação para a mesma versão do pacote.

Antes de excluir uma versão de pacote ou um pacote, verifique se você comunicou ou resolveu qualquer dependência importante nele.

Para excluir um pacote:

Console

  1. Abra a página Repositórios no console do Google Cloud .

    Abrir a página Repositórios

  2. Na lista de repositórios, clique no repositório apropriado.

    A página Pacotes lista os pacotes no repositório.

  3. Selecione o pacote que você quer excluir.

  4. Clique em EXCLUIR.

  5. Na caixa de diálogo de confirmação, clique em Excluir.

gcloud

Execute este comando:

gcloud artifacts packages delete PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] [--async]

Substitua:

  • PACKAGE é o nome do pacote no repositório.
  • REPOSITORY é o nome do repositório. Se você tiver configurado um repositório padrão, poderá omitir essa flag para usar o padrão.
  • LOCATION é o local regional ou multirregional do repositório. Use esta flag para conferir repositórios em um local específico. Se você configurou um local padrão, poderá omitir essa flag para usar o padrão.

A flag --async faz com que o comando seja retornado imediatamente, sem aguardar a conclusão da operação em andamento.

Para excluir versões de um pacote:

Console

  1. Abra a página Repositórios no console do Google Cloud .

    Abrir a página Repositórios

  2. Na lista de repositórios, clique no repositório apropriado.

    A página Pacotes lista os pacotes no repositório.

  3. Clique em um pacote para visualizar as versões dele.

  4. Selecione as versões que você quer excluir.

  5. Clique em EXCLUIR.

  6. Na caixa de diálogo de confirmação, clique em Excluir.

gcloud

Execute este comando:

gcloud artifacts versions delete VERSION \
    --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] \
    [--async]

Substitua:

  • VERSION é o nome da versão a ser excluída.
  • PACKAGE é o nome do pacote no repositório.
  • REPOSITORY é o nome do repositório. Se você tiver configurado um repositório padrão, poderá omitir essa flag para usar o padrão.
  • LOCATION é o local regional ou multirregional do repositório. Use esta flag para conferir repositórios em um local específico. Se você configurou um local padrão, poderá omitir essa flag para usar o padrão.

A flag --async faz com que o comando seja retornado imediatamente, sem aguardar a conclusão da operação em andamento.

Limitações

  • O Artifact Registry não oferece suporte à adição de repositórios como origens usando o comando gem sources -add. No entanto, é possível adicionar origens manualmente ao arquivo .gemrc ou transmitir a flag --source diretamente no gem comando.

  • O Artifact Registry não oferece suporte à extração de gems usando gem fetch.

A seguir