本页介绍了如何创建 Artifact Registry 标准代码库。
标准代码库是您的私有工件的代码库。您可以将工件上传到这些代码库,也可以直接从这些代码库下载工件。
以下代码库模式也适用于某些工件格式:
- 远程代码库用于存储来自外部来源(例如 Docker Hub、Maven Central 或 PyPI)的工件。
- 虚拟代码库可用作下载、安装或部署上游标准代码库或远程代码库中工件的单一接入点。
每个代码库可以包含一种受支持格式的工件。
准备工作
- 启用 Artifact Registry,包括启用 Artifact Registry API 和安装 Google Cloud CLI。
- (可选)为 gcloud 命令配置默认值。
- 如果您需要使用客户管理的加密密钥 (CMEK) 加密代码库内容,请在 Cloud KMS 中为代码库创建并启用密钥。
所需的角色
如需获得创建代码库所需的权限,请让您的管理员向您授予 Google Cloud 项目的 Artifact Registry Administrator (roles/artifactregistry.admin
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
创建标准制品库
创建代码库时,您必须配置以下设置,这些设置在代码库创建后将无法更改:
- 工件格式。
- 代码库模式(如果所选格式有多个模式)。
- 代码库位置。
- 使用 Google-owned and Google-managed encryption keys 或客户管理的加密密钥加密。Artifact Registry 默认使用Google-owned and Google-managed encryption keys 。
Artifact Registry 会强制执行组织政策限制,这些限制要求使用 CMEK 加密资源或限制可用于 CMEK 保护的 Cloud KMS 密钥。
使用 Google Cloud 控制台创建代码库
打开 Google Cloud 控制台中的制品库页面。
点击创建代码库。
指定代码库名称。对于项目中的每个代码库位置,代码库名称不得重复。
选择代码库格式。
如果有多个代码库模式可用,请选择标准。
仅限 Maven:配置版本政策。
选择版本政策:
- 无 - 无版本政策。同时存储发布版本和快照软件包。
- 发布版本 - 仅存储发布版本。
- 快照 - 仅存储快照软件包。
如果您希望快照代码库接受会覆盖代码库中现有版本的非唯一快照,请选择允许快照覆盖。
在位置类型下,选择代码库的位置:
选择位置类型:区域或多区域。位置列表会更改以反映您的选择。
在区域或多区域列表中,选择一个位置。
如需了解位置类型和受支持的位置,请参阅代码库位置
为代码库添加说明。说明有助于确定代码库的用途以及其包含的工件类型。
请勿添加敏感数据,因为代码库说明未加密。
如果您想使用标签整理代码库,请点击添加标签,然后输入标签的键值对。您可以在创建代码库后添加、修改或移除标签。
在加密部分,为代码库选择加密机制。
- Google-managed encryption key - 使用Google-owned and Google-managed encryption key加密代码库内容。
客户管理的密钥 - 使用您通过 Cloud Key Management Service 控制的密钥来加密代码库内容。如需查看密钥设置说明,请参阅为代码库设置 CMEK。
对于 Docker 代码库,不可更改的映像标记设置会将代码库配置为使用始终指向同一映像摘要的映像标记。具有 Artifact Registry 管理员角色的用户可以在代码库创建后更改此设置。
- 默认情况下,此设置处于停用状态。映像标记是可变的,这意味着标记指向的映像摘要可能会发生变化。
- 如果启用此设置,图片代码将不可更改。标记必须始终指向同一映像摘要。如需详细了解可变映像标记和不可变映像标记,请参阅容器映像版本。
如果您想使用清理政策删除未使用的工件,请在清理政策部分中执行以下操作:
- 选择试运行,在应用政策之前对其进行测试。
- 点击添加政策,将保留或删除政策添加到代码库。
- 在名称字段中为清理政策指定一个描述性名称。
在政策类型部分,选择以下选项之一:
- 按条件删除:根据您定义的条件删除工件。
- 按条件保留:根据您定义的条件保留工件。
保留最新版本:为每个软件包保留一定数量的最新版本。
如需详细了解清理政策,请参阅配置清理政策。
在 Artifact Analysis 部分,选择漏洞扫描设置:
已启用 - 允许在此代码库中进行扫描。您必须为项目启用 Container Scanning API。
当您启用 Container Scanning API 后,系统会立即开始计费。在项目上启用 Container Scanning API 后,系统会为所有新仓库和现有仓库启用漏洞扫描功能。当您将映像推送到 Artifact Registry 时,Artifact Analysis 会自动对其进行扫描。
已停用 - 阻止在此代码库中进行扫描。如果您的项目启用了 Container Scanning API,则系统会继续扫描其他仓库;此仓库将被排除。
如需详细了解漏洞扫描选项,请参阅启用和停用自动扫描。
点击创建。
Artifact Registry 会创建代码库,并将其添加到代码库列表中。
创建代码库后,请执行以下操作:
- 授予对代码库的访问权限。
配置 Docker、软件包管理器和其他第三方客户端以对代码库进行身份验证。
使用 Google Cloud CLI 创建代码库
运行该命令以创建新代码库。
Apt
gcloud artifacts repositories create REPOSITORY \ --repository-format=apt \ --location=LOCATION \ --description="DESCRIPTION" \ --kms-key=KMS-KEY \ --async
替换以下内容:
REPOSITORY
:代码库的名称。对于项目中的每个代码库位置,代码库名称不得重复。LOCATION
:制品库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令:gcloud artifacts locations list
DESCRIPTION
:代码库的说明。 请勿添加敏感数据,因为代码库说明不会加密。KMS-KEY
:Cloud KMS 加密密钥的完整路径(如果您使用客户管理的加密密钥来加密代码库内容的话)。路径的格式为:projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY
替换以下内容:
KMS-PROJECT
:存储密钥的项目。KMS-LOCATION
:密钥的位置。KEY-RING
:密钥环的名称。KEY
:密钥的名称。
--async
:会立即返回结果,而无需等待正在进行的操作完成。
Docker
gcloud artifacts repositories create REPOSITORY \
--repository-format=docker \
--location=LOCATION \
--description="DESCRIPTION" \
--kms-key=KMS-KEY \
--immutable-tags \
--async \
--disable-vulnerability-scanning
替换以下内容:
REPOSITORY
:代码库的名称。对于项目中的每个代码库位置,代码库名称不得重复。DESCRIPTION
:代码库的说明。请勿添加敏感数据,因为代码库说明未加密。KMS-KEY
:Cloud KMS 加密密钥的完整路径(如果您使用客户管理的加密密钥来加密代码库内容的话)。路径的格式为:projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY
替换以下内容:
KMS-PROJECT
:存储密钥的项目。KMS-LOCATION
:密钥的位置。KEY-RING
:密钥环的名称。KEY
:密钥的名称。
--immutable-tags
是一个可选标志,用于将代码库配置为使用始终指向同一映像摘要的标记。默认情况下,如果未传递
--immutable-tags
标志,则可以将代码移至其他图片摘要。如需详细了解不可更改的映像标记和可更改的映像标记,请参阅容器映像版本。--async
会立即返回结果,而无需等待正在进行的操作完成。
--disable-vulnerability-scanning
:是一个可选标志,用于配置代码库以停用自动漏洞扫描。--allow-vulnerability-scanning
:是一个可选标志,用于配置代码库以允许自动漏洞扫描。如需了解详情,请参阅启用或停用自动扫描。
Generic
gcloud artifacts repositories create REPOSITORY \ --repository-format=generic \ --location=LOCATION \ --description="DESCRIPTION" \ --kms-key=KMS-KEY \ --async
替换以下内容:
REPOSITORY
:代码库的名称。对于项目中的每个代码库位置,代码库名称不得重复。LOCATION
:制品库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令:gcloud artifacts locations list
DESCRIPTION
:代码库的说明。 请勿添加敏感数据,因为代码库说明不会加密。KMS-KEY
:Cloud KMS 加密密钥的完整路径(如果您使用客户管理的加密密钥来加密代码库内容的话)。路径的格式为:projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY
替换以下内容:
KMS-PROJECT
:存储密钥的项目。KMS-LOCATION
:密钥的位置。KEY-RING
:密钥环的名称。KEY
:密钥的名称。
--async
:会立即返回结果,而无需等待正在进行的操作完成。
Go
gcloud artifacts repositories create REPOSITORY \ --repository-format=go \ --location=LOCATION \ --description="DESCRIPTION" \ --kms-key=KMS-KEY \ --async
替换以下内容:
REPOSITORY
:代码库的名称。对于项目中的每个代码库位置,代码库名称不得重复。LOCATION
:制品库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令:gcloud artifacts locations list
DESCRIPTION
:代码库的说明。 请勿添加敏感数据,因为代码库说明不会加密。KMS-KEY
:Cloud KMS 加密密钥的完整路径(如果您使用客户管理的加密密钥来加密代码库内容的话)。路径的格式为:projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY
替换以下内容:
KMS-PROJECT
:存储密钥的项目。KMS-LOCATION
:密钥的位置。KEY-RING
:密钥环的名称。KEY
:密钥的名称。
--async
:会立即返回结果,而无需等待正在进行的操作完成。
KubeFlow Pipelines
gcloud artifacts repositories create REPOSITORY \ --repository-format=kfp \ --location=LOCATION \ --description="DESCRIPTION" \ --kms-key=KMS-KEY \ --async
替换以下内容:
REPOSITORY
:代码库的名称。对于项目中的每个代码库位置,代码库名称不得重复。LOCATION
:制品库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令:gcloud artifacts locations list
DESCRIPTION
:代码库的说明。 请勿添加敏感数据,因为代码库说明不会加密。KMS-KEY
:Cloud KMS 加密密钥的完整路径(如果您使用客户管理的加密密钥来加密代码库内容的话)。路径的格式为:projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY
替换以下内容:
KMS-PROJECT
:存储密钥的项目。KMS-LOCATION
:密钥的位置。KEY-RING
:密钥环的名称。KEY
:密钥的名称。
--async
:会立即返回结果,而无需等待正在进行的操作完成。
Maven
默认情况下,Maven 代码库会同时存储软件包的快照版本和发布版本。您可以指定版本政策来创建快照或发布代码库。
如需创建用于存储快照和版本的代码库,请运行以下命令:
gcloud artifacts repositories create REPOSITORY \ --repository-format=maven \ --location=LOCATION \ --description="DESCRIPTION" \ --kms-key=KMS-KEY \ --async
替换以下内容:
REPOSITORY
:代码库的名称。对于项目中的每个代码库位置,代码库名称不得重复。LOCATION
:制品库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令:gcloud artifacts locations list
DESCRIPTION
:代码库的说明。 请勿添加敏感数据,因为代码库说明不会加密。KMS-KEY
:Cloud KMS 加密密钥的完整路径(如果您使用客户管理的加密密钥来加密代码库内容的话)。路径的格式为:projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY
替换以下内容:
KMS-PROJECT
:存储密钥的项目。KMS-LOCATION
:密钥的位置。KEY-RING
:密钥环的名称。KEY
:密钥的名称。
--async
:会立即返回结果,而无需等待正在进行的操作完成。
如需在不同的代码库中存储快照和发布版本,请在命令中指定版本政策:
gcloud artifacts repositories create REPOSITORY \
--repository-format=maven \
[--location=LOCATION] \
[--description="DESCRIPTION"] \
[--kms-key=KMS-KEY] \
[--version-policy=VERSION-POLICY] \
[--allow-snapshot-overwrites] \
[--async] \
以下标志专门针对 Maven 仓库:
-
--version-policy=VERSION-POLICY
指定要存储在代码库中的软件包类型。您可以将 VERSION-POLICY 设置为:
None
- 无版本政策。同时存储发布版本和快照软件包。 如果您未在命令中添加--version-policy
标志,则系统会采用此默认设置。Release
- 仅存储发布软件包。Snapshot
- 仅存储快照软件包。
--allow-snapshot-overwrites
仅适用于快照代码库。如果您指定此标志,则可以发布会覆盖代码库中现有版本的非唯一快照。
npm
gcloud artifacts repositories create REPOSITORY \ --repository-format=npm \ --location=LOCATION \ --description="DESCRIPTION" \ --kms-key=KMS-KEY \ --async
替换以下内容:
REPOSITORY
:代码库的名称。对于项目中的每个代码库位置,代码库名称不得重复。LOCATION
:制品库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令:gcloud artifacts locations list
DESCRIPTION
:代码库的说明。 请勿添加敏感数据,因为代码库说明不会加密。KMS-KEY
:Cloud KMS 加密密钥的完整路径(如果您使用客户管理的加密密钥来加密代码库内容的话)。路径的格式为:projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY
替换以下内容:
KMS-PROJECT
:存储密钥的项目。KMS-LOCATION
:密钥的位置。KEY-RING
:密钥环的名称。KEY
:密钥的名称。
--async
:会立即返回结果,而无需等待正在进行的操作完成。
Python
gcloud artifacts repositories create REPOSITORY \ --repository-format=python \ --location=LOCATION \ --description="DESCRIPTION" \ --kms-key=KMS-KEY \ --async
替换以下内容:
REPOSITORY
:代码库的名称。对于项目中的每个代码库位置,代码库名称不得重复。LOCATION
:制品库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令:gcloud artifacts locations list
DESCRIPTION
:代码库的说明。 请勿添加敏感数据,因为代码库说明不会加密。KMS-KEY
:Cloud KMS 加密密钥的完整路径(如果您使用客户管理的加密密钥来加密代码库内容的话)。路径的格式为:projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY
替换以下内容:
KMS-PROJECT
:存储密钥的项目。KMS-LOCATION
:密钥的位置。KEY-RING
:密钥环的名称。KEY
:密钥的名称。
--async
:会立即返回结果,而无需等待正在进行的操作完成。
Yum
gcloud artifacts repositories create REPOSITORY \ --repository-format=yum \ --location=LOCATION \ --description="DESCRIPTION" \ --kms-key=KMS-KEY \ --async
替换以下内容:
REPOSITORY
:代码库的名称。对于项目中的每个代码库位置,代码库名称不得重复。LOCATION
:制品库的单区域或多区域位置。如果您设置默认值,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令:gcloud artifacts locations list
DESCRIPTION
:代码库的说明。 请勿添加敏感数据,因为代码库说明不会加密。KMS-KEY
:Cloud KMS 加密密钥的完整路径(如果您使用客户管理的加密密钥来加密代码库内容的话)。路径的格式为:projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY
替换以下内容:
KMS-PROJECT
:存储密钥的项目。KMS-LOCATION
:密钥的位置。KEY-RING
:密钥环的名称。KEY
:密钥的名称。
--async
:会立即返回结果,而无需等待正在进行的操作完成。
Artifact Registry 会创建您的代码库。运行以下命令可查看代码库的说明:
gcloud artifacts repositories describe REPOSITORY \
--location=LOCATION
创建代码库后,请执行以下操作:
- 授予对代码库的访问权限。
- 配置清理政策以删除未使用的工件。
配置 Docker、软件包管理器和其他第三方客户端以对代码库进行身份验证。
使用 Terraform 创建代码库
使用 google_artifact_registry_repository 资源创建代码库。必须使用 terraform-provider-google
5.0.0
或更高版本。
如果您刚开始使用 Terraform for Google Cloud,请参阅 HashiCorp 网站上的使用入门 - Google Cloud 页面。
以下示例定义了提供程序和 Terraform 资源名称为 my-repo
的代码库。
Apt
provider "google" { project = "PROJECT-ID" }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "apt" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }
替换以下内容:
PROJECT-ID
是 Google Cloud 项目 ID。LOCATION
是代码库位置。REPOSITORY
是代码库名称。DESCRIPTION
是仓库的可选说明。请勿添加敏感数据,因为代码库说明未加密。- 如果您使用客户管理的加密密钥 (CMEK) 进行加密,则
KEY
是 Cloud Key Management Service 密钥的名称。省略此参数可使用默认设置,即 Google 管理的加密密钥。 DRY_RUN_STATUS
用于确定清理政策是否会删除工件,或者仅记录在代码库上设置清理政策后会删除哪些工件。如果您不想向代码库添加清理政策,请省略此字段。true
:设置要在试运行模式下运行的政策。在试运行模式下,系统不会删除任何工件。false
:应用清理政策。工件会根据政策被删除或保留。
如需详细了解清理政策,请参阅配置清理政策。
POLICY_NAME
是清理政策的名称。TAG_STATE
是应用政策的标记状态。值为tagged
、untagged
和any
。any
适用于已标记的工件和未标记的工件。如果代码库启用了不可更改标记,则无法删除带标记的工件。TAG_PREFIX
、TAG_PREFIX_N
是应用政策的标记前缀。PKG_PREFIX
、PKG_PREFIX_N
是要应用政策的软件包前缀。TIME_SINCE_UPLOAD
是指自工件版本上传到代码库以来经过的时间,以时长指定。您可以通过分别附加s
、m
、h
或d
来指定秒、分钟、小时或天时长。KEEP_COUNT
是要在代码库中保留的制品版本数。
Docker
provider "google" { project = "PROJECT-ID" }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "docker" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }
替换以下内容:
PROJECT-ID
是 Google Cloud 项目 ID。LOCATION
是代码库位置。REPOSITORY
是代码库名称。DESCRIPTION
是仓库的可选说明。请勿添加敏感数据,因为代码库说明未加密。- 如果您使用客户管理的加密密钥 (CMEK) 进行加密,则
KEY
是 Cloud Key Management Service 密钥的名称。省略此参数可使用默认设置,即 Google 管理的加密密钥。 DRY_RUN_STATUS
用于确定清理政策是否会删除工件,或者仅记录在代码库上设置清理政策后会删除哪些工件。如果您不想向代码库添加清理政策,请省略此字段。true
:设置要在试运行模式下运行的政策。在试运行模式下,系统不会删除任何工件。false
:应用清理政策。工件会根据政策被删除或保留。
如需详细了解清理政策,请参阅配置清理政策。
POLICY_NAME
是清理政策的名称。TAG_STATE
是应用政策的标记状态。值为tagged
、untagged
和any
。any
适用于已标记的工件和未标记的工件。如果代码库启用了不可更改标记,则无法删除带标记的工件。TAG_PREFIX
、TAG_PREFIX_N
是应用政策的标记前缀。PKG_PREFIX
、PKG_PREFIX_N
是要应用政策的软件包前缀。TIME_SINCE_UPLOAD
是指自工件版本上传到代码库以来经过的时间,以时长指定。您可以通过分别附加s
、m
、h
或d
来指定秒、分钟、小时或天时长。KEEP_COUNT
是要在代码库中保留的制品版本数。
Generic
provider "google" { project = "PROJECT-ID" }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "generic" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }
替换以下内容:
PROJECT-ID
是 Google Cloud 项目 ID。LOCATION
是代码库位置。REPOSITORY
是代码库名称。DESCRIPTION
是仓库的可选说明。请勿添加敏感数据,因为代码库说明未加密。- 如果您使用客户管理的加密密钥 (CMEK) 进行加密,则
KEY
是 Cloud Key Management Service 密钥的名称。省略此参数可使用默认设置,即 Google 管理的加密密钥。 DRY_RUN_STATUS
用于确定清理政策是否会删除工件,或者仅记录在代码库上设置清理政策后会删除哪些工件。如果您不想向代码库添加清理政策,请省略此字段。true
:设置要在试运行模式下运行的政策。在试运行模式下,系统不会删除任何工件。false
:应用清理政策。工件会根据政策被删除或保留。
如需详细了解清理政策,请参阅配置清理政策。
POLICY_NAME
是清理政策的名称。TAG_STATE
是应用政策的标记状态。值为tagged
、untagged
和any
。any
适用于已标记的工件和未标记的工件。如果代码库启用了不可更改标记,则无法删除带标记的工件。TAG_PREFIX
、TAG_PREFIX_N
是应用政策的标记前缀。PKG_PREFIX
、PKG_PREFIX_N
是要应用政策的软件包前缀。TIME_SINCE_UPLOAD
是指自工件版本上传到代码库以来经过的时间,以时长指定。您可以通过分别附加s
、m
、h
或d
来指定秒、分钟、小时或天时长。KEEP_COUNT
是要在代码库中保留的制品版本数。
Go
provider "google" { project = "PROJECT-ID" }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "go" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }
替换以下内容:
PROJECT-ID
是 Google Cloud 项目 ID。LOCATION
是代码库位置。REPOSITORY
是代码库名称。DESCRIPTION
是仓库的可选说明。请勿添加敏感数据,因为代码库说明未加密。- 如果您使用客户管理的加密密钥 (CMEK) 进行加密,则
KEY
是 Cloud Key Management Service 密钥的名称。省略此参数可使用默认设置,即 Google 管理的加密密钥。 DRY_RUN_STATUS
用于确定清理政策是否会删除工件,或者仅记录在代码库上设置清理政策后会删除哪些工件。如果您不想向代码库添加清理政策,请省略此字段。true
:设置要在试运行模式下运行的政策。在试运行模式下,系统不会删除任何工件。false
:应用清理政策。工件会根据政策被删除或保留。
如需详细了解清理政策,请参阅配置清理政策。
POLICY_NAME
是清理政策的名称。TAG_STATE
是应用政策的标记状态。值为tagged
、untagged
和any
。any
适用于已标记的工件和未标记的工件。如果代码库启用了不可更改标记,则无法删除带标记的工件。TAG_PREFIX
、TAG_PREFIX_N
是应用政策的标记前缀。PKG_PREFIX
、PKG_PREFIX_N
是要应用政策的软件包前缀。TIME_SINCE_UPLOAD
是指自工件版本上传到代码库以来经过的时间,以时长指定。您可以通过分别附加s
、m
、h
或d
来指定秒、分钟、小时或天时长。KEEP_COUNT
是要在代码库中保留的制品版本数。
KubeFlow Pipelines
provider "google" { project = "PROJECT-ID" }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "kfp" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }
替换以下内容:
PROJECT-ID
是 Google Cloud 项目 ID。LOCATION
是代码库位置。REPOSITORY
是代码库名称。DESCRIPTION
是仓库的可选说明。请勿添加敏感数据,因为代码库说明未加密。- 如果您使用客户管理的加密密钥 (CMEK) 进行加密,则
KEY
是 Cloud Key Management Service 密钥的名称。省略此参数可使用默认设置,即 Google 管理的加密密钥。 DRY_RUN_STATUS
用于确定清理政策是否会删除工件,或者仅记录在代码库上设置清理政策后会删除哪些工件。如果您不想向代码库添加清理政策,请省略此字段。true
:设置要在试运行模式下运行的政策。在试运行模式下,系统不会删除任何工件。false
:应用清理政策。工件会根据政策被删除或保留。
如需详细了解清理政策,请参阅配置清理政策。
POLICY_NAME
是清理政策的名称。TAG_STATE
是应用政策的标记状态。值为tagged
、untagged
和any
。any
适用于已标记的工件和未标记的工件。如果代码库启用了不可更改标记,则无法删除带标记的工件。TAG_PREFIX
、TAG_PREFIX_N
是应用政策的标记前缀。PKG_PREFIX
、PKG_PREFIX_N
是要应用政策的软件包前缀。TIME_SINCE_UPLOAD
是指自工件版本上传到代码库以来经过的时间,以时长指定。您可以通过分别附加s
、m
、h
或d
来指定秒、分钟、小时或天时长。KEEP_COUNT
是要在代码库中保留的制品版本数。
Maven
如果您未指定版本政策,Artifact Registry 会默认创建一个 Maven 制品库,用于存储快照版本和发布版本的软件包。
provider "google" { project = "PROJECT-ID" }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "maven" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }
替换以下内容:
PROJECT-ID
是 Google Cloud 项目 ID。LOCATION
是代码库位置。REPOSITORY
是代码库名称。DESCRIPTION
是仓库的可选说明。请勿添加敏感数据,因为代码库说明未加密。- 如果您使用客户管理的加密密钥 (CMEK) 进行加密,则
KEY
是 Cloud Key Management Service 密钥的名称。省略此参数可使用默认设置,即 Google 管理的加密密钥。 DRY_RUN_STATUS
用于确定清理政策是否会删除工件,或者仅记录在代码库上设置清理政策后会删除哪些工件。如果您不想向代码库添加清理政策,请省略此字段。true
:设置要在试运行模式下运行的政策。在试运行模式下,系统不会删除任何工件。false
:应用清理政策。工件会根据政策被删除或保留。
如需详细了解清理政策,请参阅配置清理政策。
POLICY_NAME
是清理政策的名称。TAG_STATE
是应用政策的标记状态。值为tagged
、untagged
和any
。any
适用于已标记的工件和未标记的工件。如果代码库启用了不可更改标记,则无法删除带标记的工件。TAG_PREFIX
、TAG_PREFIX_N
是应用政策的标记前缀。PKG_PREFIX
、PKG_PREFIX_N
是要应用政策的软件包前缀。TIME_SINCE_UPLOAD
是指自工件版本上传到代码库以来经过的时间,以时长指定。您可以通过分别附加s
、m
、h
或d
来指定秒、分钟、小时或天时长。KEEP_COUNT
是要在代码库中保留的制品版本数。如需在不同的代码库中存储快照版本和发布版本,请使用
maven_config
块为代码库指定版本政策。此块支持以下设置:version_policy
使用以下某个值设置版本政策:VERSION_POLICY_UNSPECIFIED
:存储快照和版本软件包。这是默认设置。- 发布:仅存储发布软件包。
- 快照:仅存储快照软件包。
allow_snapshot_overwrites
使用SNAPSHOT
版本政策配置代码库,以接受会覆盖代码库中现有版本的非唯一快照。以下示例定义了一个具有发布版本政策的 Maven 仓库。
provider "google" { project = "my-project" } resource "google_artifact_registry_repository" "my-repo" { provider = google-beta location = "us-central1" repository_id = "my-repo" description = "Maven repository" format = "MAVEN" maven_config { version_policy = "RELEASE" } }
npm
provider "google" { project = "PROJECT-ID" }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "npm" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }
替换以下内容:
PROJECT-ID
是 Google Cloud 项目 ID。LOCATION
是代码库位置。REPOSITORY
是代码库名称。DESCRIPTION
是仓库的可选说明。请勿添加敏感数据,因为代码库说明未加密。- 如果您使用客户管理的加密密钥 (CMEK) 进行加密,则
KEY
是 Cloud Key Management Service 密钥的名称。省略此参数可使用默认设置,即 Google 管理的加密密钥。 DRY_RUN_STATUS
用于确定清理政策是否会删除工件,或者仅记录在代码库上设置清理政策后会删除哪些工件。如果您不想向代码库添加清理政策,请省略此字段。true
:设置要在试运行模式下运行的政策。在试运行模式下,系统不会删除任何工件。false
:应用清理政策。工件会根据政策被删除或保留。
如需详细了解清理政策,请参阅配置清理政策。
POLICY_NAME
是清理政策的名称。TAG_STATE
是应用政策的标记状态。值为tagged
、untagged
和any
。any
适用于已标记的工件和未标记的工件。如果代码库启用了不可更改标记,则无法删除带标记的工件。TAG_PREFIX
、TAG_PREFIX_N
是应用政策的标记前缀。PKG_PREFIX
、PKG_PREFIX_N
是要应用政策的软件包前缀。TIME_SINCE_UPLOAD
是指自工件版本上传到代码库以来经过的时间,以时长指定。您可以通过分别附加s
、m
、h
或d
来指定秒、分钟、小时或天时长。KEEP_COUNT
是要在代码库中保留的制品版本数。
Python
provider "google" { project = "PROJECT-ID" }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "python" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }
替换以下内容:
PROJECT-ID
是 Google Cloud 项目 ID。LOCATION
是代码库位置。REPOSITORY
是代码库名称。DESCRIPTION
是仓库的可选说明。请勿添加敏感数据,因为代码库说明未加密。- 如果您使用客户管理的加密密钥 (CMEK) 进行加密,则
KEY
是 Cloud Key Management Service 密钥的名称。省略此参数可使用默认设置,即 Google 管理的加密密钥。 DRY_RUN_STATUS
用于确定清理政策是否会删除工件,或者仅记录在代码库上设置清理政策后会删除哪些工件。如果您不想向代码库添加清理政策,请省略此字段。true
:设置要在试运行模式下运行的政策。在试运行模式下,系统不会删除任何工件。false
:应用清理政策。工件会根据政策被删除或保留。
如需详细了解清理政策,请参阅配置清理政策。
POLICY_NAME
是清理政策的名称。TAG_STATE
是应用政策的标记状态。值为tagged
、untagged
和any
。any
适用于已标记的工件和未标记的工件。如果代码库启用了不可更改标记,则无法删除带标记的工件。TAG_PREFIX
、TAG_PREFIX_N
是应用政策的标记前缀。PKG_PREFIX
、PKG_PREFIX_N
是要应用政策的软件包前缀。TIME_SINCE_UPLOAD
是指自工件版本上传到代码库以来经过的时间,以时长指定。您可以通过分别附加s
、m
、h
或d
来指定秒、分钟、小时或天时长。KEEP_COUNT
是要在代码库中保留的制品版本数。
Yum
provider "google" { project = "PROJECT-ID" }
resource "google_artifact_registry_repository" "my-repo" { location = "LOCATION" repository_id = "REPOSITORY" description = "DESCRIPTION" format = "yum" kms_key_name = "KEY" cleanup_policy_dry_run = DRY_RUN_STATUS cleanup_policies { id = "POLICY_NAME" action = "DELETE" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] older_than = "TIME_SINCE_UPLOAD" } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" condition { tag_state = "TAG_STATE" tag_prefixes = ["TAG_PREFIX", "TAG_PREFIX_N"] package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] } } cleanup_policies { id = "POLICY_NAME" action = "KEEP" most_recent_versions { package_name_prefixes = ["PKG_PREFIX", "PKG_PREFIX_N"] keep_count = KEEP_COUNT } } }
替换以下内容:
PROJECT-ID
是 Google Cloud 项目 ID。LOCATION
是代码库位置。REPOSITORY
是代码库名称。DESCRIPTION
是仓库的可选说明。请勿添加敏感数据,因为代码库说明未加密。- 如果您使用客户管理的加密密钥 (CMEK) 进行加密,则
KEY
是 Cloud Key Management Service 密钥的名称。省略此参数可使用默认设置,即 Google 管理的加密密钥。 DRY_RUN_STATUS
用于确定清理政策是否会删除工件,或者仅记录在代码库上设置清理政策后会删除哪些工件。如果您不想向代码库添加清理政策,请省略此字段。true
:设置要在试运行模式下运行的政策。在试运行模式下,系统不会删除任何工件。false
:应用清理政策。工件会根据政策被删除或保留。
如需详细了解清理政策,请参阅配置清理政策。
POLICY_NAME
是清理政策的名称。TAG_STATE
是应用政策的标记状态。值为tagged
、untagged
和any
。any
适用于已标记的工件和未标记的工件。如果代码库启用了不可更改标记,则无法删除带标记的工件。TAG_PREFIX
、TAG_PREFIX_N
是应用政策的标记前缀。PKG_PREFIX
、PKG_PREFIX_N
是要应用政策的软件包前缀。TIME_SINCE_UPLOAD
是指自工件版本上传到代码库以来经过的时间,以时长指定。您可以通过分别附加s
、m
、h
或d
来指定秒、分钟、小时或天时长。KEEP_COUNT
是要在代码库中保留的制品版本数。
Artifact Registry 会创建您的代码库。运行以下命令可查看代码库的说明:
gcloud artifacts repositories describe REPOSITORY \
--location=LOCATION
创建代码库后,请执行以下操作:
- 授予对代码库的访问权限。
配置 Docker、软件包管理器和其他第三方客户端以对代码库进行身份验证。
修改代码库说明
您可以通过 Google Cloud 控制台或 gcloud CLI 更改代码库说明。
控制台
打开 Google Cloud 控制台中的制品库页面。
在代码库列表中,选择相应代码库,然后点击修改代码库。
修改代码库说明,然后点击保存。
gcloud
如需更新代码库说明,请运行以下命令:
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT \
--location=LOCATION \
--description="DESCRIPTION"
替换以下内容: