创建标准制品库

本页面介绍如何创建 Artifact Registry 标准代码库。

标准代码库是用于存放私人工件的代码库。您可以将制品上传到这些代码库,也可以直接从这些代码库下载制品。

对于某些制品格式,还提供以下代码库模式:

  • 远程代码库用于存储来自 Docker Hub、Maven Central 或 PyPI 等外部来源的制品。
  • 虚拟代码库充当单一访问点,用于下载、安装或部署上游标准代码库或远程代码库中的制品。

每个代码库可以包含一种受支持的格式的制品。

准备工作

  1. 启用 Artifact Registry,包括启用 Artifact Registry API 和安装 Google Cloud CLI。
  2. (可选)为 gcloud 命令配置默认值
  3. 如果您需要使用客户管理的加密密钥 (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 控制台创建代码库

  1. 在 Google Cloud 控制台中打开代码库页面。

    打开“代码库”页面

  2. 点击创建代码库

  3. 指定代码库名称。对于项目中的每个代码库位置,代码库名称不得重复。

  4. 选择代码库格式。

  5. 如果有多种代码库模式可供选择,请选择标准

  6. 仅限 Maven:配置版本政策。

    1. 选择版本政策:

      • - 无版本政策。存储发布版和快照版软件包。
      • 发布版本 - 仅存储发布版本软件包。
      • 快照 - 仅存储快照软件包。
    2. 如果您希望快照代码库接受会覆盖代码库中现有版本的非唯一快照,请选择允许快照覆盖

  7. 位置类型下,选择代码库的位置:

    1. 选择位置类型:区域或多区域。位置列表会更改以反映您的选择。

    2. 区域多区域列表中,选择一个位置。

    如需了解位置类型和支持的位置,请参阅代码库位置

  8. 为代码库添加说明。说明有助于确定代码库的用途及其包含的制品类型。

    请勿包含敏感数据,因为代码库说明未加密。

  9. 如果您想使用标签来整理代码库,请点击添加标签,然后输入标签的键值对。您可以在创建代码库后添加、修改或移除标签。

  10. 加密部分中,选择代码库的加密机制。

    • Google-managed encryption key - 使用Google-owned and Google-managed encryption key加密代码库内容。
    • 客户管理的密钥 - 使用您通过 Cloud Key Management Service 控制的密钥来加密代码库内容。如需查看密钥设置说明,请参阅为代码库设置 CMEK

    • 对于 Docker 代码库,不可更改的映像标记设置会将代码库配置为使用始终指向同一映像摘要的映像标记。拥有 Artifact Registry 管理员角色的用户可以在创建代码库后更改此设置。

      • 默认情况下,此设置处于停用状态。映像标记是可变的,这意味着标记所指向的映像摘要可能会发生变化。
      • 如果启用此设置,图片代码将不可变。标记必须始终指向同一映像摘要。 如需详细了解可变和不可变的映像标记,请参阅容器映像版本
  11. 如果您想使用清理政策删除未使用的制品,请在清理政策部分执行以下操作:

    1. 选择试运行以在应用政策之前对其进行测试。
    2. 点击添加政策,为您的代码库添加保留或删除政策。
    3. 名称字段中,为清理政策指定一个描述性名称。
    4. 政策类型部分中,选择以下选项之一:

      • 按条件删除:根据您定义的条件删除制品。
      • 有条件保留:根据您定义的条件保留制品。
      • 保留最新版本:为每个软件包保留指定数量的最新版本。

      如需详细了解清理政策,请参阅配置清理政策

  12. Artifact Analysis 部分中,选择漏洞扫描设置:

    • 已启用 - 允许在此代码库中进行扫描。必须在您的项目中启用 Container Scanning API。

      当您启用 Container Scanning API 后,系统会立即开始计费。在项目上启用 Container Scanning API 后,所有新旧代码库都会启用漏洞扫描功能。当您将映像推送到 Artifact Registry 时,Artifact Analysis 会自动对其进行扫描。

    • 已停用 - 防止在此代码库中进行扫描。如果您的项目已启用 Container Scanning API,则系统会继续扫描其他代码库,但会排除此代码库。

      如需详细了解漏洞扫描选项,请参阅启用和停用自动扫描

  13. 点击创建

Artifact Registry 会创建代码库并将其添加到代码库列表中。

创建代码库后:

使用 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:代码库的名称。对于项目中的每个代码库位置,代码库名称不得重复。

    • 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:密钥的名称。
    • --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

创建代码库后:

使用 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 是要应用政策的标记状态。值包括 taggeduntaggedanyany 适用于已标记和未标记的制品。如果代码库已启用不可更改标记,则无法删除带标记的制品。

  • TAG_PREFIXTAG_PREFIX_N 是要应用政策的标记前缀。

  • PKG_PREFIXPKG_PREFIX_N 是要应用政策的软件包前缀。

  • TIME_SINCE_UPLOAD 是指自制品版本上传到代码库以来经过的时间,以时长形式指定。您可以分别添加 smhd 来指定以秒、分钟、小时或天为单位的时长。

  • 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 是要应用政策的标记状态。值包括 taggeduntaggedanyany 适用于已标记和未标记的制品。如果代码库已启用不可更改标记,则无法删除带标记的制品。

  • TAG_PREFIXTAG_PREFIX_N 是要应用政策的标记前缀。

  • PKG_PREFIXPKG_PREFIX_N 是要应用政策的软件包前缀。

  • TIME_SINCE_UPLOAD 是指自制品版本上传到代码库以来经过的时间,以时长形式指定。您可以分别添加 smhd 来指定以秒、分钟、小时或天为单位的时长。

  • 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 是要应用政策的标记状态。值包括 taggeduntaggedanyany 适用于已标记和未标记的制品。如果代码库已启用不可更改标记,则无法删除带标记的制品。

  • TAG_PREFIXTAG_PREFIX_N 是要应用政策的标记前缀。

  • PKG_PREFIXPKG_PREFIX_N 是要应用政策的软件包前缀。

  • TIME_SINCE_UPLOAD 是指自制品版本上传到代码库以来经过的时间,以时长形式指定。您可以分别添加 smhd 来指定以秒、分钟、小时或天为单位的时长。

  • 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 是要应用政策的标记状态。值包括 taggeduntaggedanyany 适用于已标记和未标记的制品。如果代码库已启用不可更改标记,则无法删除带标记的制品。

  • TAG_PREFIXTAG_PREFIX_N 是要应用政策的标记前缀。

  • PKG_PREFIXPKG_PREFIX_N 是要应用政策的软件包前缀。

  • TIME_SINCE_UPLOAD 是指自制品版本上传到代码库以来经过的时间,以时长形式指定。您可以分别添加 smhd 来指定以秒、分钟、小时或天为单位的时长。

  • 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 是要应用政策的标记状态。值包括 taggeduntaggedanyany 适用于已标记和未标记的制品。如果代码库已启用不可更改标记,则无法删除带标记的制品。

  • TAG_PREFIXTAG_PREFIX_N 是要应用政策的标记前缀。

  • PKG_PREFIXPKG_PREFIX_N 是要应用政策的软件包前缀。

  • TIME_SINCE_UPLOAD 是指自制品版本上传到代码库以来经过的时间,以时长形式指定。您可以分别添加 smhd 来指定以秒、分钟、小时或天为单位的时长。

  • 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 是要应用政策的标记状态。值包括 taggeduntaggedanyany 适用于已标记和未标记的制品。如果代码库已启用不可更改标记,则无法删除带标记的制品。

  • TAG_PREFIXTAG_PREFIX_N 是要应用政策的标记前缀。

  • PKG_PREFIXPKG_PREFIX_N 是要应用政策的软件包前缀。

  • TIME_SINCE_UPLOAD 是指自制品版本上传到代码库以来经过的时间,以时长形式指定。您可以分别添加 smhd 来指定以秒、分钟、小时或天为单位的时长。

  • KEEP_COUNT 是要保留在代码库中的制品版本数。

    如需将快照和发布版本存储在不同的代码库中,请使用 maven_config 块为代码库指定版本政策。此块支持以下设置:

  • version_policy 将版本政策设置为以下某个值:

    • VERSION_POLICY_UNSPECIFIED:存储快照和发布软件包。此选项为默认设置。
    • 发布:仅限商店发布软件包。
    • SNAPSHOT:仅存储快照软件包。
  • 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 是要应用政策的标记状态。值包括 taggeduntaggedanyany 适用于已标记和未标记的制品。如果代码库已启用不可更改标记,则无法删除带标记的制品。

  • TAG_PREFIXTAG_PREFIX_N 是要应用政策的标记前缀。

  • PKG_PREFIXPKG_PREFIX_N 是要应用政策的软件包前缀。

  • TIME_SINCE_UPLOAD 是指自制品版本上传到代码库以来经过的时间,以时长形式指定。您可以分别添加 smhd 来指定以秒、分钟、小时或天为单位的时长。

  • 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 是要应用政策的标记状态。值包括 taggeduntaggedanyany 适用于已标记和未标记的制品。如果代码库已启用不可更改标记,则无法删除带标记的制品。

  • TAG_PREFIXTAG_PREFIX_N 是要应用政策的标记前缀。

  • PKG_PREFIXPKG_PREFIX_N 是要应用政策的软件包前缀。

  • TIME_SINCE_UPLOAD 是指自制品版本上传到代码库以来经过的时间,以时长形式指定。您可以分别添加 smhd 来指定以秒、分钟、小时或天为单位的时长。

  • 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 是要应用政策的标记状态。值包括 taggeduntaggedanyany 适用于已标记和未标记的制品。如果代码库已启用不可更改标记,则无法删除带标记的制品。

  • TAG_PREFIXTAG_PREFIX_N 是要应用政策的标记前缀。

  • PKG_PREFIXPKG_PREFIX_N 是要应用政策的软件包前缀。

  • TIME_SINCE_UPLOAD 是指自制品版本上传到代码库以来经过的时间,以时长形式指定。您可以分别添加 smhd 来指定以秒、分钟、小时或天为单位的时长。

  • KEEP_COUNT 是要保留在代码库中的制品版本数。

Artifact Registry 会创建您的代码库。运行以下命令可查看代码库的说明:

gcloud artifacts repositories describe REPOSITORY \
    --location=LOCATION

创建代码库后:

修改代码库说明

您可以通过 Google Cloud 控制台或 gcloud CLI 更改代码库说明。

控制台

  1. 在 Google Cloud 控制台中打开代码库页面。

    打开“代码库”页面

  2. 在代码库列表中,选择相应代码库,然后点击修改代码库

  3. 修改代码库说明,然后点击保存

gcloud

如需更新代码库说明,请运行以下命令:

gcloud artifacts repositories update REPOSITORY \
    --project=PROJECT \
    --location=LOCATION \
    --description="DESCRIPTION"

替换以下内容:

  • REPOSITORY:代码库的名称。如果您配置了默认代码库,则可以省略此标志以使用默认值。
  • PROJECT: Google Cloud项目 ID。如果省略此标志,则系统会使用当前项目或默认项目。
  • LOCATION 是代码库的单区域或多区域位置。 使用此标志可查看特定位置的代码库。如果您配置了默认位置,则可以省略此标志以使用默认值。
  • DESCRIPTION:代码库的说明。

后续步骤