Configurer des règles de nettoyage

Une stratégie de nettoyage d'Artifact Registry définit des critères pour supprimer automatiquement les versions d'artefact dont vous n'avez plus besoin ou pour conserver les artefacts que vous souhaitez stocker indéfiniment.

Les règles de nettoyage sont utiles si vous stockez de nombreuses versions de vos artefacts, mais que vous ne devez conserver que des versions spécifiques que vous publiez en production. Vous pouvez définir des règles de suppression avec des critères de suppression des artefacts et des règles de conservation avec des critères de conservation des artefacts.

Si une version d'artefact correspond aux critères d'une règle de suppression et d'une règle de conservation, Artifact Registry applique la règle de conservation.

Les suppressions déclenchées par des règles de suppression sont comptabilisées dans votre quota de requêtes de suppression de projet Artifact Registry et sont limitées à 300 000 suppressions par dépôt et par jour.

Calendrier d'application des règles

Artifact Registry supprime et conserve les artefacts correspondant à vos règles de nettoyage à l'aide d'une tâche d'arrière-plan qui s'exécute régulièrement. Les modifications prennent effet dans un délai d'environ un jour.

Nombre maximal de règles de nettoyage par dépôt

Vous pouvez appliquer jusqu'à 10 stratégies de nettoyage à un dépôt.

Formats compatibles

Vous pouvez définir une règle de nettoyage sur les dépôts standards et distants pour tous les formats de dépôt.

Rôles requis

Pour obtenir les autorisations nécessaires pour appliquer ou supprimer des stratégies de nettoyage, demandez à votre administrateur de vous attribuer le rôle IAM Administrateur Artifact Registry (roles/artifactregistry.admin) sur le projet de dépôt. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Ce rôle prédéfini contient les autorisations requises pour appliquer ou supprimer des règles de nettoyage. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour appliquer ou supprimer des règles de nettoyage:

  • artifactregistry.repositories.update
  • Pour supprimer les artefacts qui répondent aux critères d'une règle de nettoyage : artifactregistry.versions.delete

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Le rôle par défaut de l'agent de service Artifact Registry inclut l'autorisation artifactregistry.versions.delete, qui est nécessaire pour supprimer les images qui répondent aux critères d'une stratégie de nettoyage.

Créer un fichier de règles

Un fichier de stratégie est un fichier JSON qui définit vos règles de suppression et de conservation. Vous pouvez créer un fichier de règle en créant et en modifiant un fichier JSON, puis en utilisant la Google Cloud CLI pour appliquer la règle, ou en utilisant la console Google Cloud. Les règles de suppression spécifient les conditions de suppression des artefacts. Les règles de conservation spécifient les conditions de conservation d'un artefact ou un nombre de versions récentes à conserver. Vous ne pouvez pas utiliser de conditions et les versions les plus récentes dans la même règle de conservation.

Créer une règle de suppression

Une règle de suppression vous permet de spécifier l'âge minimal ou maximal pour la suppression d'artefacts, ainsi que des critères de filtrage supplémentaires pour limiter la règle à des artefacts spécifiques.

Si vous ne souhaitez pas supprimer certains artefacts pour une raison quelconque, créez une stratégie de conservation conditional, ou une stratégie de conservation des versions les plus récentes et une stratégie de suppression. Si un artefact correspond aux critères de la règle de suppression et de la règle de conservation, il est conservé.

Console

Vous pouvez créer une règle de suppression pour un dépôt nouveau ou existant.

Pour ajouter une stratégie de suppression à un dépôt existant:

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Dans la liste des dépôts, sélectionnez le dépôt et cliquez sur Modifier le dépôt.

  3. Dans la section Règles de nettoyage, sélectionnez Simulation pour tester votre nouvelle stratégie avant de vous engager à supprimer les artefacts. Pour en savoir plus sur l'affichage des résultats du test, consultez la section Simulation.

    Une fois que vous êtes certain que votre stratégie fonctionne comme prévu, modifiez à nouveau les paramètres de votre dépôt, puis sélectionnez Supprimer les artefacts pour appliquer votre règle de nettoyage et supprimer les artefacts sélectionnés.

  4. Cliquez sur Ajouter une règle de nettoyage, puis ajoutez les éléments suivants:

    • Nom: attribuez un nom à la règle de nettoyage. Le nom doit être unique dans le groupe de stratégies que vous appliquez à un dépôt.
    • Type de règle: sélectionnez Suppression conditionnelle.
    • État des tags: indique si la règle doit rechercher les artefacts avec tag ou non. Les artefacts sont tagués lors du transfert ou de l'extraction d'une image vers ou depuis un dépôt. Pour en savoir plus sur les tags Docker, consultez la page Concepts des conteneurs.

      • N'importe quel état de tag: ignore l'état du tag et s'applique aux artefacts avec ou sans tag.
      • Avec tag: ne s'applique qu'aux artefacts tagués.
      • Sans tag: ne s'applique qu'aux artefacts sans tag.

      Les formats qui ne prennent pas en charge les balises sont traités comme untagged. Si les tags immuables sont activés dans un dépôt, les artefacts tagués ne peuvent pas être supprimés.

      Pour en savoir plus sur l'état des tags applicable aux règles de nettoyage, consultez la documentation de référence sur TagState.

  5. Vous pouvez définir une règle de suppression de différentes manières:

    • Préfixes de tag: liste de préfixes de tag séparés par une virgule. Par exemple, les préfixes test et staging correspondent à des images avec les tags testenv et staging-1.5. tagState doit être défini sur TAGGED pour utiliser les préfixes de tag.
    • Préfixes de version: - est une liste de préfixes de version d'artefact séparés par une virgule. Par exemple, v1 et v2 correspondent aux versions v1.5, v2.0alpha et v10.2.
    • Préfixes de package: liste de préfixes de nom d'artefact. Vous pouvez saisir plusieurs préfixes en appuyant sur Enter ou , entre les préfixes. Par exemple, red, blue crée deux préfixes, red et blue, et correspond aux noms d'artefact red-team, redis et bluebird.
    • Plus ancienne que: durée minimale qui s'est écoulée depuis la création de la version d'un artefact dans le dépôt, spécifiée sous forme de durée. Par exemple, 30d correspond à 30 jours. Vous pouvez spécifier des durées en secondes, minutes, heures ou jours en ajoutant respectivement s, m, h ou d.
    • Plus récent que: durée maximale spécifiée en tant que durée depuis la création de la version d'un artefact dans le dépôt. Par exemple, 30d correspond à 30 jours.
  6. Pour ajouter d'autres règles de nettoyage, cliquez sur Ajouter une règle de nettoyage.

  7. Cliquez sur Update (Mettre à jour).

    Votre règle de nettoyage est appliquée à votre dépôt. Vous pouvez afficher vos règles de nettoyage dans la section Détails du dépôt en cliquant sur Afficher plus.

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

Une règle de suppression doit inclure un nom, une action et au moins une condition.

