配置清理政策

Artifact Registry 清理政策定义了自动删除的条件 您不再需要的工件版本或保留您所需的工件 可以无限期存储

如果您存储了多个版本的工件,但清理政策会非常有用, 只需保留您发布为正式版的特定版本即可。您 可以定义删除政策,其中包含用于删除制品的条件 使用保留工件的标准保留政策

工件版本同时符合删除政策和保留政策的条件 则 Artifact Registry 会应用保留政策。

由删除政策触发的删除操作会计入您的 Artifact Registry 每个项目的删除请求配额,具体为 每个仓库每天 30 万次删除操作。

政策应用时间表

Artifact Registry 会删除并保留与您的清理匹配的工件 使用定期运行的后台作业管理政策。更改会生效 大约 1 天内完成。

每个代码库的清理政策数量上限

您最多可以对一个代码库应用 10 项清理政策。

支持的格式

您可以为标准代码库和远程代码库设置清理政策 适用于所有代码库格式

所需的角色

如需获得应用或移除清理政策所需的权限, 请让管理员向您授予 代码库项目的 Artifact Registry Administrator (roles/artifactregistry.admin) IAM 角色。 如需详细了解如何授予角色,请参阅管理访问权限

此预定义角色包含 应用或移除清理政策所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需应用或移除清理政策,您需要拥有以下权限:

  • artifactregistry.repositories.update
  • 如需删除符合清理政策条件的工件,请执行以下操作: artifactregistry.versions.delete

您也可以使用自定义角色或其他预定义角色来获取这些权限。

Artifact Registry Service Agent 的默认角色 包含 artifactregistry.versions.delete 权限,该 要求删除符合清理政策条件的映像。

创建政策文件

政策文件是一个 JSON 文件,用于定义删除和保留政策。您可以 创建政策文件,方法是创建和修改 JSON 文件,然后使用 或使用 Google Cloud 控制台来应用该政策。删除 政策指定删除制品的条件。保留政策指定 条件来保留工件,或者保留多个较新的版本。您 不能在同一保留政策中同时使用条件和最新版本。

创建删除政策

删除政策可让您指定 以及添加额外过滤条件来限制政策 特定工件

如果您出于任何原因不想删除某些制品,请创建 条件式保留政策或最新的 版本保留政策和删除政策。如果 工件同时符合删除政策和保留政策的条件, 该工件会被保留

控制台

您可以为新代码库或现有代码库创建删除政策。

如需向现有代码库添加删除政策,请执行以下操作:

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

    打开“代码库”页面

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

  3. 清理政策部分中,选择试运行以测试新政策 政策。更多信息 有关查看测试结果的信息,请参阅试运行

    确定政策如期发挥作用后,请修改 然后选择删除制品以应用您的 清理政策并删除所选工件。

  4. 点击添加清理政策,然后添加以下内容:

    • 名称:为清理政策命名。该名称在 您应用于代码库的一组政策
    • 政策类型:选择按条件删除
    • 标记状态:指明政策是否应 检查是否存在已加标签或未加标签的工件。系统会在何时为制品添加标签 将映像推送到代码库或从中拉取映像如需详细了解 Docker 请参阅容器概念

      • 任何代码状态:忽略代码状态,并且会同时应用于已添加代码和 未标记工件。
      • 已加标记:仅适用于带标记的工件。
      • 未添加标记:仅适用于未添加标记的工件。

      不支持标记的格式会被视为 untagged。 如果代码库启用了不可更改标记,则无法使用标记的制品 删除。

      如需详细了解适用于代码状态的代码状态 清理政策,请参阅 TagState 参考文档

  5. 以下是定义删除政策的可选方法:

    • 标记前缀:一系列以英文逗号分隔的 标记前缀。例如,前缀 teststaging 将匹配 带有 testenvstaging-1.5 标记的图片。tagState 必须设置为 TAGGED 表示使用标记前缀。
    • 版本前缀:- 以英文逗号分隔的工件版本列表 前缀。例如,v1v2 将与版本 v1.5 匹配, v2.0alphav10.2
    • Packageprefixes:是一个工件名称前缀列表。您可以输入 在前缀之间按 Enter, 即可添加多个前缀。 例如,red, blue 将创建两个前缀:redblue, 将匹配制品名称:red-teamredis、 和 bluebird
    • 早于:自工件版本被禁用后的最短时间 在代码库中创建,指定为时长。 例如,30d 为 30 天。您可以指定时长(以秒为单位) 分钟、小时或天,分别附加 smhd
    • 早于:是自 该工件已在代码库中创建,并指定为时长。 例如,30d 为 30 天。
  6. 您可以点击添加清理政策,以添加更多清理政策。

  7. 点击更新

    您的清理政策会应用于您的代码库。您可以查看 点击代码库详情部分中的清理政策 展开

