使用其他工件格式

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

    后续步骤