name
Dans l'extrait de règle de suppression, DELETE_POLICY_NAME est le nom de la règle. Ce nom doit être unique au sein du groupe de règles que vous appliquez à un dépôt.
action
Pour une règle de suppression, la valeur est {"type": "Delete"}.
condition
Spécifiez une ou plusieurs des conditions suivantes:
  • tagState: TAG_STATUS indique si la règle doit rechercher les artefacts tagués ou non tagués. Les artefacts sont tagués lors du transfert ou de l'extraction d'une image vers ou depuis un dépôt. Les valeurs compatibles sont :

    • tagged: ne s'applique qu'aux artefacts tagués.
    • untagged: ne s'applique qu'aux artefacts sans tag.
    • any: ignore l'état des tags et s'applique aux artefacts avec et sans tag.

    Les formats qui ne prennent pas en charge les balises sont traités comme untagged. Si les tags immuables sont activés dans un dépôt, les artefacts tagués ne peuvent pas être supprimés.

    Pour en savoir plus sur les balises Docker, consultez la page Concepts liés aux conteneurs.

  • tagPrefixes: TAG_PREFIXES est une liste de préfixes de tags séparés par une virgule. Par exemple, "test", "staging" peut faire correspondre les images avec les balises "testenv" et "staging-1.5". tagState doit être défini sur TAGGED pour utiliser les préfixes de tag.

  • versionNamePrefixes: VERSION_PREFIXES est une liste de préfixes de version d'artefact séparés par une virgule. Par exemple, "v1", "v2" correspond aux versions "v1.5", "v2.0alpha" et "v10.2".

  • packageNamePrefixes: PACKAGE_PREFIXES est une liste de préfixes de nom d'artefact séparés par une virgule. Par exemple, "red", "blue" correspond aux noms d'artefact "red-team", "redis" et "bluebird".

  • olderThan: OLDER_THAN_DURATION correspond au temps minimal écoulé depuis la création de la version d'un artefact dans le dépôt, spécifié sous forme de durée. Par exemple, 30d correspond à 30 jours. Vous pouvez spécifier des durées en secondes, minutes, heures ou jours en ajoutant respectivement s, m, h ou d.

  • newerThan: NEWER_THAN_DURATION est le temps maximal écoulé depuis la création de la version d'un artefact dans le dépôt, exprimé en tant que durée. Par exemple, 30d correspond à 30 jours.

Créer une règle de conservation conditionnelle

Une stratégie de conservation conditionnelle spécifie des critères de conservation des artefacts. Les règles de suppression permettent de conserver les artefacts qui seraient supprimés conformément aux spécifications de votre règle de suppression, mais que vous souhaitez conserver. Lorsqu'un artefact correspond aux critères d'une règle de suppression et d'une règle de conservation, il est conservé.

Console

Vous pouvez créer une règle de conservation pour un dépôt nouveau ou existant.

Pour ajouter une stratégie de conservation à un dépôt existant:

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Dans la liste des dépôts, sélectionnez le dépôt et cliquez sur Modifier le dépôt.

  3. Dans la section Règles de nettoyage, sélectionnez Simulation pour tester votre nouvelle stratégie avant de vous engager à supprimer les artefacts. Vous devez définir au moins une règle de suppression pour afficher les résultats de votre règle de conservation. Pour en savoir plus sur l'affichage des résultats du test, consultez la section Simulation.

    Une fois que vous êtes certain que vos règles fonctionnent comme prévu, modifiez à nouveau les paramètres de votre dépôt, puis sélectionnez Supprimer les artefacts pour appliquer vos règles de nettoyage et supprimer les artefacts sélectionnés.

  4. Cliquez sur Ajouter une règle de nettoyage, puis ajoutez les éléments suivants:

    • Nom: attribuez un nom à la règle de nettoyage. Le nom doit être unique dans le groupe de stratégies que vous appliquez à un dépôt.
    • Type de règle: sélectionnez Enregistrement conditionnel.
    • État des tags: indique si la règle doit rechercher les artefacts avec tag ou non. Les artefacts sont tagués lors du transfert ou de l'extraction d'une image vers ou depuis un dépôt. Pour en savoir plus sur les tags Docker, consultez la page Concepts des conteneurs.

      • N'importe quel état de tag: ignore l'état du tag et s'applique aux artefacts avec ou sans tag.
      • Avec tag: ne s'applique qu'aux artefacts tagués.
      • Sans tag: ne s'applique qu'aux artefacts sans tag.

      Les formats qui ne prennent pas en charge les balises sont traités comme untagged. Si les tags immuables sont activés dans un dépôt, les artefacts tagués ne peuvent pas être supprimés. Pour en savoir plus sur l'état des tags applicable aux règles de nettoyage, consultez la documentation de référence sur TagState.

  5. Voici des méthodes facultatives permettant de définir une règle de conservation:

    • Préfixes de tag: liste de préfixes de tag séparés par une virgule. Par exemple, les préfixes test et staging correspondent à des images avec les tags testenv et staging-1.5. tagState doit être défini sur TAGGED pour utiliser les préfixes de tag.
    • Préfixes de version: - est une liste de préfixes de version d'artefact séparés par une virgule. Par exemple, v1 et v2 correspondent aux versions v1.5, v2.0alpha et v10.2.
    • Préfixes de package: liste de préfixes de nom d'artefact séparés par une virgule. Par exemple, red, blue correspond aux noms d'artefact red-team, redis et bluebird.
    • Plus ancienne que: durée minimale qui s'est écoulée depuis la création de la version d'un artefact dans le dépôt, spécifiée sous forme de durée. Par exemple, 30d correspond à 30 jours. Vous pouvez spécifier des durées en secondes, minutes, heures ou jours en ajoutant respectivement s, m, h ou d.
    • Plus récent que: durée maximale spécifiée en tant que durée depuis la création de la version d'un artefact dans le dépôt. Par exemple, 30d correspond à 30 jours.
  6. Pour ajouter d'autres règles de nettoyage, cliquez sur Ajouter une règle de nettoyage.

  7. Cliquez sur Update (Mettre à jour).

    Votre règle de nettoyage est appliquée à votre dépôt.

JSON

Ce format est semblable à une règle de suppression. Pour une règle de conservation, la valeur de action est {"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"
  }
}

Remplacez les éléments suivants :

  • KEEP_POLICY_NAME par la règle de nettoyage. Le nom doit être unique dans le groupe de stratégies que vous appliquez à un dépôt.
  • TAG_STATUS par l'état du tag, qui indique si la règle doit rechercher les artefacts avec tag ou non. Les artefacts sont tagués lors du transfert ou de l'extraction d'une image vers ou depuis un dépôt. Pour en savoir plus sur les balises Docker, consultez la page Concepts liés aux conteneurs.

    Vous disposez des options suivantes :

    • tagged: ne s'applique qu'aux artefacts tagués.
    • untagged: ne s'applique qu'aux artefacts sans tag.
    • any: s'applique à toutes les versions.

    Les formats qui ne prennent pas en charge les balises sont traités comme untagged. Si les tags immuables sont activés dans un dépôt, les artefacts tagués ne peuvent pas être supprimés. Pour en savoir plus sur l'état des tags applicable aux règles de nettoyage, consultez la documentation de référence sur TagState.

  • TAG_PREFIXES par une liste de préfixes de tags séparés par une virgule. Par exemple, les préfixes test et staging correspondent à des images avec les tags testenv et staging-1.5. tagState doit être défini sur TAGGED pour utiliser les préfixes de tag.

  • VERSION_PREFIXES par une liste de préfixes de version d'artefact séparés par une virgule. Par exemple, v1, v2 correspond aux versions v1.5, v2.0alpha et v10.2.

  • PACKAGE_PREFIXES par une liste de préfixes de nom d'artefact séparés par une virgule. Par exemple, red, blue correspond aux noms d'artefact red-team, redis et bluebird.

  • OLDER_THAN_DURATION par le temps minimal écoulé depuis la création de la version d'un artefact dans le dépôt, spécifié sous forme de durée. Par exemple, 30d correspond à 30 jours. Vous pouvez spécifier des durées en secondes, minutes, heures ou jours en ajoutant respectivement s, m, h ou d.
  • NEWER_THAN_DURATION par le temps maximal écoulé depuis la création de la version d'un artefact dans le dépôt, spécifié sous forme de durée. Par exemple, 30d correspond à 30 jours.

Créer une règle de conservation pour les versions les plus récentes

Vous pouvez créer une règle de conservation pour conserver un nombre spécifique de versions. Vous ne pouvez pas utiliser les critères Conservation conditionnelle et Conserver les versions les plus récentes dans la même règle de conservation.

