本页面介绍了如何创建 Artifact Registry 标准代码库。
标准代码库是您的私有制品的代码库。您可以将工件上传到这些代码库,也可以直接从这些代码库下载工件。
以下仓库模式也可用于某些工件格式:
- 远程代码库存储来自 Docker Hub、Maven Central 或 PyPI 等外部来源的工件。
- 虚拟代码库充当下载、安装或部署上游标准代码库或远程代码库中的工件的单个接入点。
每个代码库可以包含一种受支持格式的制品。
准备工作
- 启用 Artifact Registry,包括启用 Artifact Registry API 和安装 Google Cloud CLI。
- (可选)为 gcloud 命令配置默认值。
- 如果您要求使用客户管理的加密密钥 (CMEK) 来加密代码库内容,请在 Cloud KMS 中为代码库创建并启用密钥。
所需的角色
如需获取创建代码库所需的权限,请让管理员向您授予 Google Cloud 项目的 Artifact Registry Repository Administrator (roles/artifactregistry.repoAdmin
) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限。
创建标准代码库
创建代码库时,您必须配置以下设置,这些设置一经创建便无法更改:
- 工件格式。
- 仓库模式(如果所选格式有多个模式)。
- 代码库位置。
- 使用 Google 拥有和 Google 管理的密钥或客户管理的加密密钥进行加密。默认情况下,Artifact Registry 使用 Google 拥有和由 Google 管理的加密密钥。
Artifact Registry 实施组织政策限制条件,要求 CMEK 对资源进行加密,或限制哪些 Cloud KMS 密钥可用于保护 CMEK。
使用 Google Cloud 控制台创建代码库
打开 Google Cloud 控制台中的制品库页面。
点击创建代码库。
指定代码库名称。对于项目中的每个代码库位置,代码库名称必须是唯一的。
选择代码库格式。
如果有多个代码库模式可用,请选择标准。
仅限 Maven:配置版本政策。
选择版本政策:
- 无 - 没有版本政策。存储发布软件包和快照软件包。
- 发布 - 仅存储发布软件包。
- Snapshot - 仅存储快照包。
如果您希望快照代码库接受覆盖代码库中现有版本的非唯一快照,请选择允许快照覆盖。
在位置类型下,选择代码库的位置:
选择位置类型:“单区域”或“多区域”。位置列表会发生变化,以反映您的选择。
在区域或多区域列表中,选择一个位置。
如需了解位置类型和支持的位置,请参阅代码库位置
为代码库添加说明。说明有助于确定代码库的用途及其包含的工件类型。
请勿包含敏感数据,因为仓库说明未加密。
如果要使用标签来整理代码库,请点击添加标签并为标签输入键值对。您可以在创建代码库后添加、修改或移除标签。
在加密部分中,为代码库选择加密机制。
- Google 管理的密钥 - 使用 Google 拥有和 Google 管理的密钥加密代码库内容。
客户管理的密钥 - 使用您通过 Cloud Key Management Service 控制的密钥来加密代码库内容。如需查看密钥设置说明,请参阅为代码库设置 CMEK。
对于 Docker 代码库,不可变映像标记设置会将您的代码库配置为使用始终指向同一映像摘要的映像标记。创建代码库后,拥有 Artifact Registry 管理员角色的用户可以更改此设置。
- 默认情况下,此设置处于停用状态。映像标记是可变的,也就是说,标记指向的映像摘要可以更改。
- 如果启用此设置,则映像代码不可更改。标记必须始终指向同一映像摘要。如需详细了解可变和不可变的映像标记,请参阅容器映像版本。
如果要使用清理政策删除未使用的工件,请在清理政策部分中执行以下操作:
- 选择试运行,在应用政策之前对其进行测试。
- 点击添加政策,向您的代码库添加保留政策或删除政策。
- 在名称字段中,为清理政策指定一个描述性名称。
在政策类型部分,选择以下任一选项:
- 条件删除:根据您定义的条件删除工件。
- 有条件保留:根据您定义的条件保留工件。
保留最新版本:为每个软件包保留一定数量的最新版本。
如需详细了解清理政策,请参阅配置清理政策。
点击创建。
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
:代码库的单区域或多区域 位置。如果您设置了 default,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令: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
请替换以下内容:
REPOSITORY
:代码库的名称。对于项目中的每个代码库位置,代码库名称不得重复。LOCATION
:代码库的单区域或多区域 位置。如果您设置了 default,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令: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
:密钥的名称。
--immutable-tags
是一个可选标志,用于将代码库配置为使用始终指向同一映像摘要的标记。默认情况下,如果未传递
--immutable-tags
标志,则标记可能会移至另一个映像摘要。如需详细了解不可变和可变的映像标记,请参阅容器映像版本。--async
会立即返回,而不会等待正在进行的操作完成。
通用
gcloud artifacts repositories create REPOSITORY \ --repository-format=generic \ --location=LOCATION \ --description="DESCRIPTION" \ --kms-key=KMS-KEY \ --async
请替换以下内容:
REPOSITORY
:代码库的名称。对于项目中的每个代码库位置,代码库名称不得重复。LOCATION
:代码库的单区域或多区域 位置。如果您设置了 default,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令: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
:代码库的单区域或多区域 位置。如果您设置了 default,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令: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 流水线
gcloud artifacts repositories create REPOSITORY \ --repository-format=kfp \ --location=LOCATION \ --description="DESCRIPTION" \ --kms-key=KMS-KEY \ --async
请替换以下内容:
REPOSITORY
:代码库的名称。对于项目中的每个代码库位置,代码库名称不得重复。LOCATION
:代码库的单区域或多区域 位置。如果您设置了 default,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令: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
:代码库的单区域或多区域 位置。如果您设置了 default,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令: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
:代码库的单区域或多区域 位置。如果您设置了 default,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令: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
:代码库的单区域或多区域 位置。如果您设置了 default,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令: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
:代码库的单区域或多区域 位置。如果您设置了 default,则可以省略此标志。如需查看受支持位置的列表,请运行以下命令: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
或更高版本。
如果您刚开始接触适用于 Google Cloud 的 Terraform,请参阅 HasiCorp 网站上的使用入门 - 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
是要保留在代码库中的工件版本数。
通用
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 流水线
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"
请替换以下内容: