本页介绍了如何在 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
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
上传通用工件
您可以按文件单独上传通用工件,也可以按目录批量上传。上传时,必须指定软件包名称和版本号。您还可以在目标文件结构中指定要将其上传到的路径。如果未指定目标路径,工件会默认上传到根级别。
如需将通用工件上传到代码库,请运行以下命令:
在使用下面的命令数据之前,请先进行以下替换:
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
标志跳过现有文件时)。否则,当尝试上传已存在的文件时,该命令将失败。
在使用任何请求数据之前,请先进行以下替换:
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 artifacts files list
命令列出代码库中的工件。
在使用下面的命令数据之前,请先进行以下替换:
:您的 Google Cloud 项目 ID。 如果您的项目 ID 包含英文冒号 (PROJECT :
),请参阅网域级项目
:代码库的单区域或多区域位置。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
,以仅显示特定版本的文件。
下载通用工件
如需从代码库下载通用工件,请运行以下命令:
在使用下面的命令数据之前,请先进行以下替换:
:本地文件系统中目标文件夹的路径。目标文件夹必须已存在,否则命令将失败。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
在使用任何请求数据之前,请先进行以下替换:
:您的 Google Cloud 项目 ID。 如果您的项目 ID 包含英文冒号 (PROJECT :
),请参阅网域级项目。
:代码库的单区域或多区域位置。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
如需发送您的请求,请展开以下选项之一:
curl(Linux、macOS 或 Cloud Shell)
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
--outputDESTINATION \
"https://artifactregistry.googleapis.com/download/v1/projects/PROJECT /locations/LOCATION /repositories/REPOSITORY /files/FILE :download?alt=media"
PowerShell (Windows)
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-OutFileDESTINATION `
-Uri "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