创建标准代码库

本页面介绍了如何创建 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 Repository Administrator (roles/artifactregistry.repoAdmin) IAM 角色。 如需详细了解如何授予角色,请参阅管理访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

创建标准代码库

创建代码库时,您必须配置以下设置 无法更改

  • 工件格式。
  • 仓库模式(如果所选格式有多个模式)。
  • 代码库位置
  • 使用 Google 拥有的密钥和 Google 管理的密钥进行加密,或 客户管理的加密密钥。Artifact Registry 使用 默认情况下,由 Google 拥有和由 Google 管理的加密密钥。

Artifact Registry 实施组织政策限制条件 需要 CMEK 来加密资源或限制哪些 Cloud KMS 密钥可用于 CMEK 保护。

使用 Google Cloud 控制台创建代码库

  1. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

  2. 点击创建代码库

  3. 指定代码库名称。对于项目中的每个代码库位置, 代码库名称必须是唯一的

  4. 选择代码库格式。

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

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

    1. 选择版本政策:

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

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

    1. 选择位置类型:“单区域”或“多区域”。 更改地点信息以反映您的选择。

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

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

  8. 为代码库添加说明。说明有助于 确定代码库的用途和制品种类 资源。

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

  9. 如果您想使用标签来整理 点击添加标签,然后输入 标签。您可以在创建 存储库

  10. 加密部分,为 代码库

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

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

      • 默认情况下,此设置处于停用状态。映像标记是可变的 标记所指向的映像摘要可能会更改。
      • 如果启用此设置,则映像代码不可更改。代码必须始终 都指向同一个映像摘要 如需详细了解可变和不可更改的映像标记,请参阅 容器映像版本
  11. 如果您想使用清理政策删除未使用的工件,请在 清理政策部分:

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

      • 条件删除:根据您设置的条件删除工件 定义。
      • 有条件保留:根据您定义的条件保留工件。
      • 保留最新版本:保留一定数量的最新版本 每个软件包的版本。

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

  12. 点击创建

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: 单区域或多区域 代码库的位置。您可以 如果您设置了 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 会立即返回结果,无需等待 完成进度。

Generic

  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

创建代码库后,请执行以下操作:

使用 Terraform 创建代码库

使用 google_artifact_registry_repository 资源 来创建代码库 terraform-provider-google 版本 必须使用 5.0.0 或更高版本。

如果您刚开始接触适用于 Google Cloud 的 Terraform,请参阅 使用入门 - Google Cloud 页面 HashiCorp 网站。

