本页面介绍了如何存储有版本控制、不可变的工件, 遵循 Artifact Registry 通用格式中的任何特定软件包格式 代码库
如需熟悉如何在 Artifact Registry 中存储通用工件,您需要 可以尝试参阅快速入门。
通用工件是指任何格式的文件,包括但不限于 以下:
- 压缩文件,例如 tar 文件和 zip 文件
- 配置文件,例如 YAML 和 TOML 文件
- 文本文件和 PDF
- 二进制文件
- 归档
- 媒体文件
与其他格式不同,存储在通用格式代码库中的制品不会 供 Docker、软件包管理器或其他第三方客户端使用。
准备工作
- 创建一个通用格式的代码库。
- 验证您是否拥有 存储库
- (可选)为 Google Cloud CLI 命令配置默认值。
所需的角色
如需获取管理通用工件所需的权限, 请让管理员向您授予 代码库中的以下 IAM 角色:
-
查看制品:
Artifact Registry 读取者 (
roles/artifactregistry.reader
) -
下载工件:
Artifact Registry 读取者 (
roles/artifactregistry.reader
) -
将制品上传到代码库:
Artifact Registry Writer (
roles/artifactregistry.writer
) -
删除软件制品:
Artifact Registry 代码库管理员 (
roles/artifactregistry.repoAdmin
)
如需详细了解如何授予角色,请参阅管理访问权限。
上传通用制品
您可以通过文件逐个上传通用制品,也可以通过 目录。上传时,软件包名称和版本号 。您也可以在目标文件结构中指定路径 上传它们。如果未指定目标路径,系统会将制品上传到 根级别
如需将通用工件上传到您的代码库,请运行以下命令:
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 控制台。
打开 Google Cloud 控制台中的制品库页面。
在代码库列表中,选择该代码库。
点击软件包的名称。
如需查看所有软件包版本的可下载文件,请点击 Files(文件) 标签页。
如需查看软件包特定版本的可下载文件,请点击 版本名称,然后点击文件标签页。
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
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