Configura i criteri di pulizia

Un criterio di pulizia di Artifact Registry definisce i criteri per l'eliminazione automatica versioni degli artefatti che non ti servono più o di conservare gli artefatti che vuoi per archiviarli a tempo indeterminato.

I criteri di pulizia sono utili se archivi molte versioni degli artefatti, ma e mantenere solo le versioni specifiche rilasciate in produzione. Tu può definire i criteri di eliminazione con criteri per l'eliminazione degli artefatti tieni criteri con i criteri per la conservazione degli artefatti.

Se una versione dell'artefatto corrisponde ai criteri sia in un criterio di eliminazione sia in una conservazione Artifact Registry, Artifact Registry applica il criterio di conservazione.

Le eliminazioni attivate dai criteri di eliminazione vengono conteggiate ai fini di Artifact Registry per progetto di eliminazione della quota di richieste e sono con un limite di 300.000 eliminazioni per repository al giorno.

Pianificazione dell'applicazione dei criteri

Artifact Registry elimina e conserva gli artefatti che corrispondono alla pulizia e i criteri utilizzano un job in background che viene eseguito periodicamente. Le modifiche hanno effetto entro circa un giorno.

Numero massimo di criteri di pulizia per repository

Puoi applicare il massimo di 10 criteri di pulizia a un repository.

Formati supportati

Puoi impostare un criterio di pulizia sui repository standard e remoti per tutti i formati di repository.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per applicare o rimuovere i criteri di pulizia, chiedi all'amministratore di concederti Ruolo IAM Amministratore Artifact Registry (roles/artifactregistry.admin) nel progetto di repository. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questo ruolo predefinito contiene le autorizzazioni necessarie per applicare o rimuovere i criteri di pulizia. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per applicare o rimuovere i criteri di pulizia sono necessarie le seguenti autorizzazioni:

  • artifactregistry.repositories.update
  • Per eliminare gli artefatti che soddisfano i criteri in un criterio di pulizia: artifactregistry.versions.delete

Potresti anche riuscire a ottenere queste autorizzazioni con ruoli personalizzati e altri ruoli predefiniti.

Il ruolo predefinito per l'agente di servizio Artifact Registry include l'autorizzazione artifactregistry.versions.delete, che è necessario per eliminare le immagini che soddisfano i criteri di un criterio di pulizia.

Creare un file di criteri

Un file dei criteri è un file JSON che definisce i criteri di eliminazione e conservazione. Puoi un file dei criteri, creando e modificando un file JSON, quindi utilizzando Google Cloud CLI per applicare il criterio oppure mediante la console Google Cloud. Elimina e i criteri specificano le condizioni per l'eliminazione degli artefatti. Specifica criteri di Keep condizioni per conservare un artefatto o un numero di versioni recenti da conservare. Tu non è possibile utilizzare le condizioni e le versioni più recenti nella stessa norma di conservazione.

Crea un criterio di eliminazione

Un criterio di eliminazione consente di specificare l'età minima o massima per eliminazione degli artefatti e criteri di filtro aggiuntivi per limitare il criterio a artefatti specifici.

Se hai determinati elementi che non vuoi che vengano eliminati per qualsiasi motivo, crea una norma di conservazione condizionale o più recente le versioni mantengono un criterio e un criterio di eliminazione. Se un artefatto corrisponde ai criteri sia nel criterio di eliminazione sia nel criterio di conservazione viene conservato l'artefatto.

console

Puoi creare un criterio di eliminazione per un repository nuovo o esistente.