JSON

{
  "name": "DELETE_POLICY_NAME",
  "action": {"type": "Delete"},
  "condition": {
    "tagState": "TAG_STATUS",
    "tagPrefixes": ["TAG_PREFIXES"],
    "versionNamePrefixes": ["VERSION_PREFIXES"],
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "olderThan": "OLDER_THAN_DURATION",
    "newerThan": "NEWER_THAN_DURATION"
  }
}

删除政策必须包含名称、操作和至少一个条件。

name
在删除政策代码段中,DELETE_POLICY_NAME 是名称 政策的组成部分。该名称必须是唯一的 适用于代码库。
action
对于删除政策,值为 {"type": "Delete"}
condition
指定以下一个或多个条件
  • tagStateTAG_STATUS 指示政策是否应 检查是否存在已加标签或未加标签的工件。系统会在何时为制品添加标签 将映像推送到代码库或从中拉取映像 支持的值包括:

    • tagged:仅适用于带标记的工件。
    • untagged:仅适用于未标记的工件。
    • any:忽略标记状态,同时适用于已标记和未标记 工件

    不支持标记的格式会被视为 untagged。如果代码库 已启用不可更改标记,无法删除已标记的制品。

    如需详细了解 Docker 标记,请参阅 容器概念

  • tagPrefixesTAG_PREFIXES 是一系列以英文逗号分隔的 标记前缀。例如,"test", "staging" 会将包含 标记 "testenv""staging-1.5"tagState 必须设置为 TAGGED 表示使用标记前缀。

  • versionNamePrefixesVERSION_PREFIXES是 工件版本前缀列表(以英文逗号分隔)。例如 "v1", "v2" 将与版本 "v1.5""v2.0alpha""v10.2" 匹配。

  • packageNamePrefixesPACKAGE_PREFIXES是 工件名称前缀列表(以英文逗号分隔)。例如 "red", "blue" 将与工件名称 "red-team""redis""bluebird" 匹配。

  • olderThanOLDER_THAN_DURATION 是自 工件版本是 在代码库中创建,指定为时长。 例如,30d 为 30 天。您可以指定时长(以秒为单位) 分钟、小时或天,分别附加 smhd

  • newerThanNEWER_THAN_DURATION 是自 在仓库中创建的制品版本,以 时长。例如,30d 为 30 天。

创建条件保留政策

有条件的保留政策指定了保留制品的条件。保留 与删除政策配合使用,以保留 根据删除政策的规范删除了 保留方式。当工件同时符合删除政策和 保留政策,则系统将保留该工件。

控制台

您可以为新代码库或现有代码库创建保留政策。