Les règles de conservation fonctionnent avec les règles de suppression pour conserver les artefacts qui seraient supprimés conformément aux spécifications de votre règle de suppression, mais que vous souhaitez conserver. Lorsqu'un artefact correspond aux critères d'une règle de suppression et d'une règle de conservation, il est conservé.

Console

Vous pouvez créer une stratégie de conservation des versions les plus récentes pour un dépôt nouveau ou existant.

Pour ajouter une stratégie de conservation des versions les plus récentes à un dépôt existant:

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Dans la liste des dépôts, sélectionnez le dépôt et cliquez sur Modifier le dépôt.

  3. Dans la section Règles de nettoyage, sélectionnez Simulation pour tester votre nouvelle stratégie avant de vous engager à supprimer les artefacts. Vous devez définir au moins une règle de suppression pour afficher les résultats de votre règle de conservation. Pour en savoir plus sur l'affichage des résultats du test, consultez la section Simulation.

    Une fois que vous êtes certain que vos règles fonctionnent comme prévu, modifiez à nouveau les paramètres de votre dépôt, puis sélectionnez Supprimer les artefacts pour appliquer vos règles de nettoyage et supprimer les artefacts sélectionnés.

  4. Cliquez sur Ajouter une règle de nettoyage, puis ajoutez les éléments suivants:

    • Nom: attribuez un nom à la règle de nettoyage. Le nom doit être unique dans le groupe de stratégies que vous appliquez à un dépôt.
    • Type de règles: sélectionnez Conserver les versions les plus récentes.
  5. Dans le champ Nombre de conservations, saisissez le nombre de versions d'un artefact à conserver dans votre dépôt.

  6. Facultatif: sélectionnez Préfixes de package pour spécifier les préfixes de package auxquels appliquer la règle de conservation. Par exemple, red, blue correspond aux noms d'artefact red-team, redis et bluebird.

  7. Pour ajouter d'autres règles de nettoyage, cliquez sur Ajouter une règle de nettoyage.

  8. Cliquez sur Update (Mettre à jour).

    Votre règle de nettoyage est appliquée à votre dépôt. Vous pouvez afficher vos règles de nettoyage dans la section Détails du dépôt en cliquant sur Afficher plus.

JSON

Ce format est semblable à une règle de suppression. Pour une règle de conservation, la valeur de action est {"type": "Keep"}.

Une règle de conservation permettant de conserver un nombre spécifique de versions comporte une section mostRecentVersions au lieu d'une section condition.

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

Remplacez les éléments suivants :

  • KEEP_POLICY_NAME par le nom de votre règle de conservation. Le nom doit être unique dans le groupe de stratégies que vous appliquez à un dépôt.
  • PACKAGE_PREFIXES par les préfixes de package facultatifs auxquels appliquer la règle de conservation. Par exemple, red, blue correspond aux noms d'artefact red-team, redis et bluebird.
  • MINIMUM_NUMBER par le nombre de versions d'un artefact à conserver dans votre dépôt.

Pour appliquer la règle de conservation à tous les packages de votre dépôt, omettez la condition packageNamePrefixes. Le nombre spécifié de versions récentes de chaque package de votre dépôt est conservé.

Exemple de fichier de stratégie

L'exemple de fichier de stratégie suivant comporte une règle de suppression et deux règles de conservation.

  • La règle delete-prerelease supprime les versions d'artefact 30 jours après l'importation si l'artefact commence par la chaîne alpha ou v0.
  • La règle keep-tagged-release conserve les artefacts comportant le préfixe release dont le nom de fichier commence par webapp ou mobile.
  • La règle keep-minimum-versions conserve les cinq versions les plus récentes des artefacts dont le nom de fichier commence par webapp, mobile ou 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
    }
  }
]

Tester vos règles à l'aide d'une simulation

Pour tester vos règles de nettoyage, vous pouvez les configurer en mode dry run dans la console, ou exécuter la commande gcloud artifacts set-cleanup-policies avec l'option --dry-run.

