Trabalhar com outros formatos de artefato

Nesta página, descrevemos como armazenar artefatos imutáveis com controle de versão que não aderem a nenhum formato de pacote específico nos repositórios de formato genérico do Artifact Registry.

Para se familiarizar com o armazenamento de artefatos genéricos no Artifact Registry, tente o quickstart.

Artefatos genéricos são arquivos de qualquer formato, incluindo, mas não se limitando a, os seguintes:

  • Arquivos compactados, como arquivos tar e arquivos ZIP
  • Arquivos de configuração, como YAML e TOML
  • Arquivos de texto e PDFs
  • Binários
  • Arquivos
  • Arquivos de mídia

Ao contrário de outros formatos, os artefatos armazenados em repositórios de formato genérico não podem ser usados pelo Docker, gerenciadores de pacotes ou outros clientes de terceiros.

Antes de começar

  1. Crie um repositório de formato genérico.
  2. Verifique se você tem as permissões necessárias para o repositório.
  3. (Opcional) Configure padrões para os comandos da Google Cloud CLI.

Funções exigidas

Para ter as permissões necessárias para gerenciar artefatos genéricos, peça ao administrador para conceder a você os seguintes papéis do IAM no repositório:

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Fazer upload de artefatos genéricos

É possível fazer upload de artefatos genéricos individualmente por arquivo ou em múltiplos por diretório. Ao fazer upload, é preciso especificar um nome de pacote e um número de versão. Você também pode especificar o caminho na estrutura de arquivos de destino para fazer upload deles. Se nenhum caminho de destino for especificado, os artefatos serão enviados para o nível raiz por padrão.

Para fazer upload de artefatos genéricos para o repositório, execute o seguinte comando:

gcloud