如需向现有代码库添加保留政策,请执行以下操作:

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

    打开“代码库”页面

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

  3. 清理政策部分中,选择试运行以测试新政策 政策。您需要设置 至少一项删除政策以查看保留的结果 政策。如需详细了解如何查看测试结果, 请参阅试运行

    确定政策按预期运行后,请修改 然后选择删除制品以应用您的 清理政策并删除所选工件

  4. 点击添加清理政策,然后添加以下内容:

    • 名称:为清理政策命名。该名称在 您应用于代码库的一组政策
    • 政策类型:选择条件保留
    • 标记状态:指明政策是否应 检查是否存在已加标签或未加标签的工件。系统会在何时为制品添加标签 将映像推送到代码库或从中拉取映像如需详细了解 Docker 请参阅容器概念

      • 任何代码状态:忽略代码状态,并且会同时应用于已添加代码和 未标记工件。
      • 已加标记:仅适用于带标记的工件。
      • 未添加标记:仅适用于未添加标记的工件。

      不支持标记的格式会被视为 untagged。 如果代码库启用了不可更改标记,则无法使用标记的制品 删除。如需详细了解适用于代码状态的代码状态 清理政策,请参阅 TagState 参考文档

  5. 以下是定义保留政策的可选方法:

    • 标记前缀:一系列以英文逗号分隔的 标记前缀。例如,前缀 teststaging 将匹配 带有 testenvstaging-1.5 标记的图片。tagState 必须设置为 TAGGED 表示使用标记前缀。
    • 版本前缀:- 以英文逗号分隔的工件版本列表 前缀。例如,v1v2 将与版本 v1.5 匹配, v2.0alphav10.2
    • Packageprefixes:是一个以英文逗号分隔的工件名称前缀列表。 例如,red, blue 将匹配工件名称 red-teamredis、 和 bluebird
    • 早于:自工件版本被禁用后的最短时间 在代码库中创建,指定为时长。 例如,30d 为 30 天。您可以指定时长(以秒为单位) 分钟、小时或天,分别附加 smhd
    • 早于:是自 该工件已在代码库中创建,并指定为时长。 例如,30d 为 30 天。
  6. 您可以点击添加清理政策,以添加更多清理政策。

  7. 点击更新

    您的清理政策会应用于您的代码库。

JSON

其格式与删除政策类似。对于保留政策, action 的值为 {"type": "Keep"}

{
  "name": "KEEP_POLICY_NAME",
  "action": {"type": "Keep"},
  "condition": {
    "tagState": "TAG_STATUS",
    "tagPrefixes": ["TAG_PREFIXES"],
    "versionNamePrefixes": ["VERSION_PREFIXES"],
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "olderThan": "OLDER_THAN_DURATION",
    "newerThan": "NEWER_THAN_DURATION"
  }
}

替换以下内容:

  • 为清理政策命名的 KEEP_POLICY_NAME。该名称在 您应用于代码库的一组政策
  • TAG_STATUS 替换为标记状态,指示政策是否 应检查有无标记的工件或未标记的工件。制品 将映像推送到代码库或从代码库拉取或拉取映像时进行标记 如需详细了解 Docker 标记,请参阅 容器概念

    以下是各个选项:

    • tagged:仅适用于带标记的工件。
    • untagged:仅适用于未标记的工件。
    • any:适用于所有版本

    不支持标记的格式会被视为 untagged。 如果代码库启用了不可更改标记,则无法使用标记的制品 删除。如需详细了解适用于代码状态的代码状态 清理政策,请参阅 TagState 参考文档

  • TAG_PREFIXES 替换为以英文逗号分隔的 标记前缀。例如,前缀 teststaging 将匹配 带有 testenvstaging-1.5 标记的图片。tagState 必须设置为 TAGGED 表示使用标记前缀。

  • VERSION_PREFIXES 替换为工件版本列表(以英文逗号分隔) 前缀。例如,v1, v2 将匹配版本 v1.5v2.0alphav10.2

  • PACKAGE_PREFIXES 替换为工件名称的逗号分隔列表 前缀。例如,red, blue 将匹配工件名称 red-teamredisbluebird

  • OLDER_THAN_DURATION 替换为自 创建的工件版本,指定为 时长。例如,30d 为 30 天。您可以指定 秒、分钟、小时或天。smhd
  • NEWER_THAN_DURATION 替换为自 创建的工件版本,指定为 时长。例如,30d 为 30 天。

为最新版本创建保留政策

您可以创建保留政策来保留特定数量的版本。您不能 使用有条件保持保持最新版本的条件使用相同的条件 保留政策。

Keep 政策与删除政策搭配使用,可保留 根据删除政策的规范进行删除,但是您 想要保留的内容当工件同时符合删除政策和 保留策略,则工件会被保留。

控制台

您可以为新的或现有的 存储库

如需将“保留最新版本”政策添加到现有代码库,请执行以下操作:

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

    打开“代码库”页面

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

  3. 清理政策部分中,选择试运行以测试新政策 政策。您需要设置 至少一项删除政策以查看保留的结果 政策。如需详细了解如何查看测试结果, 请参阅试运行

    确定政策按预期运行后,请修改 然后选择删除制品以应用您的 清理政策并删除所选工件

  4. 点击添加清理政策,然后添加以下内容:

    • 名称:为清理政策命名。该名称在 您应用于代码库的一组政策
    • 政策类型:选择保留最新版本
  5. 保留数量字段中,输入工件的版本数 保存在您的代码库中

  6. 可选:选择软件包前缀,以指定要应用的软件包前缀 保留政策例如,red, blue 将匹配工件名称 red-teamredisbluebird

  7. 您可以点击添加清理政策,以添加更多清理政策。

  8. 点击更新

    您的清理政策会应用于您的代码库。您可以查看 点击代码库详情部分中的清理政策 展开

JSON

其格式与删除政策类似。对于保留政策, action 的值为 {"type": "Keep"}

用于保留特定数量版本的保留政策具有 mostRecentVersions 部分,而不是 condition 部分。

{
  "name": "KEEP_POLICY_NAME",
  "action": {"type": "Keep"},
  "mostRecentVersions": {
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "keepCount": MINIMUM_NUMBER
  }
}

替换以下内容:

  • KEEP_POLICY_NAME 替换为您的保留政策的名称。名称 在您应用于代码库的政策组中必须是唯一的。
  • PACKAGE_PREFIXES,其中包含要应用的可选软件包前缀 保留政策例如,red, blue 将匹配工件名称 red-teamredisbluebird
  • MINIMUM_NUMBER 替换为工件的版本数 保存在您的代码库中

如需将保留政策应用于代码库中的所有软件包,请省略 packageNamePrefixes 条件。指定数量的近期版本 代码库中的每个软件包都会保留下来

政策文件示例

以下政策文件示例具有一项删除政策和两项保留政策。

  • delete-prerelease 政策会在上传 30 天后移除制品版本 如果工件以字符串 alphav0 开头。
  • keep-tagged-release 政策会保留标有该前缀的制品 release(文件名以 webappmobile 开头)。
  • keep-minimum-versions 政策会保留 文件名以 webappmobilesandbox
[
  {
    "name": "delete-prerelease",
    "action": {"type": "Delete"},
    "condition": {
      "tagState": "tagged",
      "tagPrefixes": ["alpha", "v0"],
      "olderThan": "30d"
    }
  },
  {
    "name": "keep-tagged-release",
    "action": {"type": "Keep"},
    "condition": {
      "tagState": "tagged",
      "tagPrefixes": ["release"],
      "packageNamePrefixes": ["webapp", "mobile"]
    }
  },
  {
    "name": "keep-minimum-versions",
    "action": {"type": "Keep"},
    "mostRecentVersions": {
      "packageNamePrefixes": ["webapp", "mobile", "sandbox"],
      "keepCount": 5
    }
  }
]

通过试运行测试您的政策

如需测试清理政策,您可以将清理政策设置为试运行 控制台,或运行 带有 --dry-run 标志的 gcloud artifacts set-cleanup-policies 命令。

若要分析清理政策的影响,您可以查看 Artifact Registry 数据访问审核日志。接收数据 访问清理政策的审核日志,您必须明确启用 数据写入类型的数据访问审核日志。 如需启用数据访问审核日志,请参阅 启用审核日志

控制台

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

    打开“代码库”页面

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

  3. 清理政策部分中,选择试运行

  4. 点击添加清理政策,然后为您的 条件删除按条件保留,或 保留最新版本政策。

  5. 点击更新

当删除政策导致执行 BatchDeleteVersions 操作时,参数 “validateOnly”的求值结果为 "true"

如需查询清理政策试运行的审核日志,请运行以下命令 命令:

gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent:"projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY" AND protoPayload.request.validateOnly=true' \
    --resource-names="projects/PROJECT_ID" \
    --project=PROJECT_ID

输出类似以下内容:

insertId: qwe123ty3
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access
operation:
  first: true
  id: projects/my-project/locations/us-west1/operations/12345abc-fb9b-4b6f-b02c-9a397ee807d4
  producer: artifactregistry.googleapis.com
