本文档介绍了如何创建和管理清理政策。
所需的角色
如需获得应用或移除清理政策所需的权限,请让您的管理员向您授予代码库项目的 Artifact Registry Administrator (roles/artifactregistry.admin
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含应用或移除清理政策所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需应用或移除清理政策,您需要具备以下权限:
-
artifactregistry.repositories.update
-
如需删除符合清理政策中条件的制品,请执行以下操作:
artifactregistry.versions.delete
Artifact Registry 服务代理的默认角色包含 artifactregistry.versions.delete
权限,该权限是删除符合清理政策中条件的映像所需的权限。
创建政策文件
政策文件是一个 JSON 文件,用于定义删除和保留政策。您可以通过以下方式创建政策文件:创建并修改 JSON 文件,然后使用 Google Cloud CLI 应用政策,或者使用 Google Cloud 控制台。删除政策用于指定删除制品的条件。保留政策用于指定保留制品的条件,或要保留的最新版本数。您无法在同一保留政策中同时使用条件和最新版本。
创建删除政策
通过删除政策,您可以指定制品删除的最短或最长保留时限,以及其他过滤条件,以将政策限制为仅适用于特定制品。
如果您有出于任何原因都不想删除的特定制品,请创建条件式保留政策或最新版本保留政策,以及删除政策。如果制品同时符合删除政策和保留政策中的条件,则会保留该制品。
控制台
您可以为新代码库或现有代码库创建删除政策。
如需向现有代码库添加删除政策,请执行以下操作:
在 Google Cloud 控制台中打开代码库页面。
在代码库列表中,选择相应代码库,然后点击修改代码库。
在清理政策部分中,选择试运行,以便在提交删除任何制品的请求之前测试新政策。如需详细了解如何查看测试结果,请参阅试运行。
确定政策按预期运行后,再次修改代码库设置,然后选择删除制品以应用清理政策并删除所选制品。
点击添加清理政策,然后添加以下内容:
- 名称:为清理政策指定名称。该名称在您应用于代码库的政策组中必须是唯一的。
- 政策类型:选择按条件删除。
标记状态:指示政策应检查已标记的制品还是未标记的制品。在将映像推送到代码库或从代码库拉取映像时,系统会标记相应制品。如需详细了解 Docker 标记,请参阅容器概念。
- 任何标记状态:忽略标记状态,适用于已标记和未标记的制品。
- 已标记:仅适用于已标记的制品。
- 未标记:仅适用于未标记的制品。
不支持标记的格式会被视为
untagged
。 如果代码库已启用不可更改的标记,则无法删除带标记的制品。如需详细了解标记状态(与清理政策相关),请参阅 TagState 参考文档。
以下是定义删除政策的可选方法:
- 标记前缀:是以英文逗号分隔的标记前缀列表。例如,前缀
test
和staging
将匹配带有标记testenv
和staging-1.5
的图片。必须将tagState
设置为TAGGED
才能使用代码前缀。 - 版本前缀:- 是以英文逗号分隔的制品版本前缀列表。例如,
v1
、v2
将匹配版本v1.5
、v2.0alpha
和v10.2
。 - 软件包前缀:是制品名称前缀的列表。您可以在前缀之间按
Enter
或,
输入多个前缀。例如,red, blue
会创建两个前缀,即red
和blue
,并匹配制品名称red-team
、redis
和bluebird
。 - 早于:是指制品版本在代码库中创建以来的最短时间,以时长表示。
例如,
30d
为 30 天。您可以通过分别添加s
、m
、h
或d
来指定以秒、分钟、小时或天为单位的时长。 - 新于:是指制品版本在代码库中创建以来的最长时间,以时长形式指定。例如,
30d
为 30 天。
- 标记前缀:是以英文逗号分隔的标记前缀列表。例如,前缀
您可以点击添加清理政策来添加更多清理政策。
点击更新。
您的清理政策已应用于代码库。点击显示更多,即可在代码库详情部分查看清理政策。
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
- 指定以下一项或多项条件 :
tagState
:TAG_STATUS 表示政策应检查已标记的制品还是未标记的制品。在将映像推送到代码库或从代码库拉取映像时,系统会标记制品。支持的值包括:tagged
:仅适用于已添加标记的制品。untagged
:仅适用于未标记的制品。any
:忽略标记状态,适用于已标记和未标记的制品。
不支持标记的格式会被视为
untagged
。如果代码库启用了不可变标记,则无法删除已标记的制品。如需详细了解 Docker 标记,请参阅容器概念。
tagPrefixes
:TAG_PREFIXES 是以英文逗号分隔的标记前缀列表。例如,"test", "staging"
将匹配带有"testenv"
和"staging-1.5"
标记的图片。必须将tagState
设置为TAGGED
才能使用代码前缀。versionNamePrefixes
:VERSION_PREFIXES 是以英文逗号分隔的制品版本前缀列表。例如,"v1", "v2"
将匹配版本"v1.5"
、"v2.0alpha"
和"v10.2"
。packageNamePrefixes
:PACKAGE_PREFIXES 是工件名称前缀的逗号分隔列表。例如,"red", "blue"
将匹配工件名称"red-team"
、"redis"
和"bluebird"
。olderThan
:OLDER_THAN_DURATION 是自制品版本在代码库中创建以来经过的最短时间,以时长形式指定。例如,30d
为 30 天。您可以通过分别添加s
、m
、h
或d
来指定以秒、分钟、小时或天为单位的时长。newerThan
:NEWER_THAN_DURATION 是制品版本在代码库中创建后经过的最长时间,以时长形式指定。例如,30d
为 30 天。
Artifact Registry 会使用定期运行的后台作业来试运行和实际运行清理政策。更改会在大约一天内生效。
创建有条件保留政策
有条件保留政策用于指定保留制品的条件。保留政策可与删除政策搭配使用,以保留根据删除政策的规范本应删除但您希望保留的制品。如果工件同时符合删除政策和保留政策的条件,则会保留该工件。
控制台
您可以为新代码库或现有代码库创建保留政策。
如需向现有代码库添加保留政策,请执行以下操作:
在 Google Cloud 控制台中打开代码库页面。
在代码库列表中,选择相应代码库,然后点击修改代码库。
在清理政策部分中,选择试运行,以便在提交删除任何制品的请求之前测试新政策。您需要设置至少一项删除政策,才能查看保留政策的结果。如需详细了解如何查看测试结果,请参阅试运行。
确定政策按预期运行后,再次修改代码库设置,然后选择删除制品以应用清理政策并删除所选制品。
点击添加清理政策,然后添加以下内容:
- 名称:为清理政策指定名称。该名称在您应用于代码库的政策组中必须是唯一的。
- 政策类型:选择有条件保留。
标记状态:指示政策应检查已标记的制品还是未标记的制品。在将映像推送到代码库或从代码库拉取映像时,系统会标记相应制品。如需详细了解 Docker 标记,请参阅容器概念。
- 任何标记状态:忽略标记状态,适用于已标记和未标记的制品。
- 已标记:仅适用于已标记的制品。
- 未标记:仅适用于未标记的制品。
不支持标记的格式会被视为
untagged
。 如果代码库启用了不可更改的标记,则无法删除带标记的制品。如需详细了解标记状态(与清理政策相关),请参阅 TagState 参考文档。
以下是定义保留政策的可选方式:
- 标记前缀:是以英文逗号分隔的标记前缀列表。例如,前缀
test
和staging
将匹配带有标记testenv
和staging-1.5
的图片。必须将tagState
设置为TAGGED
才能使用代码前缀。 - 版本前缀:- 是以英文逗号分隔的制品版本前缀列表。例如,
v1
、v2
将匹配版本v1.5
、v2.0alpha
和v10.2
。 - 软件包前缀:是以英文逗号分隔的制品名称前缀列表。
例如,
red, blue
将匹配工件名称red-team
、redis
和bluebird
。
- 早于:是指制品版本在代码库中创建以来的最短时间,以时长表示。
例如,
30d
为 30 天。您可以通过分别添加s
、m
、h
或d
来指定以秒、分钟、小时或天为单位的时长。 - 新于:是指制品版本在代码库中创建以来的最长时间,以时长形式指定。例如,
30d
为 30 天。
- 标记前缀:是以英文逗号分隔的标记前缀列表。例如,前缀
您可以点击添加清理政策来添加更多清理政策。
点击更新。
您的清理政策已应用于代码库。
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
替换为以英文逗号分隔的标记前缀列表。例如,前缀test
和staging
将匹配带有标记testenv
和staging-1.5
的图片。必须将tagState
设置为TAGGED
才能使用代码前缀。将
VERSION_PREFIXES
替换为以英文逗号分隔的制品版本前缀列表。例如,v1, v2
将匹配版本v1.5
、v2.0alpha
和v10.2
。将
PACKAGE_PREFIXES
替换为制品名称前缀的英文逗号分隔列表。例如,red, blue
将匹配制品名称red-team
、redis
和bluebird
。
OLDER_THAN_DURATION
,表示自制品版本在代码库中创建以来经过的最短时间,以时长形式指定。例如,30d
为 30 天。您可以分别添加s
、m
、h
或d
来指定以秒、分钟、小时或天为单位的时长。NEWER_THAN_DURATION
,其中包含制品版本在代码库中创建后经过的最长时间(以时长形式指定)。例如,30d
为 30 天。
Artifact Registry 会使用定期运行的后台作业来试运行和实际运行清理政策。更改会在大约一天内生效。
为最新版本创建保留政策
您可以创建保留政策,以保留特定数量的版本。您无法在同一保留政策中同时使用有条件保留和保留最新版本条件。
保留政策可与删除政策搭配使用,以保留根据删除政策的规范本应删除但您希望保留的制品。如果制品同时符合删除政策和保留政策的条件,则会保留该制品。
控制台
您可以为新代码库或现有代码库创建“保留最新版本”政策。
如需向现有代码库添加“保留最新版本”政策,请执行以下操作:
在 Google Cloud 控制台中打开代码库页面。
在代码库列表中,选择相应代码库,然后点击修改代码库。
在清理政策部分中,选择试运行,以便在提交删除任何制品的请求之前测试新政策。您需要设置至少一项删除政策,才能查看保留政策的结果。如需详细了解如何查看测试结果,请参阅试运行。
确定政策按预期运行后,再次修改代码库设置,然后选择删除制品以应用清理政策并删除所选制品。
点击添加清理政策,然后添加以下内容:
- 名称:为清理政策指定名称。该名称在您应用于代码库的政策组中必须是唯一的。
- 政策类型:选择保留最新版本。
在保留数量字段中,输入要保留在代码库中的制品版本数。
可选:选择软件包前缀,以指定要应用保留政策的软件包前缀。例如,
red, blue
将匹配工件名称red-team
、redis
和bluebird
。您可以点击添加清理政策来添加更多清理政策。
点击更新。
您的清理政策已应用于代码库。点击显示更多,即可在代码库详情部分查看清理政策。
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-team
、redis
和bluebird
。
- 将
MINIMUM_NUMBER
替换为要在代码库中保留的制品版本数。
如需将保留政策应用于代码库中的所有软件包,请省略 packageNamePrefixes
条件。系统会保留代码库中每个软件包的指定数量的近期版本。
Artifact Registry 会使用定期运行的后台作业对清理政策执行试运行和实际运行。更改会在大约一天内生效。
政策文件示例
以下政策文件示例包含一项删除政策和两项保留政策。
- 如果制品以字符串
alpha
或v0
开头,delete-prerelease
政策会在上传 30 天后移除制品版本。 keep-tagged-release
政策会保留带有前缀release
且文件名以webapp
或mobile
开头的制品。keep-minimum-versions
政策会保留文件名以webapp
、mobile
或sandbox
开头的制品最近的五个版本。
[
{
"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 服务明确启用数据写入类型的数据访问审核日志。 如需启用数据访问审核日志,请参阅启用审核日志。
控制台
在 Google Cloud 控制台中打开代码库页面。
在代码库列表中,选择相应代码库,然后点击修改代码库。
在清理政策部分中,选择试运行。
点击更新。
当删除政策导致 BatchDeleteVersions
操作时,参数 validateOnly
的评估结果为 "true"
。
Artifact Registry 会使用定期运行的后台作业来试运行和实际运行清理政策。更改会在大约一天内生效。
请至少等待一天,然后再查询试运行的审核日志。
如需查询清理政策的试运行审核日志,请运行以下命令:
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
如需使用清理政策进行模拟运行,请运行以下命令:
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"
。
Artifact Registry 会使用定期运行的后台作业来试运行和实际运行清理政策。更改会在大约一天内生效。
请至少等待一天,然后再查询试运行的审核日志。
如需查询清理政策的试运行审核日志,请运行以下命令:
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 文件中定义的清理政策,请使用 gcloud CLI 将这些政策应用于您希望 Artifact Registry 自动删除制品版本的代码库。
如需在控制台中应用设置为试运行的清理政策,请将该政策设置为删除制品。
您只能将清理政策应用于标准代码库。您无法将清理政策应用于以下对象:
- Google Cloud 项目。
控制台
如需应用清理政策,请执行以下操作:
在 Google Cloud 控制台中打开代码库页面。
在代码库列表中,选择相应代码库,然后点击修改代码库。
在清理政策部分中,选择删除制品。
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
是代码库的单区域或多区域位置。 POLICY_FILE
是包含清理政策的文件的名称。
--no-dry-run
标志会针对相应代码库停用预演功能。
例如,以下命令会将 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 会使用定期运行的后台作业来删除和保留符合您政策的制品。更改应会在大约一天内生效。
更新政策
控制台
在 Google Cloud 控制台中打开代码库页面。
在代码库列表中,选择相应代码库,然后点击修改代码库。
在清理政策部分中,点击要修改的政策的名称。
修改清理政策,然后点击更新。
您的清理政策已应用于代码库。
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
是代码库的单区域或多区域位置。 POLICY_FILE
是包含清理政策的文件的名称。
--no-dry-run
标志会停用相应代码库的模拟运行功能。
列出代码库清理政策
您可以查看与代码库关联的清理政策。
控制台
在 Google Cloud 控制台中打开代码库页面。
在代码库列表中,选择要查看的代码库。
在代码库详情部分,点击显示更多。
系统会显示清理政策名称。
如需查看或修改代码库清理政策的详细信息,请点击修改代码库。
您现有的清理政策详情会列在清理政策部分。
gcloud
运行以下命令:
gcloud artifacts repositories list-cleanup-policies REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION
替换以下内容:
- 将
REPOSITORY
替换为代码库的名称。 - 将
PROJECT_ID
替换为 Google Cloud 项目的 ID。 -
LOCATION
是代码库的单区域或多区域位置。
从代码库中移除政策
如果您不再希望 Artifact Registry 自动删除制品版本,请从代码库中移除清理政策。
控制台
在 Google Cloud 控制台中打开代码库页面。
在代码库列表中,选择相应代码库,然后点击修改代码库。
在清理政策部分中,将光标悬停在要删除的政策的名称上。
点击删除图标。
点击更新。
清理政策已删除。
gcloud
运行以下命令:
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-west1
的代码库 my-repo
中移除名为 delete-test
的政策:
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