Neste documento, descrevemos como criar e gerenciar suas políticas de limpeza.
Funções exigidas
Para receber as permissões necessárias para aplicar ou remover políticas de limpeza,
peça ao administrador para conceder a você o
papel do IAM de Administrador do Artifact Registry (roles/artifactregistry.admin
)
no projeto do repositório.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para aplicar ou remover políticas de limpeza. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para aplicar ou remover políticas de limpeza:
-
artifactregistry.repositories.update
-
Para excluir artefatos que atendem aos critérios de uma política de limpeza:
artifactregistry.versions.delete
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
O papel padrão do agente de serviço do Artifact Registry
inclui a permissão artifactregistry.versions.delete
, que é
necessária para excluir imagens que atendam aos critérios de uma política de limpeza.
Criar um arquivo de política
Um arquivo de política é um arquivo JSON que define suas políticas de exclusão e retenção. É possível criar um arquivo de política criando e editando um arquivo JSON e usando a Google Cloud CLI para aplicar a política ou usando o console Google Cloud . As políticas de exclusão especificam condições para excluir artefatos. As políticas de retenção especificam condições para reter um artefato ou um número de versões recentes a serem mantidas. Não é possível usar condições e versões mais recentes na mesma política de retenção.
Criar uma política de exclusão
Com uma política de exclusão, é possível especificar a idade mínima ou máxima para a exclusão de artefatos e outros critérios de filtragem para limitar a política a artefatos específicos.
Se você tiver determinados artefatos que não quer excluir por nenhum motivo, crie uma política de retenção condicional ou uma política de retenção de versões mais recentes e uma política de exclusão. Se um artefato corresponder aos critérios das duas políticas, ele será mantido.
Console
É possível criar uma política de exclusão para um repositório novo ou existente.
Para adicionar uma política de exclusão a um repositório atual:
Abra a página Repositórios no console do Google Cloud .
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
Na seção Políticas de limpeza, selecione Simulação para testar a nova política antes de excluir artefatos. Para mais informações sobre como ver os resultados do teste, consulte simulação.
Quando tiver certeza de que a política está funcionando conforme o esperado, edite as configurações do repositório novamente e selecione Excluir artefatos para aplicar a política de limpeza e excluir os artefatos selecionados.
Clique em Adicionar uma política de limpeza e adicione o seguinte:
- Nome: dê um nome à política de limpeza. O nome precisa ser exclusivo no grupo de políticas aplicadas a um repositório.
- Tipo de política: selecione Exclusão condicional.
Estado da tag: indica se a política deve verificar artefatos com ou sem tag. Os artefatos são marcados ao enviar ou extrair uma imagem para ou de um repositório. Para mais informações sobre tags do Docker, consulte Conceitos de contêiner.
- Qualquer estado de tag: ignora o estado da tag e se aplica a artefatos com e sem tag.
- Marcado: aplica-se apenas a artefatos marcados.
- Sem tag: aplica-se apenas a artefatos sem tag.
Os formatos que não são compatíveis com tags são tratados como
untagged
. Se um repositório tiver tags imutáveis ativadas, não será possível excluir artefatos marcados.Para mais informações sobre o estado da tag em relação às políticas de limpeza, consulte a referência TagState.
Estas são maneiras opcionais de definir sua política de exclusão:
- Prefixos de tag: é uma lista separada por vírgulas de prefixos de tag. Por exemplo, os prefixos
test
estaging
corresponderiam a imagens com as tagstestenv
estaging-1.5
.tagState
precisa ser definido comoTAGGED
para usar prefixos de tag. - Prefixos de versão: - é uma lista separada por vírgulas de prefixos de versão
de artefato. Por exemplo,
v1
,v2
corresponderia às versõesv1.5
,v2.0alpha
ev10.2
. - Prefixos de pacote: é uma lista de prefixos de nome de artefato. É possível inserir vários prefixos pressionando
Enter
ou,
entre eles. Por exemplo,red, blue
criaria dois prefixos,red
eblue
, e corresponderia aos nomes de artefatored-team
,redis
, ebluebird
. - Mais antigo que: é o tempo mínimo desde que a versão de um artefato foi
criada no repositório, especificado como uma duração.
Por exemplo,
30d
é 30 dias. É possível especificar durações de segundos, minutos, horas ou dias adicionandos
,m
,h
oud
, respectivamente. - Mais recente que: é o tempo máximo desde que a versão de um
artefato foi criada no repositório, especificado como uma duração.
Por exemplo,
30d
é 30 dias.
- Prefixos de tag: é uma lista separada por vírgulas de prefixos de tag. Por exemplo, os prefixos
Para adicionar mais políticas de limpeza, clique em Adicionar uma política de limpeza.
Clique em Atualizar.
Sua política de limpeza é aplicada ao repositório. Para conferir suas políticas de limpeza, clique em Mostrar mais na seção Detalhes do repositório.
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"
}
}
Uma política de exclusão precisa incluir um nome, uma ação e pelo menos uma condição.
name
- No snippet da política de exclusão, DELETE_POLICY_NAME é o nome da política. O nome precisa ser exclusivo no grupo de políticas que você aplica a um repositório.
action
- Para uma política de exclusão, o valor é
{"type": "Delete"}
. condition
- Especifique uma ou mais das seguintes condições:
tagState
: TAG_STATUS indica se a política deve verificar artefatos marcados ou não marcados. Os artefatos são marcados ao enviar ou extrair uma imagem para ou de um repositório. Os valores aceitos são:tagged
: aplica-se apenas a artefatos marcados.untagged
: aplica-se apenas a artefatos sem tag.any
: ignora o estado da tag e se aplica a artefatos com e sem tag.
Os formatos que não são compatíveis com tags são tratados como
untagged
. Se um repositório tiver tags imutáveis ativadas, não será possível excluir os artefatos marcados.Para mais informações sobre tags do Docker, consulte Conceitos de contêiner.
tagPrefixes
: TAG_PREFIXES é uma lista separada por vírgulas de prefixos de tag. Por exemplo,"test", "staging"
corresponderia a imagens com as tags"testenv"
e"staging-1.5"
.tagState
precisa ser definido comoTAGGED
para usar prefixos de tag.versionNamePrefixes
: VERSION_PREFIXES é uma lista separada por vírgulas de prefixos de versão de artefato. Por exemplo,"v1", "v2"
corresponderia às versões"v1.5"
,"v2.0alpha"
e"v10.2"
.packageNamePrefixes
: PACKAGE_PREFIXES é uma lista separada por vírgulas de prefixos de nomes de artefatos. Por exemplo,"red", "blue"
corresponderia aos nomes de artefato"red-team"
,"redis"
e"bluebird"
.olderThan
: OLDER_THAN_DURATION é o tempo mínimo desde que a versão de um artefato foi criada no repositório, especificado como uma duração. Por exemplo,30d
é 30 dias. É possível especificar durações de segundos, minutos, horas ou dias adicionandos
,m
,h
oud
, respectivamente.newerThan
: NEWER_THAN_DURATION é o tempo máximo desde que a versão de um artefato foi criada no repositório, especificado como uma duração. Por exemplo,30d
é 30 dias.
O Artifact Registry faz simulações e execuções ativas de políticas de limpeza usando um job em segundo plano que é executado periodicamente. As mudanças entram em vigor em cerca de um dia.
Criar uma política de retenção condicional
Uma política de retenção condicional especifica critérios para reter artefatos. As políticas de manutenção funcionam com políticas de exclusão para manter artefatos que seriam excluídos de acordo com as especificações da política de exclusão, mas que você quer manter. Quando um artefato atende aos critérios de uma política de exclusão e de retenção, ele é mantido.
Console
É possível criar uma política de retenção para um repositório novo ou atual.
Para adicionar uma política de retenção a um repositório atual:
Abra a página Repositórios no console do Google Cloud .
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
Na seção Políticas de limpeza, selecione Simulação para testar a nova política antes de excluir artefatos. É necessário definir pelo menos uma política de exclusão para ver os resultados da sua política de retenção. Para mais informações sobre como ver os resultados do teste, consulte simulação.
Quando tiver certeza de que as políticas estão funcionando conforme o esperado, edite as configurações do repositório novamente e selecione Excluir artefatos para aplicar as políticas de limpeza e excluir os artefatos selecionados.
Clique em Adicionar uma política de limpeza e adicione o seguinte:
- Nome: dê um nome à política de limpeza. O nome precisa ser exclusivo no grupo de políticas aplicadas a um repositório.
- Tipo de política: selecione Retenção condicional.
Estado da tag: indica se a política deve verificar artefatos com ou sem tag. Os artefatos são marcados ao enviar ou extrair uma imagem para ou de um repositório. Para mais informações sobre tags do Docker, consulte Conceitos de contêiner.
- Qualquer estado de tag: ignora o estado da tag e se aplica a artefatos com e sem tag.
- Marcado: aplica-se apenas a artefatos marcados.
- Sem tag: aplica-se apenas a artefatos sem tag.
Os formatos que não são compatíveis com tags são tratados como
untagged
. Se um repositório tiver tags imutáveis ativadas, não será possível excluir artefatos marcados. Para mais informações sobre o estado da tag em relação às políticas de limpeza, consulte a referência TagState.
Estas são maneiras opcionais de definir sua política de retenção:
- Prefixos de tag: é uma lista separada por vírgulas de prefixos de tag. Por exemplo, os prefixos
test
estaging
corresponderiam a imagens com as tagstestenv
estaging-1.5
.tagState
precisa ser definido comoTAGGED
para usar prefixos de tag. - Prefixos de versão: - é uma lista separada por vírgulas de prefixos de versão
de artefato. Por exemplo,
v1
,v2
corresponderia às versõesv1.5
,v2.0alpha
ev10.2
. - Prefixos de pacote: é uma lista separada por vírgulas de prefixos de nomes de artefatos.
Por exemplo,
red, blue
corresponderia aos nomes de artefatored-team
,redis
ebluebird
.
- Mais antigo que: é o tempo mínimo desde que a versão de um artefato foi
criada no repositório, especificado como uma duração.
Por exemplo,
30d
é 30 dias. É possível especificar durações de segundos, minutos, horas ou dias adicionandos
,m
,h
oud
, respectivamente. - Mais recente que: é o tempo máximo desde que a versão de um
artefato foi criada no repositório, especificado como uma duração.
Por exemplo,
30d
é 30 dias.
- Prefixos de tag: é uma lista separada por vírgulas de prefixos de tag. Por exemplo, os prefixos
Para adicionar mais políticas de limpeza, clique em Adicionar uma política de limpeza.
Clique em Atualizar.
Sua política de limpeza é aplicada ao repositório.
JSON
O formato é semelhante a uma política de exclusão. Para uma política de retenção, o valor de 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"
}
}
Substitua:
KEEP_POLICY_NAME
com um nome para a política de limpeza. O nome precisa ser exclusivo no grupo de políticas aplicadas a um repositório.TAG_STATUS
com o estado da tag, que indica se a política deve verificar artefatos com ou sem tag. Os artefatos são marcados ao enviar ou extrair uma imagem de ou para um repositório. Para mais informações sobre tags do Docker, consulte Conceitos de contêiner.As opções são:
tagged
: aplica-se apenas a artefatos marcados.untagged
: aplica-se apenas a artefatos sem tag.any
: se aplica a todas as versões
Os formatos que não são compatíveis com tags são tratados como
untagged
. Se um repositório tiver tags imutáveis ativadas, não será possível excluir artefatos marcados. Para mais informações sobre o estado da tag em relação às políticas de limpeza, consulte a referência TagState.TAG_PREFIXES
com uma lista separada por vírgulas de prefixos de tag. Por exemplo, os prefixostest
estaging
corresponderiam a imagens com as tagstestenv
estaging-1.5
.tagState
precisa ser definido comoTAGGED
para usar prefixos de tag.VERSION_PREFIXES
com uma lista separada por vírgulas de prefixos de versão do artefato. Por exemplo,v1, v2
corresponderia às versõesv1.5
,v2.0alpha
ev10.2
.PACKAGE_PREFIXES
por uma lista separada por vírgulas de prefixos de nomes de artefatos. Por exemplo,red, blue
corresponderia aos nomes de artefatored-team
,redis
ebluebird
.
OLDER_THAN_DURATION
com o tempo mínimo desde que a versão de um artefato foi criada no repositório, especificado como uma duração. Por exemplo,30d
é 30 dias. Você pode especificar durações de segundos, minutos, horas ou dias adicionandos
,m
,h
oud
, respectivamente.NEWER_THAN_DURATION
com o tempo máximo desde que a versão de um artefato foi criada no repositório, especificado como uma duração. Por exemplo,30d
é 30 dias.
O Artifact Registry faz simulações e execuções ativas de políticas de limpeza usando um job em segundo plano que é executado periodicamente. As mudanças entram em vigor em cerca de um dia.
Criar uma política de retenção para as versões mais recentes
Você pode criar uma política de retenção para manter um número específico de versões. Não é possível usar os critérios Retenção condicional e Manter as versões mais recentes na mesma política de retenção.
As políticas de retenção funcionam com políticas de exclusão para manter artefatos que seriam excluídos de acordo com as especificações da política de exclusão, mas que você quer manter. Quando um artefato corresponde aos critérios de uma política de exclusão e de retenção, ele é mantido.
Console
É possível criar uma política de manter as versões mais recentes para um repositório novo ou atual.
Para adicionar uma política de manter as versões mais recentes a um repositório atual:
Abra a página Repositórios no console do Google Cloud .
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
Na seção Políticas de limpeza, selecione Simulação para testar a nova política antes de excluir artefatos. É necessário definir pelo menos uma política de exclusão para ver os resultados da sua política de retenção. Para mais informações sobre como ver os resultados do teste, consulte simulação.
Quando tiver certeza de que as políticas estão funcionando conforme o esperado, edite as configurações do repositório novamente e selecione Excluir artefatos para aplicar as políticas de limpeza e excluir os artefatos selecionados.
Clique em Adicionar uma política de limpeza e adicione o seguinte:
- Nome: dê um nome à política de limpeza. O nome precisa ser exclusivo no grupo de políticas aplicadas a um repositório.
- Tipo de política: selecione Manter as versões mais recentes.
No campo Manter contagem, insira o número de versões de um artefato a serem mantidas no repositório.
Opcional: selecione Prefixos de pacote para especificar os prefixos a que a política de retenção será aplicada. Por exemplo,
red, blue
corresponderia aos nomes de artefatored-team
,redis
ebluebird
.Para adicionar mais políticas de limpeza, clique em Adicionar uma política de limpeza.
Clique em Atualizar.
Sua política de limpeza é aplicada ao repositório. Para conferir suas políticas de limpeza, clique em Mostrar mais na seção Detalhes do repositório.
JSON
O formato é semelhante a uma política de exclusão. Para uma política de retenção, o valor de action
é {"type": "Keep"}
.
Uma política de retenção para manter um número específico de versões tem uma seção mostRecentVersions
em vez de uma seção condition
.
{
"name": "KEEP_POLICY_NAME",
"action": {"type": "Keep"},
"mostRecentVersions": {
"packageNamePrefixes": ["PACKAGE_PREFIXES"],
"keepCount": MINIMUM_NUMBER
}
}
Substitua:
KEEP_POLICY_NAME
com um nome para sua política de retenção. O nome precisa ser exclusivo no grupo de políticas que você aplica a um repositório.PACKAGE_PREFIXES
com os prefixos de pacote opcionais para aplicar a política de retenção. Por exemplo,red, blue
corresponderia aos nomes de artefatored-team
,redis
ebluebird
.
MINIMUM_NUMBER
com o número de versões de um artefato a serem mantidas no repositório.
Para aplicar a política de retenção a todos os pacotes no repositório, omita a condição packageNamePrefixes
. O número especificado de versões recentes de cada pacote no repositório é mantido.
O Artifact Registry faz simulações e execuções ativas de políticas de limpeza usando um job em segundo plano que é executado periodicamente. As mudanças entram em vigor em cerca de um dia.
Exemplo de arquivo de política
O exemplo de arquivo de política a seguir tem uma política de exclusão e duas de retenção.
- A política
delete-prerelease
remove versões de artefato 30 dias após o upload se o artefato começar com a stringalpha
ouv0
. - A política
keep-tagged-release
retém artefatos marcados com o prefixorelease
que têm um nome de arquivo começando comwebapp
oumobile
. - A política
keep-minimum-versions
retém as cinco versões mais recentes de artefatos com um nome de arquivo que começa comwebapp
,mobile
ousandbox
.
[
{
"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
}
}
]
Testar suas políticas com uma simulação
Para testar suas políticas de limpeza, defina a simulação no console ou execute o comando gcloud artifacts set-cleanup-policies
com a flag --dry-run
.
Para analisar o efeito das suas políticas de limpeza, consulte os registros de auditoria de acesso a dados do Artifact Registry. Para receber registros de auditoria de acesso a dados para políticas de limpeza, é necessário ativar explicitamente o tipo gravação de dados dos registros de auditoria de acesso a dados para o serviço do Artifact Registry. Para ativar os registros de auditoria de acesso a dados, consulte Ativar registros de auditoria.
Console
Abra a página Repositórios no console do Google Cloud .
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
Na seção Políticas de limpeza, selecione Simulação.
Clique em Adicionar uma política de limpeza e configure as opções para as políticas de Exclusão condicional, Retenção condicional ou Manter as versões mais recentes.
Clique em Atualizar.
Quando uma política de exclusão resulta em uma ação BatchDeleteVersions
, o parâmetro
validateOnly
é avaliado como "true"
.
O Artifact Registry faz simulações e execuções ativas de políticas de limpeza usando um job em segundo plano que é executado periodicamente. As mudanças entram em vigor em aproximadamente um dia.
Aguarde pelo menos um dia antes de consultar os registros de auditoria da simulação.
Para consultar os registros de auditoria de simulações das suas políticas de limpeza, execute o seguinte comando:
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
A saída será assim:
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
Para fazer uma simulação com suas políticas de limpeza, execute o seguinte comando:
gcloud artifacts repositories set-cleanup-policies REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--policy=POLICY_FILE \
--dry-run
Substitua:
REPOSITORY
com o nome do repositório.PROJECT_ID
com o ID do seu Google Cloud projeto.-
LOCATION
é o local regional ou multirregional do repositório.
Quando uma política de exclusão resulta em uma ação BatchDeleteVersions
, o parâmetro
validateOnly
é avaliado como "true"
.
O Artifact Registry faz simulações e execuções ativas de políticas de limpeza usando um job em segundo plano que é executado periodicamente. As mudanças entram em vigor em aproximadamente um dia.
Aguarde pelo menos um dia antes de consultar os registros de auditoria da simulação.
Para consultar os registros de auditoria de simulações das suas políticas de limpeza, execute o seguinte comando:
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
A saída será assim:
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'
Aplicar políticas a um repositório
Para usar as políticas de limpeza definidas em um arquivo JSON local, aplique-as aos repositórios em que você quer que o Artifact Registry processe a exclusão automática de versões de artefato usando a CLI gcloud.
Para aplicar políticas de limpeza definidas como Teste no console, defina a política como Excluir artefatos.
Só é possível aplicar políticas de limpeza a repositórios padrão. Não é possível aplicar políticas de limpeza a:
- Um projeto do Google Cloud .
Console
Para aplicar políticas de limpeza:
Abra a página Repositórios no console do Google Cloud .
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
Na seção Políticas de limpeza, selecione Excluir artefatos.
O Artifact Registry exclui e retém artefatos que correspondem às suas políticas usando um job em segundo plano executado periodicamente. As mudanças vão entrar em vigor em cerca de um dia.
gcloud
Para aplicar políticas de limpeza, execute o comando a seguir no diretório com o arquivo de política de limpeza.
gcloud artifacts repositories set-cleanup-policies REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--policy=POLICY_FILE \
--no-dry-run
Substitua:
REPOSITORY
com o nome do repositório.PROJECT_ID
com o ID do seu Google Cloud projeto.-
LOCATION
é o local regional ou multirregional do repositório. POLICY_FILE
é o nome do arquivo com a política de limpeza.
A flag --no-dry-run
desativa a funcionalidade de simulação para o repositório.
Por exemplo, o comando a seguir aplica políticas em policy.json
ao
repositório my-repo
na região us-west1
do projeto my-project
.
gcloud artifacts repositories set-cleanup-policies my-repo \
--project=my-project \
--location=us-west1 \
--policy=policy.json
O Artifact Registry exclui e retém artefatos que correspondem às suas políticas usando um job em segundo plano que é executado periodicamente. As mudanças devem entrar em vigor em aproximadamente um dia.
Atualizar uma política
Console
Abra a página Repositórios no console do Google Cloud .
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
Na seção Políticas de limpeza, clique no nome da política que você quer definir para modificar.
Edite a política de limpeza e clique em Atualizar.
Sua política de limpeza é aplicada ao repositório.
gcloud
Para atualizar as políticas atuais, edite as configurações no arquivo de política e execute o comando a seguir para aplicar as políticas novamente.
gcloud artifacts repositories set-cleanup-policies REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--policy=POLICY_FILE \
--no-dry-run
Substitua:
REPOSITORY
com o nome do repositório.PROJECT_ID
com o ID do seu Google Cloud projeto.-
LOCATION
é o local regional ou multirregional do repositório. POLICY_FILE
é o nome do arquivo com a política de limpeza.
A flag --no-dry-run
desativa a funcionalidade de simulação para o repositório.
Listar políticas de limpeza do repositório
É possível conferir as políticas de limpeza associadas a um repositório.
Console
Abra a página Repositórios no console do Google Cloud .
Na lista de repositórios, selecione o que você quer ver.
Na seção Detalhes do repositório, clique em Mostrar mais.
Os nomes das políticas de limpeza são exibidos.
Para acessar ou editar os detalhes das políticas de limpeza do repositório, clique em Editar repositório.
Os detalhes das políticas de limpeza atuais estão listados na seção Políticas de limpeza.
gcloud
Execute este comando:
gcloud artifacts repositories list-cleanup-policies REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION
Substitua:
REPOSITORY
com o nome do repositório.PROJECT_ID
com o ID do seu Google Cloud projeto.-
LOCATION
é o local regional ou multirregional do repositório.
Remover uma política de um repositório
Remova uma política de limpeza de um repositório quando não quiser mais que o Artifact Registry exclua automaticamente as versões de artefato.
Console
Abra a página Repositórios no console do Google Cloud .
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
Na seção Políticas de limpeza, passe o cursor sobre o nome da política que você quer excluir.
Clique no ícone Excluir.
Clique em Atualizar.
A política de limpeza é excluída.
gcloud
Execute este comando:
gcloud artifacts repositories delete-cleanup-policies REPOSITORY \
--policynames=POLICY_NAMES \
--project=PROJECT_ID \
--location=LOCATION
Substitua:
REPOSITORY
é o nome do repositório.PROJECT_ID
é o ID do seu projeto Google Cloud .-
LOCATION
é o local regional ou multirregional do repositório. POLICY_NAMES
é uma lista separada por vírgulas de nomes das políticas que você quer remover.
Por exemplo, o comando a seguir remove uma política chamada delete-test
do
repositório my-repo
na região us-west1
do projeto my-project
:
gcloud artifacts repositories delete-cleanup-policies my-repo \
--policynames=delete-test \
--project=my-project \
--location=us-west1
Entradas de registro de auditoria para políticas de limpeza
Para ver as entradas de registro da política de limpeza no Cloud Logging, é necessário ativar o registro em DATA_WRITE
.
Quando você define uma política de limpeza em um repositório, a operação é registrada como uma
atualização do repositório (operação UpdateRepository
).
Quando o Artifact Registry exclui uma versão de um artefato, ele registra o evento
nos registros de acesso a dados do Cloud Logging. As entradas de registro mostram que a conta de serviço do Artifact Registry realizou a exclusão. O ID da conta de serviço do Artifact Registry está no formato
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com