本页面介绍了如何在 Artifact Registry 通用格式代码库中存储不遵循任何特定软件包格式的版本化不可变工件。
如需熟悉如何在 Artifact Registry 中存储通用制品,您可以尝试快速入门。
通用制品是指任何格式的文件,包括但不限于以下格式:
- 压缩文件,例如 tar 文件和 zip 文件
- 配置文件,例如 YAML 和 TOML 文件
- 文本文件和 PDF
- 二进制文件
- 归档
- 媒体文件
与其他格式不同,以通用格式存储库存储的制品不适合由 Docker、软件包管理器或其他第三方客户端使用。
准备工作
- 创建通用格式代码库。
- 验证您是否拥有访问代码库所需的权限。
- (可选)为 Google Cloud CLI 命令配置默认值。
所需的角色
如需获得管理通用制品所需的权限,请让您的管理员为您授予代码库的以下 IAM 角色:
-
查看制品:
Artifact Registry Reader (
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
标志,并上传目录而不是单个文件。- 使用
--source-directory
标志跳过已存在的文件时,值为--skip-existing
。否则,当尝试上传已存在的文件时,该命令会失败。
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 控制台中打开代码库页面。
在代码库列表中,选择相应代码库。
点击相应软件包的名称。
如需查看所有软件包版本的可下载文件,请点击文件标签页。
如需查看软件包特定版本的可下载文件,请点击相应版本名称,然后点击文件标签页。
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