Faça a gestão dos gems Ruby

Esta página descreve como adicionar, ver e eliminar gems Ruby e versões de gems.

Antes de começar

  1. Instale e inicialize a CLI Google Cloud.

    É necessária a versão 354.0.0 ou mais recente da CLI gcloud para executar comandos para repositórios Ruby. Pode verificar a versão com o comando:

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

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

  4. (Opcional) Defina predefinições para comandos gcloud.

Funções necessárias

Para receber as autorizações de que precisa para gerir gems, peça ao seu administrador que lhe conceda as seguintes funções de IAM no repositório:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Adicione Gems

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

Modos de repositório: padrão

Quando cria um projeto Ruby, os ficheiros de distribuição são guardados numa subdiretoria lib no seu projeto. Em seguida, pode usar o RubyGems para carregar gems para um repositório padrão.

Para adicionar um gem ao seu repositório do Artifact Registry:

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

Onde:

  • GEM_NAME é o nome do gem a enviar para o seu repositório.
  • 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.

Veja Gems e versões

Modos de repositório: padrão

Para ver pacotes e versões de pacotes através da Google Cloud consola ou da gcloud:

Consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

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

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

  3. Clique num pacote para ver as versões do pacote.

gcloud

Para listar os pacotes num repositório, execute o seguinte comando:

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

Substitua o seguinte:

  • REPOSITORY é o nome do repositório. Se tiver configurado um repositório predefinido, pode omitir esta flag para usar o predefinido.
  • LOCATION é a localização regional ou multirregional do repositório. Se configurou uma localização predefinida, pode omitir esta flag para usar a predefinição.

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

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

Substitua o seguinte:

  • PACKAGE é o ID do pacote ou o identificador totalmente qualificado do pacote.
  • REPOSITORY é o nome do repositório. Se tiver configurado um repositório predefinido, pode omitir esta flag para usar o predefinido.
  • LOCATION é a localização regional ou multirregional do repositório. Use esta flag para ver repositórios numa localização específica. Se configurou uma localização predefinida, pode omitir esta flag para usar a predefinição.

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

Listar ficheiros

Modos de repositório: padrão

Pode listar ficheiros num repositório, ficheiros em todas as versões de um pacote especificado ou ficheiros numa versão específica de um pacote.

Para todos os comandos seguintes, pode definir um número máximo de ficheiros a devolver adicionando a flag --limit ao comando.

Para listar todos os ficheiros no projeto, repositório e localização predefinidos quando os valores predefinidos estão configurados:

gcloud artifacts files list

Para listar ficheiros num projeto, num repositório e numa localização especificados, execute o comando:

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

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

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

Para listar ficheiros de uma versão específica de um pacote:

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

Substitua os seguintes valores:

  • LOCATION: a localização regional ou multirregional do repositório.
  • PROJECT: o seu Google Cloud ID do projeto. Se o ID do projeto contiver dois pontos (:), consulte o artigo Projetos com âmbito de domínio.
  • REPOSITORY: o nome do repositório onde 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
  • Localização do repositório: us-west1
  • Pacote: my-app

O comando seguinte lista todos os ficheiros no repositório my-repo na localização us-west1 no projeto predefinido:

gcloud artifacts files list \
    --location=us-west1 \
    --repository=my-repo
O seguinte comando lista os ficheiros 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

Instale pedras preciosas

Modos de repositório: padrão

Para instalar o lançamento estável mais recente de um pacote:

gem install GEM_NAME

Para repositórios padrão, transfere um pacote diretamente do repositório.

Para um repositório remoto, transfere uma cópia em cache do pacote e das respetivas dependências. Se não existir uma cópia em cache, o repositório remoto transfere o pacote da origem a montante e coloca-o em cache antes de o disponibilizar. Pode verificar se o repositório remoto obteve os pacotes da origem a montante vendo a lista de pacotes no repositório.