Per aggiungere un criterio di eliminazione a un repository esistente:

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository:

  3. Nella sezione Criteri di pulizia, seleziona Prova per testare il nuovo prima di impegnarti a eliminare gli artefatti. Per ulteriori informazioni sui risultati del test, consulta la sezione Prova.

    Una volta appurato che la norma funziona come previsto, modifica il tuo impostazioni del repository e seleziona Elimina artefatti per applicare criterio di pulizia ed elimina gli artefatti selezionati.

  4. Fai clic su Aggiungi un criterio di pulizia e aggiungi quanto segue:

    • Nome: assegna un nome al criterio di pulizia. Il nome deve essere univoco all'interno e il gruppo di criteri che applichi a un repository.
    • Tipo di criterio: seleziona Eliminazione condizionale.
    • Stato del tag: indica se il criterio deve verifica la presenza di elementi con tag o senza tag. Gli artefatti vengono taggati il push o il pull di un'immagine da o verso un repository. Per ulteriori informazioni su Docker , consulta Concetti sui container.

      • Qualsiasi stato del tag: ignora lo stato del tag e si applica sia a tag che a artefatti senza tag.
      • Con tag: si applica solo agli elementi con tag.
      • Senza tag: si applica solo agli elementi senza tag.

      I formati che non supportano i tag vengono trattati come untagged. Se in un repository sono abilitati tag immutabili, gli artefatti con tag non possono l'eliminazione.

      Per ulteriori informazioni sullo stato dei tag, di pulizia, consulta Riferimento TagState.

  5. Di seguito sono riportati alcuni modi facoltativi per definire il criterio di eliminazione:

    • Prefissi tag: si tratta di un elenco separato da virgole di prefissi dei tag. Ad esempio, i prefissi test e staging corrispondono immagini con tag testenv e staging-1.5. tagState deve essere impostato su TAGGED per utilizzare i prefissi tag.
    • Prefissi di versione: sono un elenco separato da virgole della versione dell'elemento prefissi. Ad esempio v1, v2 corrisponde alle versioni v1.5, v2.0alpha e v10.2.
    • Prefissi pacchetto: un elenco di prefissi dei nomi degli artefatti. Puoi inserire più prefissi premendo Enter o , tra i prefissi. Ad esempio, red, blue creerebbe due prefissi, red e blue e corrisponde ai nomi degli artefatti red-team, redis, e bluebird.
    • Precedente di: il tempo minimo trascorso dalla versione di un artefatto create nel repository, specificata come durata. Ad esempio, 30d corrisponde a 30 giorni. Puoi specificare la durata in secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.
    • Più recente di: è il tempo massimo trascorso dalla versione di un l'artefatto è stato creato nel repository, specificato come durata. Ad esempio, 30d corrisponde a 30 giorni.
  6. Puoi aggiungere altri criteri di pulizia facendo clic su Aggiungi un criterio di pulizia.

  7. Fai clic su Aggiorna.

    Il criterio di pulizia viene applicato al repository. Puoi visualizzare i criteri di pulizia nella sezione Dettagli repository facendo clic su Mostra altro.

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"
  }
}

Un criterio di eliminazione deve includere un nome, un'azione e almeno una condizione.

name
Nello snippet del criterio Elimina, DELETE_POLICY_NAME è il nome delle norme. Il nome deve essere univoco all'interno del gruppo di criteri che applicabili a un repository.
action
Per un criterio di eliminazione, il valore è {"type": "Delete"}.
condition
Specifica una o più delle seguenti condizioni:
  • tagState: TAG_STATUS indica se il criterio deve verifica la presenza di elementi con tag o senza tag. Gli artefatti vengono taggati il push o il pull di un'immagine da o verso un repository. I valori supportati sono:

    • tagged: si applica solo agli elementi con tag.
    • untagged: si applica solo agli elementi senza tag.
    • any: ignora lo stato del tag e si applica sia a tag che a quelli non taggati artefatti.

    I formati che non supportano i tag vengono trattati come untagged. Se un repository ha tag immutabili abilitati, gli artefatti con tag non possono essere eliminati.

    Per ulteriori informazioni sui tag Docker, consulta Concetti sui container.

  • tagPrefixes: TAG_PREFIXES è un elenco separato da virgole di prefissi dei tag. Ad esempio, "test", "staging" corrisponderebbe a immagini con tag "testenv" e "staging-1.5". tagState deve essere impostato su TAGGED per utilizzare i prefissi tag.

  • versionNamePrefixes: VERSION_PREFIXES è un un elenco separato da virgole di prefissi della versione dell'artefatto. Ad esempio "v1", "v2" corrisponderebbe alle versioni "v1.5", "v2.0alpha" e "v10.2".

  • packageNamePrefixes: PACKAGE_PREFIXES è un un elenco separato da virgole di prefissi dei nomi degli artefatti. Ad esempio "red", "blue" corrisponde ai nomi degli artefatti "red-team", "redis" e "bluebird".

  • olderThan: OLDER_THAN_DURATION è il tempo minimo trascorso da la versione di un artefatto era create nel repository, specificata come durata. Ad esempio, 30d corrisponde a 30 giorni. Puoi specificare la durata in secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.

  • newerThan: NEWER_THAN_DURATION è il tempo massimo da la versione di un artefatto è stata creata nel repository, specificata come durata massima. Ad esempio, 30d corrisponde a 30 giorni.

Creare un criterio di conservazione condizionale

Un criterio di conservazione condizionale specifica i criteri per la conservazione degli artefatti. Conserva di questi criteri funzionano con i criteri di eliminazione per conservare gli artefatti che verrebbero vengano eliminati in base alle specifiche del criterio di eliminazione, ma che vuoi da conservare. Quando un artefatto corrisponde ai criteri sia per un criterio di eliminazione sia per un criterio di mantenimento, l'artefatto viene mantenuto.

console

Puoi creare un criterio di conservazione per un repository nuovo o esistente.

Per aggiungere un criterio Keep a un repository esistente:

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository:

  3. Nella sezione Criteri di pulizia, seleziona Prova per testare il nuovo prima di impegnarti a eliminare gli artefatti. Devi impostare Almeno un criterio di eliminazione per visualizzare i risultati della conservazione . Per ulteriori informazioni su come vedere i risultati del test, consulta la sezione Prova.

    Quando hai la certezza che i tuoi criteri funzionino come previsto, modifica i tuoi impostazioni del repository e seleziona Elimina artefatti per applicare di pulizia ed elimina gli artefatti selezionati.

  4. Fai clic su Aggiungi un criterio di pulizia e aggiungi quanto segue:

    • Nome: assegna un nome al criterio di pulizia. Il nome deve essere univoco all'interno e il gruppo di criteri che applichi a un repository.
    • Tipo di criterio: seleziona Conservazione condizionale.
    • Stato del tag: indica se il criterio deve verifica la presenza di elementi con tag o senza tag. Gli artefatti vengono taggati il push o il pull di un'immagine da o verso un repository. Per ulteriori informazioni su Docker , consulta Concetti sui container.

      • Qualsiasi stato del tag: ignora lo stato del tag e si applica sia a tag che a artefatti senza tag.
      • Con tag: si applica solo agli elementi con tag.
      • Senza tag: si applica solo agli elementi senza tag.

      I formati che non supportano i tag vengono trattati come untagged. Se in un repository sono abilitati tag immutabili, gli artefatti con tag non possono l'eliminazione. Per ulteriori informazioni sullo stato dei tag, di pulizia, consulta Riferimento TagState.

  5. Di seguito sono riportati alcuni modi facoltativi per definire la norma di conservazione:

    • Prefissi tag: si tratta di un elenco separato da virgole di prefissi dei tag. Ad esempio, i prefissi test e staging corrispondono immagini con tag testenv e staging-1.5. tagState deve essere impostato su TAGGED per utilizzare i prefissi tag.
    • Prefissi di versione: sono un elenco separato da virgole della versione dell'elemento prefissi. Ad esempio v1, v2 corrisponde alle versioni v1.5, v2.0alpha e v10.2.
    • Prefissi pacchetto: si tratta di un elenco separato da virgole di prefissi di nomi di artefatti. Ad esempio, red, blue corrisponde ai nomi degli artefatti red-team, redis, e bluebird.
    • Precedente di: il tempo minimo trascorso dalla versione di un artefatto create nel repository, specificata come durata. Ad esempio, 30d corrisponde a 30 giorni. Puoi specificare la durata in secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.
    • Più recente di: è il tempo massimo trascorso dalla versione di un l'artefatto è stato creato nel repository, specificato come durata. Ad esempio, 30d corrisponde a 30 giorni.
  6. Puoi aggiungere altri criteri di pulizia facendo clic su Aggiungi un criterio di pulizia.

  7. Fai clic su Aggiorna.

    Il criterio di pulizia viene applicato al repository.

JSON

Il formato è simile a quello di un criterio di eliminazione. Per un criterio di conservazione, il valore di 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"
  }
}

Sostituisci quanto segue:

  • KEEP_POLICY_NAME con un nome per il criterio di pulizia. Il nome deve essere univoco all'interno e il gruppo di criteri che applichi a un repository.
  • TAG_STATUS con lo stato del tag, che indica se il criterio deve verificare la presenza di elementi con tag o senza tag. Gli artefatti sono con tag quando esegui il push o il pull di un'immagine da o verso un repository. Per ulteriori informazioni sui tag Docker, consulta Concetti sui container.

    Le opzioni sono:

    • tagged: si applica solo agli elementi con tag.
    • untagged: si applica solo agli elementi senza tag.
    • any: si applica a tutte le versioni

    I formati che non supportano i tag vengono trattati come untagged. Se in un repository sono abilitati tag immutabili, gli artefatti con tag non possono l'eliminazione. Per ulteriori informazioni sullo stato dei tag, di pulizia, consulta Riferimento TagState.

  • TAG_PREFIXES con un elenco separato da virgole di prefissi dei tag. Ad esempio, i prefissi test e staging corrispondono immagini con tag testenv e staging-1.5. tagState deve essere impostato su TAGGED per utilizzare i prefissi tag.

  • VERSION_PREFIXES con un elenco separato da virgole della versione dell'elemento prefissi. Ad esempio, v1, v2 corrisponde alle versioni v1.5, v2.0alpha e v10.2.

  • PACKAGE_PREFIXES con un elenco separato da virgole di nomi dell'elemento prefissi. Ad esempio, red, blue corrisponde ai nomi degli artefatti red-team, redis e bluebird.

  • OLDER_THAN_DURATION con il tempo minimo dall'inizio di un artefatto è stata creata nel repository, specificata come durata massima. Ad esempio, 30d corrisponde a 30 giorni. Puoi specificare la durata secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.
  • NEWER_THAN_DURATION con il tempo massimo dall'ultima di un artefatto è stata creata nel repository, specificata come durata massima. Ad esempio, 30d corrisponde a 30 giorni.

Crea un criterio di conservazione per le versioni più recenti

Puoi creare un criterio di conservazione per conservare un numero specifico di versioni. Non puoi Utilizzare i criteri Conservazione condizionale e Conserva le versioni più recenti criterio di conservazione.

Mantieni i criteri compatibili con i criteri di eliminazione per conservare gli artefatti che potrebbero vengano eliminati in base alle specifiche del criterio di eliminazione, ma che tu che vuoi conservare. Quando un artefatto corrisponde ai criteri sia per un criterio di eliminazione sia per un criterio di conservazione, l'artefatto viene mantenuto.

console

Puoi creare un criterio di conservazione delle versioni più recenti per un account nuovo o esistente repository Git.

Per aggiungere un criterio di conservazione delle versioni più recenti a un repository esistente:

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository:

  3. Nella sezione Criteri di pulizia, seleziona Prova per testare il nuovo prima di impegnarti a eliminare gli artefatti. Devi impostare Almeno un criterio di eliminazione per visualizzare i risultati della conservazione . Per ulteriori informazioni su come vedere i risultati del test, consulta la sezione Prova.

    Quando hai la certezza che i tuoi criteri funzionino come previsto, modifica i tuoi impostazioni del repository e seleziona Elimina artefatti per applicare di pulizia ed elimina gli artefatti selezionati.

  4. Fai clic su Aggiungi un criterio di pulizia e aggiungi quanto segue:

    • Nome: assegna un nome al criterio di pulizia. Il nome deve essere univoco all'interno e il gruppo di criteri che applichi a un repository.
    • Tipo di criterio: seleziona Conserva le versioni più recenti.
  5. Nel campo Conserva il conteggio, inserisci il numero di versioni di un artefatto da conservare nel repository.

  6. (Facoltativo) Seleziona Prefissi pacchetto per specificare i prefissi da applicare il criterio di conservazione. Ad esempio, red, blue corrisponde ai nomi degli artefatti red-team, redis e bluebird.

  7. Puoi aggiungere altri criteri di pulizia facendo clic su Aggiungi un criterio di pulizia.

  8. Fai clic su Aggiorna.

    Il criterio di pulizia viene applicato al repository. Puoi visualizzare i criteri di pulizia nella sezione Dettagli repository facendo clic su Mostra altro.

JSON

Il formato è simile a quello di un criterio di eliminazione. Per un criterio di conservazione, il valore di action è {"type": "Keep"}.

Un criterio di conservazione per conservare un numero specifico di versioni ha un mostRecentVersions anziché una sezione condition.

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

Sostituisci quanto segue:

  • KEEP_POLICY_NAME con un nome per il criterio di conservazione. Il nome devono essere univoci all'interno del gruppo di criteri che applichi a un repository.
  • PACKAGE_PREFIXES con i prefissi del pacchetto facoltativi da applicare il criterio di conservazione. Ad esempio, red, blue corrisponde ai nomi degli artefatti red-team, redis e bluebird.
  • MINIMUM_NUMBER con il numero di versioni di un artefatto da conservare nel repository.

Per applicare il criterio Keep a tutti i pacchetti nel repository, ometti il parametro packageNamePrefixes condizione. Il numero specificato di versioni recenti di e conservare ciascun pacchetto nel repository.

File dei criteri di esempio

Il seguente esempio di file dei criteri include un criterio di eliminazione e due criteri di conservazione.

  • Il criterio delete-prerelease rimuove le versioni dell'elemento 30 giorni dopo il caricamento se l'artefatto inizia con la stringa alpha o v0.
  • Il criterio keep-tagged-release conserva gli artefatti taggati con il prefisso release con un nome file che inizia con webapp o mobile.
  • Il criterio keep-minimum-versions conserva le cinque versioni più recenti di artefatti che hanno un nome file che inizia con webapp, mobile, o 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
    }
  }
]

Testa i criteri con una prova

Per testare i criteri di pulizia, puoi impostarlo su Prova la console o esegui Comando gcloud artifacts set-cleanup-policies con il flag --dry-run.

Per analizzare l'effetto dei criteri di pulizia, puoi visualizzare audit log di accesso ai dati di Artifact Registry. Ricevere dati Accedi agli audit log per i criteri di pulizia, devi abilitare esplicitamente il tipo di scrittura dati degli audit log di accesso ai dati per il servizio Artifact Registry. Per abilitare gli audit log di accesso ai dati, consulta Abilita gli audit log.

console

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository:

  3. Nella sezione Criteri di pulizia, seleziona Prova.

  4. Fai clic su Aggiungi un criterio di pulizia e configura le opzioni per il tuo Eliminazione condizionale, Conservazione condizionale oppure Conserva le versioni più recenti.

  5. Fai clic su Aggiorna.

Quando un criterio di eliminazione genera un'azione BatchDeleteVersions, il parametro validateOnly restituisce "true".

Per eseguire query sugli audit log per le prove dei criteri di pulizia, esegui questo 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

L'output è simile al seguente:

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'

Interfaccia a riga di comando gcloud

Per eseguire una prova con i criteri di pulizia, esegui questo comando:

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

Sostituisci quanto segue:

  • REPOSITORY con il nome del repository.
  • PROJECT_ID con l'ID del tuo progetto Google Cloud.
  • LOCATION con una o più regioni località del repository.

Quando un criterio di eliminazione genera un'azione BatchDeleteVersions, il parametro validateOnly restituisce "true".

Per eseguire query sugli audit log per le prove dei criteri di pulizia, esegui questo 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

L'output è simile al seguente:

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'

Applica criteri a un repository

Per utilizzare i criteri di pulizia definiti in un file JSON locale, applicali a in cui vuoi che Artifact Registry gestisca l'eliminazione automatica delle versioni degli artefatti usando gcloud CLI.

Per applicare i criteri di pulizia impostati su Dry run nella console, imposta il criterio su Elimina gli artefatti.

Puoi applicare criteri di pulizia solo ai repository standard. Non puoi applica criteri di pulizia a:

  • Un progetto Google Cloud.

console

Per applicare i criteri di pulizia:

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository:

  3. Nella sezione Criteri di pulizia, seleziona Elimina artefatti.

    Artifact Registry elimina e conserva gli artefatti che corrispondono ai tuoi criteri utilizzando un job in background che viene eseguito periodicamente. Le modifiche devono diventeranno effettive entro circa un giorno.

gcloud

Per applicare i criteri di pulizia, esegui questo comando nella directory con del criterio di pulizia.

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

