使用其他工件格式

本页面介绍了如何存储有版本控制、不可变的工件, 遵循 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

    后续步骤