Pour analyser l'effet de vos stratégies de nettoyage, vous pouvez afficher les journaux d'audit des accès aux données d'Artifact Registry. Pour recevoir des journaux d'audit pour l'accès aux données concernant les règles de nettoyage, vous devez activer explicitement le type d'écriture aux données des journaux d'audit pour l'accès aux données pour le service Artifact Registry. Pour activer les journaux d'audit des accès aux données, consultez la section Activer les journaux d'audit.

Console

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Dans la liste des dépôts, sélectionnez le dépôt et cliquez sur Modifier le dépôt.

  3. Dans la section Règles de nettoyage, sélectionnez Simulation.

  4. Cliquez sur Ajouter une règle de nettoyage, puis configurez les options de vos règles de suppression conditionnelle, conservation conditionnelle ou conserver les versions les plus récentes.

  5. Cliquez sur Update (Mettre à jour).

Lorsqu'une règle de suppression entraîne une action BatchDeleteVersions, le paramètre validateOnly est évalué sur "true".

Pour interroger les journaux d'audit concernant les simulations de vos règles de nettoyage, exécutez la commande suivante:

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

Le résultat se présente comme suit :

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

Pour effectuer une simulation avec vos règles de nettoyage, exécutez la commande suivante:

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

Remplacez les éléments suivants :

  • REPOSITORY par le nom du dépôt.
  • PROJECT_ID par l'ID de votre projet Google Cloud.
  • LOCATION par l'emplacementrégional ou multirégional du dépôt du dépôt.

Lorsqu'une règle de suppression entraîne une action BatchDeleteVersions, le paramètre validateOnly est évalué sur "true".

Pour interroger les journaux d'audit concernant les simulations de vos règles de nettoyage, exécutez la commande suivante:

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

Le résultat se présente comme suit :

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'

Appliquer des règles à un dépôt

Pour utiliser vos règles de nettoyage définies dans un fichier JSON local, appliquez-les aux dépôts dans lesquels vous souhaitez qu'Artifact Registry gère la suppression automatique des versions d'artefact à l'aide de la gcloud CLI.

Pour appliquer des règles de nettoyage définies sur Simulation dans la console, définissez-les sur Supprimer les artefacts.

Vous ne pouvez appliquer des règles de nettoyage qu'aux dépôts standards. Vous ne pouvez pas appliquer de règles de nettoyage aux éléments suivants:

  • Un projet Google Cloud.

Console

Pour appliquer des règles de nettoyage:

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Dans la liste des dépôts, sélectionnez le dépôt et cliquez sur Modifier le dépôt.

  3. Dans la section Règles de nettoyage, sélectionnez Supprimer les artefacts.

    Artifact Registry supprime et conserve les artefacts qui correspondent à vos règles à l'aide d'un job d'arrière-plan qui s'exécute régulièrement. Les modifications devraient prendre effet dans un délai d'environ un jour.

gcloud

Pour appliquer des règles de nettoyage, exécutez la commande suivante dans le répertoire contenant votre fichier de stratégie de nettoyage.

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

Remplacez les éléments suivants :

  • REPOSITORY par le nom du dépôt.
  • PROJECT_ID par l'ID de votre projet Google Cloud.
  • LOCATION par l'emplacementrégional ou multirégional du dépôt du dépôt.
  • --no-dry-run désactive la fonctionnalité de dry run pour le dépôt.
  • POLICY_FILE est le nom du fichier contenant la règle de nettoyage.

Par exemple, la commande suivante applique les règles de policy.json au dépôt my-repo de la région us-west1 dans le projet my-project.

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

Artifact Registry supprime et conserve les artefacts qui correspondent à vos règles à l'aide d'une tâche d'arrière-plan qui s'exécute régulièrement. Les modifications devraient prendre effet dans un délai d'environ un jour.

Mettre à jour une stratégie

