本页面介绍了如何存储有版本控制、不可变的工件, 遵循 Artifact Registry 通用格式中的任何特定软件包格式 代码库
如需熟悉如何在 Artifact Registry 中存储通用工件,您需要 可以尝试参阅快速入门。
通用工件是指任何格式的文件,包括但不限于 以下:
- 压缩文件,例如 tar 文件和 ZIP 文件
- 配置文件,例如 YAML 和 TOML 文件
- 文本文件和 PDF 文件
- 二进制文件
- 归档
- 媒体文件
与其他格式不同,存储在通用格式代码库中的制品不会 供 Docker、软件包管理器或其他第三方客户端使用。
准备工作
- 创建通用格式代码库。
- 验证您是否拥有访问代码库所需的权限。
- (可选)为 Google Cloud CLI 命令配置默认值。
所需的角色
如需获得管理通用工件所需的权限,请让管理员向您授予代码库的以下 IAM 角色:
-
查看制品:
Artifact Registry 读取者 (
roles/artifactregistry.reader
) -
下载工件:
Artifact Registry Reader (
roles/artifactregistry.reader
) -
将制品上传到代码库:
Artifact Registry Writer (
roles/artifactregistry.writer
) -
删除工件:
Artifact Registry Repository Administrator (
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