配置清理政策

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

如果您存储了多个版本的工件,但只需要保留您发布到生产环境的特定版本,则清理政策非常有用。您可以使用删除工件的条件定义“删除政策”,并使用保留工件的条件定义“保留政策”

如果工件版本同时符合删除政策和 keep 政策中的条件,Artifact Registry 将应用保留政策。

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

政策应用时间表

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

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

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

支持的格式

在预览版期间,您可以针对标准代码库为所有代码库格式设置清理政策,Apt 和 Yum 除外。

所需的角色

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

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

所需权限

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

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

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

Artifact Registry Service Agent 的默认角色包含 artifactregistry.versions.delete 权限,如需删除满足清理政策条件的映像,则必须具有该权限。

创建政策文件

政策文件是一个 JSON 文件,用于定义删除和保留政策。如需创建政策文件,您可以创建和修改 JSON 文件,然后使用 Google Cloud CLI 应用政策,或者使用 Google Cloud 控制台。删除政策指定删除工件的条件。保留政策指定保留工件或保留多个近期版本的条件。您不能在同一项保留政策中使用条件和最新版本。

创建删除政策

借助删除政策,您可以指定删除工件的最短或最长存在时间,以及其他过滤条件,以将政策限制为仅适用于特定的工件。

如果您出于任何原因不想删除某些工件,请创建conditional保留政策,或创建最新版本的保留政策以及删除政策。如果某个工件同时符合删除政策和保留政策中的条件,则系统会保留该工件。

控制台

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

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

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

    打开“代码库”页面

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

  3. 清理政策部分中,选择试运行以测试新政策,然后再提交删除任何工件。如需详细了解如何查看测试结果,请参阅试运行

    确定政策按预期运行后,再次修改代码库设置,然后选择删除工件以应用清理政策并删除所选工件。

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

    • 名称:为清理政策命名。该名称在应用于代码库的政策组中必须是唯一的。
    • 政策类型:选择条件删除
    • 标记状态:指明政策是否应检查已标记的工件或未标记的工件。在向代码库推送映像或从中拉取映像时,系统会对工件进行标记。如需详细了解 Docker 标记,请参阅容器概念

      • 任何标记状态:忽略标记状态,同时适用于已标记和未标记的工件。
      • 已加标签:仅适用于已加标签的工件。
      • 未标记:仅适用于未进行标记的工件。

      不支持标记的格式会被视为 untagged。如需详细了解适用于清理政策的标记状态,请参阅 TagState 参考文档

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

    • 标记前缀:以英文逗号分隔的标记前缀列表。例如,前缀 teststaging 将与带有 testenvstaging-1.5 标记的图片匹配。tagState 必须设置为 TAGGED 才能使用标记前缀。
    • 版本前缀:- 是以英文逗号分隔的工件版本前缀列表。例如,v1v2 将匹配版本 v1.5v2.0alphav10.2
    • 软件包前缀:一系列工件名称前缀。您可以输入多个前缀,只需在前缀之间按 Enter, 即可。例如,red, blue 将创建两个前缀:redblue,并将匹配工件名称 red-teamredisbluebird
    • 早于:自工件版本在代码库中创建以来的最短时间,指定为时长。例如,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 用于指明政策应检查已加标记的工件还是未加标记的工件。在向代码库推送映像或从中拉取映像时,系统会对工件进行标记。如需详细了解 Docker 标记,请参阅容器概念。支持的值包括:taggeduntaggedany。不支持标记的格式会被视为 untagged
  • 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 天。

创建条件保留政策

条件保留政策可指定保留工件的条件。将政策与删除政策搭配使用,以保留根据删除政策规范删除但您希望保留的工件。当工件同时符合删除政策和保留政策的条件时,系统会保留该工件。

控制台

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

如需将 Keep 政策添加到现有代码库,请执行以下操作:

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

    打开“代码库”页面

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

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

    确定政策按预期运行后,再次修改代码库设置,然后选择删除工件以应用清理政策并删除所选工件。

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

    • 名称:为清理政策命名。该名称在应用于代码库的政策组中必须是唯一的。
    • Policy type:选择 Conditional keep
    • 标记状态:指明政策是否应检查已标记的工件或未标记的工件。在向代码库推送映像或从中拉取映像时,系统会对工件进行标记。如需详细了解 Docker 标记,请参阅容器概念

      • 任何标记状态:忽略标记状态,同时适用于已标记和未标记的工件。
      • 已加标签:仅适用于已加标签的工件。
      • 未标记:仅适用于未进行标记的工件。

      不支持标记的格式会被视为 untagged。如需详细了解适用于清理政策的标记状态,请参阅 TagState 参考文档

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

    • 标记前缀:以英文逗号分隔的标记前缀列表。例如,前缀 teststaging 将与带有 testenvstaging-1.5 标记的图片匹配。tagState 必须设置为 TAGGED 才能使用标记前缀。
    • 版本前缀:- 是以英文逗号分隔的工件版本前缀列表。例如,v1v2 将匹配版本 v1.5v2.0alphav10.2
    • 软件包前缀:以英文逗号分隔的工件名称前缀列表。 例如,red, blue 将匹配工件名称 red-teamredisbluebird
    • 早于:自工件版本在代码库中创建以来的最短时间,指定为时长。例如,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 天。

创建最新版本保留政策

您可以创建保留政策以保留特定数量的版本。您不能在同一项保留政策中使用条件保留保留最新版本条件。

将政策与删除政策搭配使用,以保留根据删除政策规范删除但您希望保留的工件。当工件同时符合删除政策和保留政策的条件时,系统会保留该工件。

控制台

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

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

  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 替换为 Keep 政策的名称。该名称在应用于代码库的政策组中必须是唯一的。
  • PACKAGE_PREFIXES 替换为要应用 Keep 政策的可选软件包前缀。例如,red, blue 将匹配工件名称 red-teamredisbluebird
  • MINIMUM_NUMBER 替换为要保留在代码库中的工件版本数。

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

政策文件示例

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

  • 如果工件以字符串 alphav0 开头,delete-prerelease 政策会在上传 30 天后移除该工件版本。
  • keep-tagged-release 政策会保留使用前缀 release 标记且文件名以 webappmobile 开头的工件。
  • keep-minimum-versions 政策会保留 5 个最新版本的工件,这些工件的文件名以 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 数据访问审核日志。如需接收清理政策的数据访问审核日志,您必须为 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'

将政策应用于代码库

在 Google Cloud 控制台中创建的清理政策会在创建或更新时应用。

如需使用本地 JSON 文件中定义的清理政策,请使用 gcloud CLI 将清理政策应用到您希望 Artifact Registry 处理工件版本自动删除的代码库。

您只能对标准代码库应用清理政策。您不能将清理政策应用于以下各项:

如需应用清理政策,请在包含清理政策文件的目录中运行以下命令。

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-projectus-east1 区域中的代码库 my-repo

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

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

更新政策

控制台

  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 是您要移除的政策的政策名称列表(以英文逗号分隔)。

例如,以下命令会从项目 my-project 内区域 us-east1 内的代码库 my-repo 中移除名为 delete-test 的政策:

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

清理政策的审核日志条目

如需在 Cloud Logging 中查看清理政策日志条目,您必须enable 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 官方产品。