使用其他工件格式

本页面介绍了如何在 Artifact Registry 通用格式代码库中存储未遵循任何特定软件包格式的版本化不可变工件。

如需熟悉如何在 Artifact Registry 中存储通用工件,您可以尝试参阅quickstart

通用工件是指任何格式的文件,包括但不限于:

  • 压缩文件,例如 tar 文件和 zip 文件
  • 配置文件,例如 YAML 和 TOML 文件
  • 文本文件和 PDF
  • 二进制文件
  • 归档
  • 媒体文件

与其他格式不同,存储在通用格式的代码库中的制品不应该供 Docker、软件包管理器或其他第三方客户端使用。

准备工作

  1. 创建一个通用格式的代码库
  2. 验证您是否拥有代码库所需的权限
  3. (可选)为 Google Cloud CLI 命令配置默认值

所需的角色

如需获取管理通用工件所需的权限,请让管理员向您授予代码库的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

上传通用制品

您可以通过文件逐个上传通用工件,也可以按目录以多个版本上传。上传时,必须指定软件包名称和版本号。您还可以在目标文件结构中指定上传路径。如果未指定目标路径,则默认情况下,工件会上传到根级别。

如需将通用工件上传到您的代码库,请运行以下命令:

gcloud

在使用下面的命令数据之前,请先进行以下替换:

  • PROJECT:您的 Google Cloud 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目
  • LOCATION:代码库的单区域或多区域位置
  • REPOSITORY:存储制品的代码库的名称。
  • SOURCE:您要上传的文件的位置和名称。
  • PACKAGE:您要上传的文件的软件包名称。
  • VERSION:您要上传的文件的版本。
  • 执行以下命令:

    Linux、macOS 或 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
    
    上传工件时,您还可以使用其他标志:
    • --destination-path=PATH - 上传到软件包和版本中的指定文件夹。还会创建不存在的所有文件夹。
    • --source-directory=SOURCE_DIR 用于替换 --source 标志,并上传目录而不是单个文件。
    • --skip-existing(当使用 --source-directory 标志跳过现有文件时)。否则,该命令将在尝试上传已存在的文件时失败。

    API

    在使用任何请求数据之前,请先进行以下替换:

    • PROJECT 是您的 Google Cloud 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目
    • LOCATION 是代码库的单区域或多区域位置
    • REPOSITORY 是存储工件的代码库的名称。
    • SOURCE 是要上传的文件的位置和名称。
    • PACKAGE 是要上传的文件的软件包名称,
    • VERSION 是您要上传的文件的版本。
    • NAME 是该文件在代码库中的新名称。

    HTTP 方法和网址:

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

    curl(Linux、macOS 或 Cloud Shell)

    如需发送请求,请执行以下命令:

      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
    

    列出制品

    控制台

    您可以在 Google Cloud 控制台中查看通用格式代码库的工件。

    1. 打开 Google Cloud 控制台中的制品库页面。

      打开“代码库”页面

    2. 在代码库列表中,选择该代码库。

    3. 点击软件包的名称。

    4. 如需查看所有软件包版本的可下载文件,请点击 Files 标签页。

    5. 如需查看软件包特定版本的可下载文件,请点击版本名称,然后点击文件标签页。

    gcloud

    您可以使用 gcloud artifacts files list 命令列出代码库中的工件。

    在使用下面的命令数据之前,请先进行以下替换:

    • PROJECT:您的 Google Cloud 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目
    • LOCATION:代码库的单区域或多区域位置
    • REPOSITORY:存储制品的代码库的名称。

    执行以下命令:

    Linux、macOS 或 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
    
    响应包含文件详细信息,格式为 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
    

    您还可以添加以下一个或两个标志,按版本和软件包排序:

    • --package=PACKAGE:用于仅显示特定软件包的文件。
    • --version=VERSION 表示仅显示特定版本的文件。

    下载通用工件

    如需从您的代码库下载通用工件,请运行以下命令:

    gcloud

    在使用下面的命令数据之前,请先进行以下替换:

    • DESTINATION:本地文件系统中目标文件夹的路径。目标文件夹必须已存在,否则命令将失败。
    • LOCATION:代码库的单区域或多区域位置
    • REPOSITORY:存储制品的代码库的名称。
    • PACKAGE:要下载文件的软件包。
    • VERSION:要下载的文件的版本。
    • NAME(可选):要下载的文件的名称。如果没有此标志,该命令将下载指定软件包和版本的所有文件,并在目标位置创建必要的目录。

    执行以下命令:

    Linux、macOS 或 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

    在使用任何请求数据之前,请先进行以下替换:

    • PROJECT:您的 Google Cloud 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目
    • LOCATION:代码库的单区域或多区域位置
    • REPOSITORY:存储制品的代码库的名称。
    • DESTINATION:本地文件系统中目标文件夹的路径。目标文件夹必须已存在,否则命令将失败。
    • FILE:网址编码的文件名。您可以通过运行 gcloud artifacts files list 命令并复制 FILE 的值来查找此值。对于此命令,它必须转换为网址编码格式。例如,path/to/file.jar 需要以 path%2Fto%2Ffile.jar 的形式输入。

    HTTP 方法和网址:

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

    如需发送您的请求,请展开以下选项之一:

    您应该会立即开始下载。

    删除通用制品

    如需从代码库中删除通用工件,请运行 gcloud artifacts files delete 命令。此命令仅适用于通用格式的代码库。

    在使用下面的命令数据之前,请先进行以下替换:

    • FILE:完整文件名。您可以通过运行 gcloud artifacts files list 命令并复制 FILE 的值来查找此值。
    • LOCATION:代码库的单区域或多区域位置
    • REPOSITORY:存储制品的代码库的名称。

    执行以下命令:

    Linux、macOS 或 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
    

    后续步骤