Antes de usar os dados do comando abaixo, faça estas substituições:

  • PROJECT: o ID do projeto do Google Cloud. Caso o ID do projeto contenha dois pontos (:), consulte Projetos com escopo de domínio.
  • LOCATION: o local regional ou multirregional do repositório.
  • REPOSITORY: o nome do repositório em que o artefato está armazenado.
  • SOURCE: o local e o nome do arquivo que você está enviando.
  • PACKAGE: o nome do pacote do arquivo que você está enviando.
  • VERSION: a versão do arquivo que você está enviando.
  • Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

    gcloud artifacts generic upload \
        --projectPROJECT \
        --source=SOURCE \
        --package=PACKAGE \
        --version=VERSION \
        --location=LOCATION \
        --repository=REPOSITORY
    

    Windows (PowerShell)

    gcloud artifacts generic upload `
        --projectPROJECT `
        --source=SOURCE `
        --package=PACKAGE `
        --version=VERSION `
        --location=LOCATION `
        --repository=REPOSITORY
    

    Windows (cmd.exe)

    gcloud artifacts generic upload ^
        --projectPROJECT ^
        --source=SOURCE ^
        --package=PACKAGE ^
        --version=VERSION ^
        --location=LOCATION ^
        --repository=REPOSITORY
    
    Há outras sinalizações que podem ser usadas ao fazer upload de artefatos:
    • --destination-path=PATH para fazer upload para uma pasta especificada no pacote e na versão. Ele também vai criar pastas que não existem.
    • --source-directory=SOURCE_DIR para substituir a sinalização --source e fazer upload de um diretório em vez de um único arquivo.
    • --skip-existing ao usar a sinalização --source-directory para pular arquivos já existentes. Caso contrário, o comando falhará ao tentar fazer upload de um arquivo que já existe.

    API

    Antes de usar os dados da solicitação, faça as substituições a seguir:

    • PROJECT é o ID do projeto do Google Cloud. Caso o ID do projeto contenha dois pontos (:), consulte Projetos com escopo de domínio.
    • LOCATION é o local regional ou multirregional do repositório.
    • REPOSITORY é o nome do repositório em que o artefato está armazenado.
    • SOURCE é o local e o nome do arquivo que você está enviando.
    • PACKAGE é o nome do pacote do arquivo que você está enviando.
    • VERSION é a versão do arquivo que você está enviando.
    • NAME é o novo nome do arquivo no repositório.

    Método HTTP e URL:

      POST https://artifactregistry.googleapis.com/download/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/genericArtifacts:create?alt=json
    

    curl (Linux, macOS ou Cloud Shell)

    Para enviar sua solicitação, execute o seguinte comando:

      curl -v \
          -H "Authorization: Bearer $(gcloud auth print-access-token)" \
          -F "meta={'filename':'NAME','package_id':'PACKAGE','version_id':'VERSION'};type=application/json" \
          -F "blob=@SOURCE" \
          https://artifactregistry.googleapis.com/upload/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSTIORY/genericArtifacts:create?alt=json
    

    Listar artefatos

    Para listar artefatos em um repositório usando o comando gcloud artifacts files list.

    Antes de usar os dados do comando abaixo, faça estas substituições:

    • PROJECT: o ID do projeto do Google Cloud. Caso o ID do projeto contenha dois pontos (:), consulte Projetos com escopo de domínio.
    • LOCATION: o local regional ou multirregional do repositório.
    • REPOSITORY: o nome do repositório em que o artefato está armazenado.

    Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

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

    Windows (PowerShell)

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

    Windows (cmd.exe)

    gcloud artifacts files list ^
        --project=PROJECT ^
        --location=LOCATION ^
        --repository=REPOSITORY
    
    A resposta inclui os detalhes do arquivo no formato PACKAGE:VERSION:NAME.
    FILE: my-package:1.0.0:hello.yaml
    CREATE_TIME: 2023-03-09T20:55:07
    UPDATE_TIME: 2023-03-09T20:55:07
    SIZE (MB): 0.000
    OWNER: projects/my-project/locations/us-central1/repositories/quickstart-generic-repo/packages/my-package/versions/1.0.0
    

    Também é possível classificar por versão e pacote adicionando uma ou as duas flags abaixo:

    • --package=PACKAGE para mostrar apenas os arquivos de um pacote específico.
    • --version=VERSION para mostrar apenas arquivos de uma versão específica.

    Fazer o download de artefatos genéricos

    Para fazer o download de artefatos genéricos do seu repositório, execute o seguinte comando:

    gcloud

    Antes de usar os dados do comando abaixo, faça estas substituições:

    • DESTINATION: o caminho para a pasta de destino no sistema de arquivos local. É necessário que a pasta de destino já exista ou o comando falhará.
    • LOCATION: o local regional ou multirregional do repositório.
    • REPOSITORY: o nome do repositório em que o artefato está armazenado.
    • PACKAGE: o pacote do arquivo para download.
    • VERSION: a versão do arquivo para download.
    • NAME (opcional): o nome do arquivo para download. Sem essa flag, o comando vai fazer o download de todos os arquivos para o pacote e a versão especificados, além de criar os diretórios necessários no destino.

    Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

    gcloud artifacts generic download \
        --destination=DESTINATION \
        --location=LOCATION \
        --repository=REPOSITORY \
        --package=PACKAGE \
        --version=VERSION \
        --name=NAME
    

    Windows (PowerShell)

    gcloud artifacts generic download `
        --destination=DESTINATION `
        --location=LOCATION `
        --repository=REPOSITORY `
        --package=PACKAGE `
        --version=VERSION `
        --name=NAME
    

    Windows (cmd.exe)

    gcloud artifacts generic download ^
        --destination=DESTINATION ^
        --location=LOCATION ^
        --repository=REPOSITORY ^
        --package=PACKAGE ^
        --version=VERSION ^
        --name=NAME
    

    API

    Antes de usar os dados da solicitação, faça as substituições a seguir:

    • PROJECT: o ID do projeto do Google Cloud. Caso o ID do projeto contenha dois pontos (:), consulte Projetos com escopo de domínio.
    • LOCATION: o local regional ou multirregional do repositório.
    • REPOSITORY: o nome do repositório em que o artefato está armazenado.
    • DESTINATION: o caminho para a pasta de destino no sistema de arquivos local. É necessário que a pasta de destino já exista ou o comando falhe.
    • FILE: o nome do arquivo codificado pelo URL. Para encontrar esse valor, execute o comando gcloud artifacts files list e copie o valor para FILE. Ele precisa ser convertido em formato codificado de URL para esse comando. Por exemplo, path/to/file.jar precisaria ser inserido como path%2Fto%2Ffile.jar.

    Método HTTP e URL:

    GET https://artifactregistry.googleapis.com/download/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/files/FILE:download?alt=media

    Para enviar a solicitação, expanda uma destas opções:

    O download começará imediatamente.

    Excluir artefatos genéricos

    Para excluir artefatos genéricos do repositório, execute o comando gcloud artifacts files delete. Esse comando só está disponível para repositórios de formato genérico.

    Antes de usar os dados do comando abaixo, faça estas substituições:

    • FILE: o nome do arquivo completo. Para encontrar esse valor, execute o comando gcloud artifacts files list e copie o valor para FILE.
    • LOCATION: o local regional ou multirregional do repositório.
    • REPOSITORY: o nome do repositório em que o artefato está armazenado.

    Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

    gcloud artifacts files delete \
        FILE \
        --location=LOCATION \
        --repository=REPOSITORY
    

    Windows (PowerShell)

    gcloud artifacts files delete `
        FILE `
        --location=LOCATION `
        --repository=REPOSITORY
    

    Windows (cmd.exe)

    gcloud artifacts files delete ^
        FILE ^
        --location=LOCATION ^
        --repository=REPOSITORY
    

    A seguir