Para um repositório virtual, o Artifact Registry pesquisa repositórios a montante para o pacote pedido.

  • Os repositórios remotos a montante transferem e colocam em cache o pacote pedido se não existir uma cópia em cache. Os repositórios virtuais apenas publicam pacotes pedidos e não os armazenam.
  • Se pedir uma versão que esteja disponível em mais do que um repositório a montante, o Artifact Registry escolhe um repositório a montante para usar com base nas definições de prioridade configuradas para o repositório virtual.

Por exemplo, considere um repositório virtual com as seguintes definiçõ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 elevado, pelo que o repositório virtual pesquisa sempre primeiro.

Ambos os elementos secondary-repo1 e secondary-repo2 têm a prioridade definida como 80. Se um pacote pedido não estiver disponível em main-repo, o Artifact Registry pesquisa estes repositórios em seguida. Uma vez que ambos têm o mesmo valor de prioridade, o Artifact Registry pode optar por publicar um pacote de qualquer um dos repositórios se a versão estiver disponível em ambos.

test-repo tem o valor de prioridade mais baixo e vai publicar um artefacto armazenado se nenhum dos outros repositórios a montante o tiver.

Informações adicionais

Quando envia gems para um repositório do Artifact Registry ou extrai gems deste, se a gem pedida ou as respetivas dependências não forem encontradas no repositório especificado, o cliente gem usa qualquer outra origem definida no gemfile da sua gem. Se quiser apenas obter e instalar diretamente a partir do Artifact Registry, execute o seguinte comando para remover uma origem que não seja do Artifact Registry do seu gemfile:

gem sources --remove SOURCE

Para adicionar novamente o rubygems.org como origem:

gem sources --add SOURCE

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

Elimine pacotes e versões

Modos de repositório: padrão

Pode eliminar um pacote e todas as respetivas versões ou eliminar uma versão específica.

  • Depois de eliminar um pacote, não pode anular a ação.
  • Para repositórios remotos, apenas é eliminada a cópia em cache do pacote. A fonte a montante não é afetada. Se eliminar um pacote em cache, o Artifact Registry transfere e coloca novamente em cache o pacote da próxima vez que o repositório receber um pedido para a mesma versão do pacote.

Antes de eliminar um pacote ou uma versão do pacote, verifique se comunicou ou resolveu quaisquer dependências importantes do mesmo.

Para eliminar um pacote:

Consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

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

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

  3. Selecione o pacote que quer eliminar.

  4. Clique em ELIMINAR.

  5. Clique em ELIMINAR na caixa de diálogo de confirmação.

gcloud

Execute o seguinte comando:

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

Substitua o seguinte:

  • PACKAGE é o nome do pacote no repositório.
  • REPOSITORY é o nome do repositório. Se configurou um repositório predefinido, pode omitir esta flag para usar o predefinido.
  • LOCATION é a localização regional ou multirregional do repositório. Use esta flag para ver repositórios numa localização específica. Se tiver configurado uma localização predefinida, pode omitir esta flag para usar a predefinição.

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

Para eliminar versões de um pacote:

Consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

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

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

  3. Clique num pacote para ver as versões desse pacote.

  4. Selecione as versões que quer eliminar.

  5. Clique em ELIMINAR.

  6. Clique em ELIMINAR na caixa de diálogo de confirmação.

gcloud

Execute o seguinte comando:

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

Substitua o seguinte:

  • VERSION é o nome da versão a eliminar.
  • PACKAGE é o nome do pacote no repositório.
  • REPOSITORY é o nome do repositório. Se configurou um repositório predefinido, pode omitir esta flag para usar o predefinido.
  • LOCATION é a localização regional ou multirregional do repositório. Use esta flag para ver repositórios numa localização específica. Se tiver configurado uma localização predefinida, pode omitir esta flag para usar a predefinição.

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

Limitações

  • O Artifact Registry não suporta a adição de repositórios como origens através do comando gem sources -add. No entanto, pode adicionar manualmente origens ao ficheiro .gemrc ou transmitir a flag --source diretamente no comando gem.

  • O Artifact Registry não suporta a obtenção de gems através de gem fetch.

O que se segue?