Sostituisci quanto segue:

  • REPOSITORY con il nome del repository.
  • PROJECT_ID con l'ID del tuo progetto Google Cloud.
  • LOCATION con una o più regioni località del repository.
  • --no-dry-run disabilita la funzionalità dry run per il repository.
  • POLICY_FILE è il nome del file con il criterio di pulizia.

Ad esempio, il seguente comando applica i criteri in policy.json al repository my-repo nella regione us-west1 nel progetto my-project.

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

Artifact Registry elimina e conserva gli artefatti che corrispondono ai tuoi criteri utilizzando un job in background eseguito periodicamente. Le modifiche dovrebbero diventare effettive entro circa un giorno.

Aggiornamento di un criterio

console

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository:

  3. Nella sezione Criteri di pulizia, fai clic sul nome del criterio che ti interessa. da impostare per la modifica.

  4. Modifica il criterio di pulizia e fai clic su Aggiorna.

    Il criterio di pulizia viene applicato al repository.

Interfaccia a riga di comando gcloud

Per aggiornare i criteri esistenti, modifica le impostazioni nel file dei criteri e poi Esegui questo comando per applicare nuovamente i criteri.

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

Sostituisci quanto segue:

  • REPOSITORY con il nome del repository.
  • PROJECT_ID con l'ID del tuo progetto Google Cloud.
  • LOCATION con una o più regioni località del repository.
  • --no-dry-run disabilita la funzionalità dry run per il repository.
  • POLICY_FILE è il nome del file con il criterio di pulizia.

Elenca i criteri di pulizia del repository

Puoi visualizzare i criteri di pulizia associati a un repository.

console

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona quello che vuoi visualizzare.

  3. Nella sezione Dettagli repository, fai clic su Mostra altro.

    Vengono visualizzati i nomi dei criteri di pulizia.

  4. Per visualizzare o modificare i dettagli dei criteri di pulizia del repository, fai clic su Modifica repository:

    I dettagli dei criteri di pulizia esistenti sono elencati in Criteri di pulizia.

Interfaccia a riga di comando gcloud

Esegui questo comando:

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

Sostituisci quanto segue:

  • REPOSITORY con il nome del repository.
  • PROJECT_ID con l'ID del tuo progetto Google Cloud.
  • LOCATION con una o più regioni località del repository.

Rimuovi un criterio da un repository

Rimuovi un criterio di pulizia da un repository quando non vuoi più Artifact Registry per eliminare automaticamente le versioni degli artefatti.

console

  1. Apri la pagina Repository nella console Google Cloud.

    Apri la pagina Repository

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository:

  3. Nella sezione Criteri di pulizia, passa il mouse sopra il nome del criterio che da eliminare.

  4. Fai clic sull'icona Elimina.

  5. Fai clic su Aggiorna.

    Il criterio di pulizia è stato eliminato.

Interfaccia a riga di comando gcloud

Esegui questo comando:

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

Sostituisci quanto segue:

  • REPOSITORY è il nome del repository.
  • PROJECT_IDè l'ID del tuo progetto Google Cloud.
  • LOCATION è il una o più regioni località del repository.
  • POLICY_NAMES è un elenco separato da virgole di nomi di criteri per i criteri che vuoi rimuovere.

Ad esempio, il seguente comando rimuove un criterio denominato delete-test dalla repository my-repo nella regione us-west1 nel progetto my-project:

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

Controlla le voci del log per i criteri di pulizia

Per visualizzare le voci di log del criterio di pulizia in Cloud Logging, devi attiva il logging di DATA_WRITE.

Quando imposti un criterio di pulizia in un repository, l'operazione viene registrata come Esegui l'aggiornamento al repository (operazione UpdateRepository).

Quando Artifact Registry elimina una versione di un artefatto, registra l'evento nei log di accesso ai dati di Cloud Logging. Le voci di log mostrano che L'account di servizio Artifact Registry ha eseguito l'eliminazione. La L'ID dell'account di servizio Artifact Registry è nel formato service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com

Altri strumenti

Per le immagini container, puoi anche utilizzare i seguenti strumenti per il ciclo di vita delle immagini gestione dei dispositivi:

  • gcrane: Uno strumento per i registry di container che puoi usare per copiare le immagini tra i repository.
  • gcr-cleaner: uno strumento per eliminare il container in base a criteri specificati.

Gli strumenti gcrane e gcr-cleaner non sono prodotti Google ufficiali.