protoPayload:
  '@type': type.googleapis.com/google.cloud.audit.AuditLog
  authenticationInfo:
    principalEmail: service-774919394028@gcp-sa-staging-artreg.iam.gserviceaccount.com
  authorizationInfo:
  - granted: true
    permission: artifactregistry.versions.delete
    resource: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    resourceAttributes: {}
  methodName: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
  request:
    '@type': type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest
    names:
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:4bb3756e4e75dfbc3ced87521ed62b26d16fb4e17993ae6877165f2b6551fb55
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:e8185538b50df953529b300be4963b2c21158808becac7aa0d610f61de8ba701
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:7f7fb0a9453da49f831fe92eb8b1751be13acefe1bbd44cc3f0d63d41c422246
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:84ac871a34560b39dd7bde57b4d333f18a7e8c1b61c8d350c1fefeb1fcd2b3ac
parent: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    validateOnly: true
  requestMetadata:
    callerIp: private
    callerSuppliedUserAgent: stubby_client
    destinationAttributes: {}
    requestAttributes:
      auth: {}
      time: '2023-05-26T04:31:21.909465579Z'
  resourceName: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
  serviceName: artifactregistry.googleapis.com
receiveTimestamp: '2023-05-26T04:31:22.641338594Z'
resource:
  labels:
    method: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
    project_id: my-project
    service: artifactregistry.googleapis.com
  type: audited_resource
severity: INFO
timestamp: '2023-05-26T04:31:21.909004200Z'

gcloud CLI

如需对清理政策进行试运行,请运行以下命令:

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --dry-run

替换以下内容:

  • REPOSITORY 替换为代码库的名称。
  • PROJECT_ID 替换为您的 Google Cloud 项目的 ID。
  • LOCATION 替换为 单区域或多区域 代码库的位置。

当删除政策导致执行 BatchDeleteVersions 操作时,参数 “validateOnly”的求值结果为 "true"

如需查询清理政策试运行的审核日志,请运行以下命令 命令:

gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent:"projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY" AND protoPayload.request.validateOnly=true' \
    --resource-names="projects/PROJECT_ID" \
    --project=PROJECT_ID

输出类似以下内容:

insertId: qwe123ty3
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access
operation:
  first: true
  id: projects/my-project/locations/us-west1/operations/12345abc-fb9b-4b6f-b02c-9a397ee807d4
  producer: artifactregistry.googleapis.com
protoPayload:
  '@type': type.googleapis.com/google.cloud.audit.AuditLog
  authenticationInfo:
    principalEmail: service-774919394028@gcp-sa-staging-artreg.iam.gserviceaccount.com
  authorizationInfo:
  - granted: true
    permission: artifactregistry.versions.delete
    resource: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    resourceAttributes: {}
  methodName: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
  request:
    '@type': type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest
    names:
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:4bb3756e4e75dfbc3ced87521ed62b26d16fb4e17993ae6877165f2b6551fb55
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:e8185538b50df953529b300be4963b2c21158808becac7aa0d610f61de8ba701
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:7f7fb0a9453da49f831fe92eb8b1751be13acefe1bbd44cc3f0d63d41c422246
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:84ac871a34560b39dd7bde57b4d333f18a7e8c1b61c8d350c1fefeb1fcd2b3ac
parent: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    validateOnly: true
  requestMetadata:
    callerIp: private
    callerSuppliedUserAgent: stubby_client
    destinationAttributes: {}
    requestAttributes:
      auth: {}
      time: '2023-05-26T04:31:21.909465579Z'
  resourceName: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
  serviceName: artifactregistry.googleapis.com
receiveTimestamp: '2023-05-26T04:31:22.641338594Z'
resource:
  labels:
    method: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
    project_id: my-project
    service: artifactregistry.googleapis.com
  type: audited_resource
severity: INFO
timestamp: '2023-05-26T04:31:21.909004200Z'

将政策应用于代码库

如需使用在本地 JSON 文件中定义的清理政策,请将这些政策应用于 您希望 Artifact Registry 处理自动删除的代码库 来监控各工件版本

如需在控制台中应用设置为试运行的清理政策,请将政策设置为 删除软件工件

您只能将清理政策应用于标准代码库。您不能 将清理政策应用于:

  • Google Cloud 项目

控制台

如需应用清理政策,请执行以下操作:

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

    打开“代码库”页面

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

  3. 清理政策部分中,选择删除软件工件

    Artifact Registry 使用定期运行的后台作业来删除并保留与您的政策匹配的工件。更改应 会在大约一天内生效。

