使用其他工件格式

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

如需熟悉如何在 Artifact Registry 中存储通用工件,您可以尝试使用快速入门

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

  • 压缩文件,例如 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 \
        --project=PROJECT \
        --source=SOURCE \
        --package=PACKAGE \
        --version=VERSION \
        --location=LOCATION \
        --repository=REPOSITORY

    Windows (PowerShell)

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

    Windows (cmd.exe)

    gcloud artifacts generic upload ^
        --project=PROJECT ^
        --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

    后续步骤