Console

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Dans la liste des dépôts, sélectionnez le dépôt et cliquez sur Modifier le dépôt.

  3. Dans la section Règles de nettoyage, cliquez sur le nom de la règle que vous souhaitez définir à modifier.

  4. Modifiez la règle de nettoyage, puis cliquez sur Mettre à jour.

    Votre règle de nettoyage est appliquée à votre dépôt.

gcloud CLI

Pour mettre à jour des règles existantes, modifiez les paramètres de votre fichier de stratégie, puis exécutez la commande suivante pour appliquer les règles à nouveau.

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

Remplacez les éléments suivants :

  • REPOSITORY par le nom du dépôt.
  • PROJECT_ID par l'ID de votre projet Google Cloud.
  • LOCATION par l'emplacementrégional ou multirégional du dépôt du dépôt.
  • --no-dry-run désactive la fonctionnalité de dry run pour le dépôt.
  • POLICY_FILE est le nom du fichier contenant la règle de nettoyage.

Répertorier les règles de nettoyage du dépôt

Vous pouvez afficher les stratégies de nettoyage associées à un dépôt.

Console

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Dans la liste des dépôts, sélectionnez le dépôt que vous souhaitez afficher.

  3. Dans la section Détails du dépôt, cliquez sur Afficher plus.

    Les noms des règles de nettoyage s'affichent.

  4. Pour afficher ou modifier les détails des règles de nettoyage du dépôt, cliquez sur Modifier le dépôt.

    Les détails de vos règles de nettoyage existantes sont répertoriés dans la section Règles de nettoyage.

gcloud CLI

Exécutez la commande ci-dessous.

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

Remplacez les éléments suivants :

  • REPOSITORY par le nom du dépôt.
  • PROJECT_ID par l'ID de votre projet Google Cloud.
  • LOCATION par l'emplacementrégional ou multirégional du dépôt du dépôt.

Supprimer une règle d'un dépôt

Supprimez une règle de nettoyage d'un dépôt lorsque vous ne souhaitez plus qu'Artifact Registry supprime automatiquement les versions d'artefact.

Console

  1. Ouvrez la page Dépôts de la console Google Cloud.

    Ouvrir la page "Dépôts"

  2. Dans la liste des dépôts, sélectionnez le dépôt et cliquez sur Modifier le dépôt.

  3. Dans la section Règles de nettoyage, pointez sur le nom de la règle que vous souhaitez supprimer.

  4. Cliquez sur l'icône Supprimer.

  5. Cliquez sur Update (Mettre à jour).

    La règle de nettoyage est supprimée.

gcloud CLI

Exécutez la commande ci-dessous.

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

Remplacez les éléments suivants :

  • REPOSITORY est le nom du dépôt.
  • PROJECT_ID est l'ID de votre projet Google Cloud.
  • LOCATION est l'emplacementrégional ou multirégional du dépôt du dépôt.
  • POLICY_NAMES est une liste de noms de règles à supprimer, séparés par une virgule.

Par exemple, la commande suivante supprime une règle nommée delete-test du dépôt my-repo dans la région us-west1 dans le projet my-project:

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

Entrées du journal d'audit pour les règles de nettoyage

Pour afficher les entrées de journal de la règle de nettoyage dans Cloud Logging, vous devez enable la journalisation DATA_WRITE.

Lorsque vous définissez une règle de nettoyage sur un dépôt, l'opération est consignée en tant que mise à jour du dépôt (opération UpdateRepository).

Lorsque Artifact Registry supprime une version d'un artefact, il consigne l'événement dans les journaux d'accès aux données Cloud Logging. Les entrées de journal indiquent que le compte de service Artifact Registry a effectué la suppression. L'ID du compte de service Artifact Registry est au format service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com.

Autres outils

Pour les images de conteneurs, vous pouvez également gérer le cycle de vie des images à l'aide des outils suivants:

  • gcrane : outil pour les registres de conteneurs permettant de copier des images entre des dépôts.
  • gcr-cleaner: outil permettant de supprimer des images de conteneurs en fonction des critères spécifiés.

Les outils gcrane et gcr-cleaner ne sont pas des produits Google officiels.