以下示例定义了提供程序和包含 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 是可选的代码库说明。 请勿包含敏感数据,因为仓库说明 未加密。
  • KEY 是 Cloud Key Management Service 密钥的名称(如果您使用的是 使用客户管理的加密密钥 (CMEK) 进行加密。省略 此参数即可使用默认设置,即“Google 管理的加密” 密钥。
  • DRY_RUN_STATUS 用于确定是否删除清理政策 或者仅记录在设置后会删除的工件 清理政策如果您不想添加,请忽略 代码库的清理政策

    • true:设置要在试运行模式下运行的政策。没有软件制品 将在试运行模式下删除。
    • false:应用清理政策。制品已被删除或 具体取决于政策

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

  • POLICY_NAME 是清理政策的名称。

  • TAG_STATE 是要应用此政策的标记状态。值 为 taggeduntaggedanyany 会同时应用于已标记和 未标记工件。如果代码库启用了不可更改标记,并且已标记 软件制品不能删除

  • TAG_PREFIXTAG_PREFIX_N 是标记前缀 将政策应用到

  • PKG_PREFIXPKG_PREFIX_N 是软件包前缀 要应用此政策的对象

  • TIME_SINCE_UPLOAD 是工件版本以来的时间 已上传到代码库,并指定为时长。您可以指定 通过附加 smh、 或 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 是可选的代码库说明。 请勿包含敏感数据,因为仓库说明 未加密。
  • KEY 是 Cloud Key Management Service 密钥的名称(如果您使用的是 使用客户管理的加密密钥 (CMEK) 进行加密。省略 此参数即可使用默认设置,即“Google 管理的加密” 密钥。
  • DRY_RUN_STATUS 用于确定是否删除清理政策 或者仅记录在设置后会删除的工件 清理政策如果您不想添加,请忽略 代码库的清理政策

    • true:设置要在试运行模式下运行的政策。没有软件制品 将在试运行模式下删除。
    • false:应用清理政策。制品已被删除或 具体取决于政策

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

  • POLICY_NAME 是清理政策的名称。

  • TAG_STATE 是要应用此政策的标记状态。值 为 taggeduntaggedanyany 会同时应用于已标记和 未标记工件。如果代码库启用了不可更改标记,并且已标记 软件制品不能删除

  • TAG_PREFIXTAG_PREFIX_N 是标记前缀 将政策应用到

  • PKG_PREFIXPKG_PREFIX_N 是软件包前缀 要应用此政策的对象

  • TIME_SINCE_UPLOAD 是工件版本以来的时间 已上传到代码库,并指定为时长。您可以指定 通过附加 smh、 或 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 是可选的代码库说明。 请勿包含敏感数据,因为仓库说明 未加密。
  • KEY 是 Cloud Key Management Service 密钥的名称(如果您使用的是 使用客户管理的加密密钥 (CMEK) 进行加密。省略 此参数即可使用默认设置,即“Google 管理的加密” 密钥。
  • DRY_RUN_STATUS 用于确定是否删除清理政策 或者仅记录在设置后会删除的工件 清理政策如果您不想添加,请忽略 代码库的清理政策

    • true:设置要在试运行模式下运行的政策。没有软件制品 将在试运行模式下删除。
    • false:应用清理政策。制品已被删除或 具体取决于政策

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

  • POLICY_NAME 是清理政策的名称。

  • TAG_STATE 是要应用此政策的标记状态。值 为 taggeduntaggedanyany 会同时应用于已标记和 未标记工件。如果代码库启用了不可更改标记,并且已标记 软件制品不能删除

  • TAG_PREFIXTAG_PREFIX_N 是标记前缀 将政策应用到

  • PKG_PREFIXPKG_PREFIX_N 是软件包前缀 要应用此政策的对象

  • TIME_SINCE_UPLOAD 是工件版本以来的时间 已上传到代码库,并指定为时长。您可以指定 通过附加 smh、 或 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 是可选的代码库说明。 请勿包含敏感数据,因为仓库说明 未加密。
  • KEY 是 Cloud Key Management Service 密钥的名称(如果您使用的是 使用客户管理的加密密钥 (CMEK) 进行加密。省略 此参数即可使用默认设置,即“Google 管理的加密” 密钥。
  • DRY_RUN_STATUS 用于确定是否删除清理政策 或者仅记录在设置后会删除的工件 清理政策如果您不想添加,请忽略 代码库的清理政策

    • true:设置要在试运行模式下运行的政策。没有软件制品 将在试运行模式下删除。
    • false:应用清理政策。制品已被删除或 具体取决于政策

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

  • POLICY_NAME 是清理政策的名称。

  • TAG_STATE 是要应用此政策的标记状态。值 为 taggeduntaggedanyany 会同时应用于已标记和 未标记工件。如果代码库启用了不可更改标记,并且已标记 软件制品不能删除

  • TAG_PREFIXTAG_PREFIX_N 是标记前缀 将政策应用到

  • PKG_PREFIXPKG_PREFIX_N 是软件包前缀 要应用此政策的对象

  • TIME_SINCE_UPLOAD 是工件版本以来的时间 已上传到代码库,并指定为时长。您可以指定 通过附加 smh、 或 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 是可选的代码库说明。 请勿包含敏感数据,因为仓库说明 未加密。
  • KEY 是 Cloud Key Management Service 密钥的名称(如果您使用的是 使用客户管理的加密密钥 (CMEK) 进行加密。省略 此参数即可使用默认设置,即“Google 管理的加密” 密钥。
  • DRY_RUN_STATUS 用于确定是否删除清理政策 或者仅记录在设置后会删除的工件 清理政策如果您不想添加,请忽略 代码库的清理政策

    • true:设置要在试运行模式下运行的政策。没有软件制品 将在试运行模式下删除。
    • false:应用清理政策。制品已被删除或 具体取决于政策

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

  • POLICY_NAME 是清理政策的名称。

  • TAG_STATE 是要应用此政策的标记状态。值 为 taggeduntaggedanyany 会同时应用于已标记和 未标记工件。如果代码库启用了不可更改标记,并且已标记 软件制品不能删除

  • TAG_PREFIXTAG_PREFIX_N 是标记前缀 将政策应用到

  • PKG_PREFIXPKG_PREFIX_N 是软件包前缀 要应用此政策的对象

  • TIME_SINCE_UPLOAD 是工件版本以来的时间 已上传到代码库,并指定为时长。您可以指定 通过附加 smh、 或 d

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

Maven

如果您未指定版本政策,Artifact Registry 创建一个可存储 软件包的默认快照和发布版本

  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 是可选的代码库说明。 请勿包含敏感数据,因为仓库说明 未加密。
  • KEY 是 Cloud Key Management Service 密钥的名称(如果您使用的是 使用客户管理的加密密钥 (CMEK) 进行加密。省略 此参数即可使用默认设置,即“Google 管理的加密” 密钥。
  • DRY_RUN_STATUS 用于确定是否删除清理政策 或者仅记录在设置后会删除的工件 清理政策如果您不想添加,请忽略 代码库的清理政策

    • true:设置要在试运行模式下运行的政策。没有软件制品 将在试运行模式下删除。
    • false:应用清理政策。制品已被删除或 具体取决于政策

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

  • POLICY_NAME 是清理政策的名称。

  • TAG_STATE 是要应用此政策的标记状态。值 为 taggeduntaggedanyany 会同时应用于已标记和 未标记工件。如果代码库启用了不可更改标记,并且已标记 软件制品不能删除

  • TAG_PREFIXTAG_PREFIX_N 是标记前缀 将政策应用到

  • PKG_PREFIXPKG_PREFIX_N 是软件包前缀 要应用此政策的对象

  • TIME_SINCE_UPLOAD 是工件版本以来的时间 已上传到代码库,并指定为时长。您可以指定 通过附加 smh、 或 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 是可选的代码库说明。 请勿包含敏感数据,因为仓库说明 未加密。
  • KEY 是 Cloud Key Management Service 密钥的名称(如果您使用的是 使用客户管理的加密密钥 (CMEK) 进行加密。省略 此参数即可使用默认设置,即“Google 管理的加密” 密钥。
  • DRY_RUN_STATUS 用于确定是否删除清理政策 或者仅记录在设置后会删除的工件 清理政策如果您不想添加,请忽略 代码库的清理政策

    • true:设置要在试运行模式下运行的政策。没有软件制品 将在试运行模式下删除。
    • false:应用清理政策。制品已被删除或 具体取决于政策

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

  • POLICY_NAME 是清理政策的名称。

  • TAG_STATE 是要应用此政策的标记状态。值 为 taggeduntaggedanyany 会同时应用于已标记和 未标记工件。如果代码库启用了不可更改标记,并且已标记 软件制品不能删除

  • TAG_PREFIXTAG_PREFIX_N 是标记前缀 将政策应用到

  • PKG_PREFIXPKG_PREFIX_N 是软件包前缀 要应用此政策的对象

  • TIME_SINCE_UPLOAD 是工件版本以来的时间 已上传到代码库,并指定为时长。您可以指定 通过附加 smh、 或 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 是可选的代码库说明。 请勿包含敏感数据,因为仓库说明 未加密。
  • KEY 是 Cloud Key Management Service 密钥的名称(如果您使用的是 使用客户管理的加密密钥 (CMEK) 进行加密。省略 此参数即可使用默认设置,即“Google 管理的加密” 密钥。
  • DRY_RUN_STATUS 用于确定是否删除清理政策 或者仅记录在设置后会删除的工件 清理政策如果您不想添加,请忽略 代码库的清理政策

    • true:设置要在试运行模式下运行的政策。没有软件制品 将在试运行模式下删除。
    • false:应用清理政策。制品已被删除或 具体取决于政策

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

  • POLICY_NAME 是清理政策的名称。

  • TAG_STATE 是要应用此政策的标记状态。值 为 taggeduntaggedanyany 会同时应用于已标记和 未标记工件。如果代码库启用了不可更改标记,并且已标记 软件制品不能删除

  • TAG_PREFIXTAG_PREFIX_N 是标记前缀 将政策应用到

  • PKG_PREFIXPKG_PREFIX_N 是软件包前缀 要应用此政策的对象

  • TIME_SINCE_UPLOAD 是工件版本以来的时间 已上传到代码库,并指定为时长。您可以指定 通过附加 smh、 或 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 是可选的代码库说明。 请勿包含敏感数据,因为仓库说明 未加密。
  • KEY 是 Cloud Key Management Service 密钥的名称(如果您使用的是 使用客户管理的加密密钥 (CMEK) 进行加密。省略 此参数即可使用默认设置,即“Google 管理的加密” 密钥。
  • DRY_RUN_STATUS 用于确定是否删除清理政策 或者仅记录在设置后会删除的工件 清理政策如果您不想添加,请忽略 代码库的清理政策

    • true:设置要在试运行模式下运行的政策。没有软件制品 将在试运行模式下删除。
    • false:应用清理政策。制品已被删除或 具体取决于政策

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

  • POLICY_NAME 是清理政策的名称。

  • TAG_STATE 是要应用此政策的标记状态。值 为 taggeduntaggedanyany 会同时应用于已标记和 未标记工件。如果代码库启用了不可更改标记,并且已标记 软件制品不能删除

  • TAG_PREFIXTAG_PREFIX_N 是标记前缀 将政策应用到

  • PKG_PREFIXPKG_PREFIX_N 是软件包前缀 要应用此政策的对象

  • TIME_SINCE_UPLOAD 是工件版本以来的时间 已上传到代码库,并指定为时长。您可以指定 通过附加 smh、 或 d

  • 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:a 单区域或多区域 location。 使用此标志查看特定位置的代码库。如果您 配置了默认位置 您可以省略此标志,以使用默认值。
  • DESCRIPTION:代码库的说明。

后续步骤