gcloud

要应用清理政策,请在 清理政策文件

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --no-dry-run

替换以下内容:

  • REPOSITORY 替换为代码库的名称。
  • PROJECT_ID 替换为您的 Google Cloud 项目的 ID。
  • LOCATION 替换为 单区域或多区域 代码库的位置。
  • --no-dry-run 用于停用代码库的试运行功能。
  • POLICY_FILE 是使用清理政策的文件的名称。

例如,以下命令会将 policy.json 中的政策应用于 位于项目 my-project 的区域 us-west1 中的代码库 my-repo

gcloud artifacts repositories set-cleanup-policies my-repo \
    --project=my-project \
    --location=us-west1 \
    --policy=policy.json

Artifact Registry 会删除并保留与您的政策匹配的制品 使用定期运行的后台作业。更改应生效 大约 1 天内完成。

更新政策

控制台

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

    打开“代码库”页面

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

  3. 清理政策部分,点击所需政策的名称 进行设置以进行修改。

  4. 修改清理政策,然后点击更新

    您的清理政策会应用于您的代码库。

gcloud CLI

要更新现有政策,请修改政策文件中的设置,然后 运行以下命令以再次应用这些政策

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --no-dry-run

替换以下内容:

  • REPOSITORY 替换为代码库的名称。
  • PROJECT_ID 替换为您的 Google Cloud 项目的 ID。
  • LOCATION 替换为 单区域或多区域 代码库的位置。
  • --no-dry-run 用于停用代码库的试运行功能。
  • POLICY_FILE 是使用清理政策的文件的名称。

列出代码库清理政策

您可以查看与代码库关联的清理政策。

控制台

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

    打开“代码库”页面

  2. 在代码库列表中,选择要查看的代码库。

  3. 代码库详情部分中,点击显示更多

    此时将显示清理政策名称。

  4. 如需查看或修改代码库的清理政策的详细信息,请点击 修改代码库

    您现有的清理政策详情会列在 清理政策部分。

gcloud CLI

运行以下命令:

gcloud artifacts repositories list-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION

替换以下内容:

  • REPOSITORY 替换为代码库的名称。
  • PROJECT_ID 替换为您的 Google Cloud 项目的 ID。
  • LOCATION 替换为 单区域或多区域 代码库的位置。

从代码库中移除政策

不再需要时从代码库中移除清理政策 Artifact Registry 来自动删除工件版本。

控制台

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

    打开“代码库”页面

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

  3. 清理政策部分,将光标悬停在要清除的政策的名称上 删除。

  4. 点击删除图标。

  5. 点击更新

    系统会删除清理政策。

gcloud CLI

运行以下命令:

gcloud artifacts repositories delete-cleanup-policies REPOSITORY \
    --policynames=POLICY_NAMES \
    --project=PROJECT_ID \
    --location=LOCATION

替换以下内容:

  • REPOSITORY 是代码库的名称。
  • PROJECT_ID 是您的 Google Cloud 项目的 ID。
  • LOCATION 是 单区域或多区域 代码库的位置
  • POLICY_NAMES 是以下项目的政策名称列表(以英文逗号分隔): 要移除的政策

例如,以下命令将名为 delete-test 的政策从 项目 my-project 中区域 us-west1 中的代码库 my-repo

gcloud artifacts repositories delete-cleanup-policies my-repo \
    --policynames=delete-test \
    --project=my-project \
    --location=us-west1

清理政策的审核日志条目

如需在 Cloud Logging 中查看清理政策日志条目,您必须 启用 DATA_WRITE 日志记录。

对代码库设置清理政策后,系统会将相应操作记录为 对代码库的更新(UpdateRepository 操作)。

Artifact Registry 删除工件的某个版本时,会记录相应事件 (位于 Cloud Logging 数据访问日志中)。日志条目会显示 删除了 Artifact Registry 服务账号。通过 Artifact Registry 服务账号 ID 的格式为 service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com

其他工具

对于容器映像,您还可以使用以下工具来实现映像生命周期 管理:

  • gcrane: 可用于复制映像的容器注册表工具 不同代码库之间
  • gcr-cleaner:用于删除容器的工具 选择最适合的图片。

gcranegcr-cleaner 工具并非 Google 官方产品。