Bereinigungsrichtlinien konfigurieren

In einer Artifact Registry-Bereinigungsrichtlinie sind Kriterien für das automatische Löschen nicht mehr benötigter Artefaktversionen definiert oder für die Beibehaltung von Artefakten, die Sie auf unbestimmte Zeit speichern möchten.

Bereinigungsrichtlinien sind nützlich, wenn Sie viele Versionen Ihrer Artefakte speichern, aber nur bestimmte Versionen beibehalten müssen, die Sie für die Produktion veröffentlichen. Sie können Löschrichtlinien mit Kriterien zum Löschen von Artefakten und Richtlinien zum Beibehalten mit Kriterien zum Beibehalten von Artefakten definieren.

Wenn eine Artefaktversion den Kriterien in einer Löschrichtlinie und einer Keep-Richtlinie entspricht, wendet Artifact Registry die Keep-Richtlinie an.

Durch Löschrichtlinien ausgelöste Löschungen werden auf Ihr Artifact Registry Kontingent für Löschanfragen pro Projekt angerechnet. Sie sind auf 300.000 Löschungen pro Repository und Tag beschränkt.

Zeitplan für die Anwendung der Richtlinie

Artifact Registry löscht und speichert Artefakte, die Ihren Bereinigungsrichtlinien entsprechen, mithilfe eines Hintergrundjobs, der regelmäßig ausgeführt wird. Änderungen werden innerhalb von etwa einem Tag wirksam.

Maximale Anzahl von Bereinigungsrichtlinien pro Repository

Sie können maximal 10 Bereinigungsrichtlinien auf ein Repository anwenden.

Unterstützte Formate

Sie können eine Bereinigungsrichtlinie für Standard- und Remote-Repositories für alle Repository-Formate festlegen.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Artifact Registry-Administrator (roles/artifactregistry.admin) für das Repository-Projekt zu gewähren, um die erforderlichen Berechtigungen zum Anwenden oder Entfernen von Bereinigungsrichtlinien zu erhalten. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Anwenden oder Entfernen von Bereinigungsrichtlinien erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um Bereinigungsrichtlinien anzuwenden oder zu entfernen:

  • artifactregistry.repositories.update
  • So löschen Sie Artefakte, die die Kriterien in einer Bereinigungsrichtlinie erfüllen: artifactregistry.versions.delete

Möglicherweise können Sie diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Die Standardrolle für den Artifact Registry-Dienst-Agent umfasst die Berechtigung artifactregistry.versions.delete, die zum Löschen von Images erforderlich ist, die die Kriterien einer Bereinigungsrichtlinie erfüllen.

Richtliniendatei erstellen

Eine Richtliniendatei ist eine JSON-Datei, in der Ihre Richtlinien zum Löschen und Beibehalten definiert sind. Sie können eine Richtliniendatei erstellen, indem Sie eine JSON-Datei erstellen und bearbeiten und dann die Google Cloud CLI verwenden, um die Richtlinie anzuwenden, oder indem Sie die Google Cloud Console verwenden. Löschrichtlinien geben Bedingungen zum Löschen von Artefakten an. Mit Beibehaltungsrichtlinien werden Bedingungen zum Aufbewahren eines Artefakts oder einer Anzahl aktueller Versionen angegeben, die beibehalten werden sollen. Sie können Bedingungen und die neuesten Versionen nicht in derselben Keep-Richtlinie verwenden.

Löschrichtlinie erstellen

Mit einer Löschrichtlinie können Sie das Mindest- oder Höchstalter für das Löschen von Artefakten sowie zusätzliche Filterkriterien angeben, um die Richtlinie auf bestimmte Artefakte zu beschränken.

Wenn bestimmte Artefakte aus irgendeinem Grund nicht gelöscht werden sollen, erstellen Sie eine conditional Keep-Richtlinie oder eine Hold-Richtlinie für die aktuellsten Versionen sowie eine Löschrichtlinie. Wenn ein Artefakt den Kriterien der Lösch- und der Keep-Richtlinie entspricht, wird das Artefakt beibehalten.

Console

Sie können eine Löschrichtlinie für ein neues oder ein vorhandenes Repository erstellen.

So fügen Sie einem vorhandenen Repository eine Löschrichtlinie hinzu:

  1. Öffnen Sie in der Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie das Repository in der Liste der Repositories aus und klicken Sie auf Repository bearbeiten.

  3. Wählen Sie im Bereich Bereinigungsrichtlinien die Option Probelauf aus, um die neue Richtlinie zu testen, bevor Sie sich zum Löschen von Artefakten entscheiden. Weitere Informationen zum Anzeigen der Testergebnisse finden Sie unter Probelauf.

    Wenn Sie sicher sind, dass Ihre Richtlinie wie beabsichtigt funktioniert, bearbeiten Sie die Repository-Einstellungen noch einmal und wählen Sie Artefakte löschen aus, um die Bereinigungsrichtlinie anzuwenden und die ausgewählten Artefakte zu löschen.

  4. Klicken Sie auf Bereinigungsrichtlinie hinzufügen und fügen Sie Folgendes hinzu:

    • Name: Geben Sie der Bereinigungsrichtlinie einen Namen. Der Name muss innerhalb der Gruppe von Richtlinien, die Sie auf ein Repository anwenden, eindeutig sein.
    • Richtlinientyp: Wählen Sie Bedingtes Löschen aus.
    • Tag-Status: Gibt an, ob die Richtlinie auf getaggte oder nicht getaggte Artefakte prüfen soll. Artefakte werden getaggt, wenn ein Image in ein Repository oder aus einem Repository übertragen wird. Weitere Informationen zu Docker-Tags finden Sie unter Containerkonzepte.

      • Beliebiger Tag-Status: Der Tag-Status wird ignoriert und gilt sowohl für getaggte als auch für nicht getaggte Artefakte.
      • Getaggt: Gilt nur für getaggte Artefakte.
      • Ungetaggt: Gilt nur für Artefakte ohne Tags.

      Formate, die keine Tags unterstützen, werden als untagged behandelt. Wenn für ein Repository unveränderliche Tags aktiviert sind, können getaggte Artefakte nicht gelöscht werden.

      Weitere Informationen zum Tag-Status bei Anwendung der Bereinigungsrichtlinien finden Sie in der TagState-Referenz.

  5. Sie können die Löschrichtlinie folgendermaßen definieren:

    • Tag-Präfixe: ist eine durch Kommas getrennte Liste von Tag-Präfixen. So würden die Präfixe test und staging z. B. Bilder mit den Tags testenv und staging-1.5 entsprechen. tagState muss auf TAGGED gesetzt sein, damit Tag-Präfixe verwendet werden können.
    • Versionspräfixe: – ist eine durch Kommas getrennte Liste von Präfixen für Artefaktversion. Beispielsweise würde v1, v2 den Versionen v1.5, v2.0alpha und v10.2 entsprechen.
    • Paketpräfixe: Eine Liste von Artefaktnamenspräfixen. Sie können mehrere Präfixe eingeben. Drücken Sie dazu Enter oder , zwischen den Präfixen. Zum Beispiel würde red, blue die beiden Präfixe red und blue erstellen und den Artefaktnamen red-team, redis und bluebird entsprechen.
    • Älter als: ist die Mindestzeit, die seit der Erstellung der Version eines Artefakts im Repository vergangen ist, angegeben als Dauer. Beispiel: 30d entspricht 30 Tagen. Sie können eine Dauer in Sekunden, Minuten, Stunden oder Tagen angeben, indem Sie s, m, h bzw. d anhängen.
    • Neuer als: ist die maximale Zeit, die seit der Erstellung der Version eines Artefakts im Repository vergangen ist, angegeben als Dauer. Beispiel: 30d entspricht 30 Tagen.
  6. Sie können weitere Bereinigungsrichtlinien hinzufügen, indem Sie auf Bereinigungsrichtlinie hinzufügen klicken.

  7. Klicken Sie auf Aktualisieren.

    Ihre Bereinigungsrichtlinie wird auf das Repository angewendet. Sie können die Bereinigungsrichtlinien im Abschnitt Repository-Details ansehen. Klicken Sie dazu auf Mehr anzeigen.

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

Eine Löschrichtlinie muss einen Namen, eine Aktion und mindestens eine Bedingung enthalten.

name
Im Snippet für die Löschrichtlinie ist DELETE_POLICY_NAME der Name der Richtlinie. Der Name muss innerhalb der Richtliniengruppe, die Sie auf ein Repository anwenden, eindeutig sein.
action
Für eine Löschrichtlinie ist der Wert {"type": "Delete"}.
condition
Geben Sie eine oder mehrere der folgenden Bedingungen an:
  • tagState: TAG_STATUS gibt an, ob die Richtlinie auf getaggte oder nicht getaggte Artefakte prüfen soll. Artefakte werden getaggt, wenn ein Image in ein Repository oder aus einem Repository übertragen wird. Unterstützte Werte:

    • tagged: gilt nur für getaggte Artefakte.
    • untagged: gilt nur für Artefakte ohne Tags.
    • any: ignoriert den Tag-Status und gilt sowohl für getaggte als auch für nicht getaggte Artefakte.

    Formate, die keine Tags unterstützen, werden als untagged behandelt. Wenn für ein Repository unveränderliche Tags aktiviert sind, können getaggte Artefakte nicht gelöscht werden.

    Weitere Informationen zu Docker-Tags finden Sie unter Containerkonzepte.

  • tagPrefixes: TAG_PREFIXES ist eine durch Kommas getrennte Liste von Tag-Präfixen. Zum Beispiel würde "test", "staging" nach Bildern mit den Tags "testenv" und "staging-1.5" suchen. tagState muss auf TAGGED gesetzt sein, damit Tag-Präfixe verwendet werden können.

  • versionNamePrefixes: VERSION_PREFIXES ist eine durch Kommas getrennte Liste von Artefaktversionspräfixen. Beispielsweise würde "v1", "v2" den Versionen "v1.5", "v2.0alpha" und "v10.2" entsprechen.

  • packageNamePrefixes: PACKAGE_PREFIXES ist eine durch Kommas getrennte Liste von Artefaktnamenspräfixen. Zum Beispiel würde "red", "blue" mit den Artefaktnamen "red-team", "redis" und "bluebird" übereinstimmen.

  • olderThan: OLDER_THAN_DURATION ist die minimale Zeit, seit die Version eines Artefakts im Repository erstellt wurde, und wird als Dauer angegeben. Beispiel: 30d entspricht 30 Tagen. Sie können eine Dauer in Sekunden, Minuten, Stunden oder Tagen angeben, indem Sie s, m, h bzw. d anhängen.

  • newerThan: NEWER_THAN_DURATION ist die maximale Zeit, die seit dem Erstellen der Version eines Artefakts im Repository vergangen ist, und wird als Dauer angegeben. Beispiel: 30d entspricht 30 Tagen.

Bedingte Keep-Richtlinie erstellen

Eine bedingte Keep-Richtlinie legt Kriterien zum Beibehalten von Artefakten fest. Beibehaltung von Richtlinien funktionieren zusammen mit Löschrichtlinien, um Artefakte aufzubewahren, die gemäß den Spezifikationen Ihrer Löschrichtlinie gelöscht werden, aber beibehalten werden sollen. Wenn ein Artefakt den Kriterien für eine Lösch- und eine Keep-Richtlinie entspricht, wird das Artefakt beibehalten.

Console

Sie können eine Keep-Richtlinie für ein neues oder ein vorhandenes Repository erstellen.

So fügen Sie einem vorhandenen Repository eine Keep-Richtlinie hinzu:

  1. Öffnen Sie in der Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie das Repository in der Liste der Repositories aus und klicken Sie auf Repository bearbeiten.

  3. Wählen Sie im Bereich Bereinigungsrichtlinien die Option Probelauf aus, um die neue Richtlinie zu testen, bevor Sie sich zum Löschen von Artefakten entscheiden. Sie müssen mindestens eine Löschrichtlinie festlegen, um die Ergebnisse der Keep-Richtlinie anzusehen. Weitere Informationen zum Anzeigen der Testergebnisse finden Sie unter Probelauf.

    Wenn Sie sicher sind, dass Ihre Richtlinien wie beabsichtigt funktionieren, bearbeiten Sie die Repository-Einstellungen noch einmal und wählen Sie Artefakte löschen aus, um die Bereinigungsrichtlinien anzuwenden und die ausgewählten Artefakte zu löschen.

  4. Klicken Sie auf Bereinigungsrichtlinie hinzufügen und fügen Sie Folgendes hinzu:

    • Name: Geben Sie der Bereinigungsrichtlinie einen Namen. Der Name muss innerhalb der Gruppe von Richtlinien, die Sie auf ein Repository anwenden, eindeutig sein.
    • Richtlinientyp: Wählen Sie Bedingte Beibehaltung aus.
    • Tag-Status: Gibt an, ob die Richtlinie auf getaggte oder nicht getaggte Artefakte prüfen soll. Artefakte werden getaggt, wenn ein Image in ein Repository oder aus einem Repository übertragen wird. Weitere Informationen zu Docker-Tags finden Sie unter Containerkonzepte.

      • Beliebiger Tag-Status: Der Tag-Status wird ignoriert und gilt sowohl für getaggte als auch für nicht getaggte Artefakte.
      • Getaggt: Gilt nur für getaggte Artefakte.
      • Ungetaggt: Gilt nur für Artefakte ohne Tags.

      Formate, die keine Tags unterstützen, werden als untagged behandelt. Wenn für ein Repository unveränderliche Tags aktiviert sind, können getaggte Artefakte nicht gelöscht werden. Weitere Informationen zum Tag-Status bei Anwendung der Bereinigungsrichtlinien finden Sie in der TagState-Referenz.

  5. Sie können die Notizen-Richtlinie folgendermaßen definieren:

    • Tag-Präfixe: ist eine durch Kommas getrennte Liste von Tag-Präfixen. So würden die Präfixe test und staging z. B. Bilder mit den Tags testenv und staging-1.5 entsprechen. tagState muss auf TAGGED gesetzt sein, damit Tag-Präfixe verwendet werden können.
    • Versionspräfixe: – ist eine durch Kommas getrennte Liste von Präfixen für Artefaktversion. Beispielsweise würde v1, v2 den Versionen v1.5, v2.0alpha und v10.2 entsprechen.
    • Paketpräfixe: ist eine durch Kommas getrennte Liste von Artefaktnamenspräfixen. Zum Beispiel würde red, blue mit den Artefaktnamen red-team, redis und bluebird übereinstimmen.
    • Älter als: ist die Mindestzeit, die seit der Erstellung der Version eines Artefakts im Repository vergangen ist, angegeben als Dauer. Beispiel: 30d entspricht 30 Tagen. Sie können eine Dauer in Sekunden, Minuten, Stunden oder Tagen angeben, indem Sie s, m, h bzw. d anhängen.
    • Neuer als: ist die maximale Zeit, die seit der Erstellung der Version eines Artefakts im Repository vergangen ist, angegeben als Dauer. Beispiel: 30d entspricht 30 Tagen.
  6. Sie können weitere Bereinigungsrichtlinien hinzufügen, indem Sie auf Bereinigungsrichtlinie hinzufügen klicken.

  7. Klicken Sie auf Aktualisieren.

    Ihre Bereinigungsrichtlinie wird auf das Repository angewendet.

JSON

Das Format ähnelt einer Löschrichtlinie. Bei einer Keep-Richtlinie ist der Wert für 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"
  }
}

Ersetzen Sie Folgendes:

  • KEEP_POLICY_NAME durch die Bereinigungsrichtlinie einen Namen. Der Name muss innerhalb der Gruppe von Richtlinien, die Sie auf ein Repository anwenden, eindeutig sein.
  • TAG_STATUS durch den Tag-Status, der angibt, ob die Richtlinie nach getaggten oder nicht getaggten Artefakten suchen soll. Artefakte werden getaggt, wenn ein Image per Push oder Pull in ein Repository übertragen bzw. daraus abgerufen wird. Weitere Informationen zu Docker-Tags finden Sie unter Containerkonzepte.

    Folgende Optionen sind verfügbar:

    • tagged: gilt nur für getaggte Artefakte.
    • untagged: gilt nur für Artefakte ohne Tags.
    • any: gilt für alle Versionen

    Formate, die keine Tags unterstützen, werden als untagged behandelt. Wenn für ein Repository unveränderliche Tags aktiviert sind, können getaggte Artefakte nicht gelöscht werden. Weitere Informationen zum Tag-Status bei Anwendung der Bereinigungsrichtlinien finden Sie in der TagState-Referenz.

  • TAG_PREFIXES durch eine durch Kommas getrennte Liste von Tag-Präfixen. So würden die Präfixe test und staging z. B. Bilder mit den Tags testenv und staging-1.5 entsprechen. tagState muss auf TAGGED gesetzt sein, damit Tag-Präfixe verwendet werden können.

  • VERSION_PREFIXES durch eine durch Kommas getrennte Liste von Präfixen der Artefaktversion. v1, v2 würde beispielsweise mit den Versionen v1.5, v2.0alpha und v10.2 übereinstimmen.

  • PACKAGE_PREFIXES durch eine durch Kommas getrennte Liste von Artefaktnamenspräfixen. Zum Beispiel würde red, blue mit den Artefaktnamen red-team, redis und bluebird übereinstimmen.

  • OLDER_THAN_DURATION ist die Mindestzeit, die seit der Erstellung der Version eines Artefakts im Repository vergangen ist. Sie wird als Dauer angegeben. Beispiel: 30d entspricht 30 Tagen. Sie können die Dauer von Sekunden, Minuten, Stunden oder Tagen angeben, indem Sie s, m, h bzw. d anhängen.
  • NEWER_THAN_DURATION durch die maximale Zeit, die seit der Erstellung der Version eines Artefakts im Repository vergangen ist, angegeben als Dauer. Beispiel: 30d entspricht 30 Tagen.

Keep-Richtlinie für die neuesten Versionen erstellen

Sie können eine Keep-Richtlinie erstellen, um eine bestimmte Anzahl von Versionen beizubehalten. Die Kriterien Bedingtes Beibehalten und Neueste Versionen beibehalten können nicht in derselben Keep-Richtlinie verwendet werden.

Richtlinien arbeiten mit Löschrichtlinien zusammen, um Artefakte aufzubewahren, die gemäß den Spezifikationen Ihrer Löschrichtlinie gelöscht werden würden, aber beibehalten werden sollen. Wenn ein Artefakt die Kriterien für eine Lösch- und eine Keep-Richtlinie erfüllt, wird das Artefakt beibehalten.

Console

Sie können für ein neues oder vorhandenes Repository eine Richtlinie zum Beibehalten der aktuellsten Versionen erstellen.

So fügen Sie einem vorhandenen Repository eine Richtlinie zum Beibehalten der neuesten Versionen hinzu:

  1. Öffnen Sie in der Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie das Repository in der Liste der Repositories aus und klicken Sie auf Repository bearbeiten.

  3. Wählen Sie im Bereich Bereinigungsrichtlinien die Option Probelauf aus, um die neue Richtlinie zu testen, bevor Sie sich zum Löschen von Artefakten entscheiden. Sie müssen mindestens eine Löschrichtlinie festlegen, um die Ergebnisse der Keep-Richtlinie anzusehen. Weitere Informationen zum Anzeigen der Testergebnisse finden Sie unter Probelauf.

    Wenn Sie sicher sind, dass Ihre Richtlinien wie beabsichtigt funktionieren, bearbeiten Sie die Repository-Einstellungen noch einmal und wählen Sie Artefakte löschen aus, um die Bereinigungsrichtlinien anzuwenden und die ausgewählten Artefakte zu löschen.

  4. Klicken Sie auf Bereinigungsrichtlinie hinzufügen und fügen Sie Folgendes hinzu:

    • Name: Geben Sie der Bereinigungsrichtlinie einen Namen. Der Name muss innerhalb der Gruppe von Richtlinien, die Sie auf ein Repository anwenden, eindeutig sein.
    • Richtlinientyp: Wählen Sie Neueste Versionen beibehalten aus.
  5. Geben Sie im Feld Anzahl beibehalten die Anzahl der Versionen eines Artefakts ein, die in Ihrem Repository beibehalten werden sollen.

  6. Optional: Wählen Sie Paketpräfixe aus, um Paketpräfixe anzugeben, auf die die Keep-Richtlinie angewendet werden soll. red, blue würde beispielsweise mit den Artefaktnamen red-team, redis und bluebird übereinstimmen.

  7. Sie können weitere Bereinigungsrichtlinien hinzufügen, indem Sie auf Bereinigungsrichtlinie hinzufügen klicken.

  8. Klicken Sie auf Aktualisieren.

    Ihre Bereinigungsrichtlinie wird auf das Repository angewendet. Sie können die Bereinigungsrichtlinien im Abschnitt Repository-Details ansehen. Klicken Sie dazu auf Mehr anzeigen.

JSON

Das Format ähnelt einer Löschrichtlinie. Bei einer Keep-Richtlinie ist der Wert für action {"type": "Keep"}.

Eine Keep-Richtlinie zum Beibehalten einer bestimmten Anzahl von Versionen hat einen Abschnitt mostRecentVersions anstelle eines Abschnitts condition.

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

Ersetzen Sie Folgendes:

  • KEEP_POLICY_NAME durch einen Namen für Ihre Notizen-Richtlinie. Der Name muss innerhalb der Richtliniengruppe, die Sie auf ein Repository anwenden, eindeutig sein.
  • PACKAGE_PREFIXES durch die optionalen Paketpräfixe, auf die die Keep-Richtlinie angewendet werden soll. red, blue würde beispielsweise mit den Artefaktnamen red-team, redis und bluebird übereinstimmen.
  • MINIMUM_NUMBER durch die Anzahl der Versionen eines Artefakts, die in Ihrem Repository beibehalten werden sollen.

Wenn Sie die Keep-Richtlinie auf alle Pakete in Ihrem Repository anwenden möchten, lassen Sie die Bedingung packageNamePrefixes weg. Die angegebene Anzahl neuer Versionen jedes Pakets in Ihrem Repository wird beibehalten.

Beispiel für eine Richtliniendatei

Das folgende Beispiel für eine Richtliniendatei enthält eine Löschrichtlinie und zwei Keep-Richtlinien.

  • Die Richtlinie delete-prerelease entfernt Artefaktversionen 30 Tage nach dem Upload, wenn das Artefakt mit dem String alpha oder v0 beginnt.
  • Die Richtlinie keep-tagged-release behält Artefakte bei, die mit dem Präfix release getaggt sind und einen Dateinamen haben, der mit webapp oder mobile beginnt.
  • Die Richtlinie keep-minimum-versions behält die fünf neuesten Versionen von Artefakten bei, deren Dateinamen mit webapp, mobile oder sandbox beginnen.
[
  {
    "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
    }
  }
]

Richtlinien im Probelauf testen

Zum Testen der Bereinigungsrichtlinien können Sie die Bereinigungsrichtlinie für einen Probelauf in der Console festlegen oder den Befehl gcloud artifacts set-cleanup-policies mit dem Flag --dry-run ausführen.

Sie können die Audit-Logs zum Datenzugriff von Artifact Registry aufrufen, um die Auswirkungen Ihrer Bereinigungsrichtlinien zu analysieren. Wenn Sie Audit-Logs zum Datenzugriff für Bereinigungsrichtlinien erhalten möchten, müssen Sie für den Artifact Registry-Dienst explizit den Typ Daten schreiben für Audit-Logs zum Datenzugriff aktivieren. Informationen zum Aktivieren von Audit-Logs zum Datenzugriff finden Sie unter Audit-Logs aktivieren.

Console

  1. Öffnen Sie in der Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie das Repository in der Liste der Repositories aus und klicken Sie auf Repository bearbeiten.

  3. Wählen Sie im Bereich Bereinigungsrichtlinien die Option Probelauf aus.

  4. Klicken Sie auf Bereinigungsrichtlinie hinzufügen und konfigurieren Sie die Optionen für die Richtlinien Bedingtes Löschen, Bedingtes Beibehalten oder Neueste Versionen beibehalten.

  5. Klicken Sie auf Aktualisieren.

Wenn eine Löschrichtlinie zu einer BatchDeleteVersions-Aktion führt, wird der Parameter validateOnly als "true" ausgewertet.

Führen Sie den folgenden Befehl aus, um Audit-Logs für Probeläufe Ihrer Bereinigungsrichtlinien abzufragen:

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

Die Ausgabe sollte so aussehen:

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

Führen Sie den folgenden Befehl aus, um einen Probelauf mit Ihren Bereinigungsrichtlinien durchzuführen:

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

Ersetzen Sie Folgendes:

  • REPOSITORY durch den Namen des Repositorys.
  • Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts.
  • LOCATION durch den regionalen oder multiregionalen Standort des Repositorys.

Wenn eine Löschrichtlinie zu einer BatchDeleteVersions-Aktion führt, wird der Parameter validateOnly als "true" ausgewertet.

Führen Sie den folgenden Befehl aus, um Audit-Logs für Probeläufe Ihrer Bereinigungsrichtlinien abzufragen:

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

Die Ausgabe sollte so aussehen:

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'

Richtlinien auf ein Repository anwenden

Wenn Sie die in einer lokalen JSON-Datei definierten Bereinigungsrichtlinien verwenden möchten, wenden Sie sie über die gcloud CLI auf Repositories an, in denen Artifact Registry Artefaktversionen automatisch löschen soll.

Wenn Sie Bereinigungsrichtlinien anwenden möchten, die in der Console auf Probelauf festgelegt sind, setzen Sie die Richtlinie auf Artefakte löschen.

Bereinigungsrichtlinien können nur auf Standard-Repositories angewendet werden. Auf Folgendes können Sie keine Bereinigungsrichtlinien anwenden:

  • Ein Google Cloud-Projekt.

Console

So wenden Sie Bereinigungsrichtlinien an:

  1. Öffnen Sie in der Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie das Repository in der Liste der Repositories aus und klicken Sie auf Repository bearbeiten.

  3. Wählen Sie im Abschnitt Bereinigungsrichtlinien die Option Artefakte löschen aus.

    Artifact Registry löscht und speichert Artefakte, die Ihren Richtlinien entsprechen, mithilfe eines Hintergrundjobs, der regelmäßig ausgeführt wird. Änderungen treten normalerweise innerhalb von etwa einem Tag in Kraft.

gcloud

Führen Sie den folgenden Befehl in dem Verzeichnis mit Ihrer Bereinigungsrichtliniendatei aus, um Bereinigungsrichtlinien anzuwenden.

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

Ersetzen Sie Folgendes:

  • REPOSITORY durch den Namen des Repositorys.
  • Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts.
  • LOCATION durch den regionalen oder multiregionalen Standort des Repositorys.
  • --no-dry-run deaktiviert die Probelauffunktion für das Repository.
  • POLICY_FILE ist der Name der Datei mit der Bereinigungsrichtlinie.

Mit dem folgenden Befehl werden beispielsweise Richtlinien in policy.json auf das Repository my-repo in der Region us-west1 im Projekt my-project angewendet.

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

Artifact Registry löscht und speichert Artefakte, die Ihren Richtlinien entsprechen, mithilfe eines Hintergrundjobs, der regelmäßig ausgeführt wird. Änderungen treten normalerweise innerhalb eines Tages in Kraft.

Richtlinie aktualisieren

Console

  1. Öffnen Sie in der Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie das Repository in der Liste der Repositories aus und klicken Sie auf Repository bearbeiten.

  3. Klicken Sie im Abschnitt Bereinigungsrichtlinien auf den Namen der Richtlinie, die Sie zum Ändern festlegen möchten.

  4. Bearbeiten Sie die Bereinigungsrichtlinie und klicken Sie auf Aktualisieren.

    Ihre Bereinigungsrichtlinie wird auf das Repository angewendet.

gcloud-CLI

Um vorhandene Richtlinien zu aktualisieren, bearbeiten Sie die Einstellungen in der Richtliniendatei und führen dann den folgenden Befehl aus, um die Richtlinien noch einmal anzuwenden.

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

Ersetzen Sie Folgendes:

  • REPOSITORY durch den Namen des Repositorys.
  • Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts.
  • LOCATION durch den regionalen oder multiregionalen Standort des Repositorys.
  • --no-dry-run deaktiviert die Probelauffunktion für das Repository.
  • POLICY_FILE ist der Name der Datei mit der Bereinigungsrichtlinie.

Richtlinien zur Repository-Bereinigung auflisten

Sie können die mit einem Repository verknüpften Bereinigungsrichtlinien aufrufen.

Console

  1. Öffnen Sie in der Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie in der Liste der Repositories das Repository aus, das Sie ansehen möchten.

  3. Klicken Sie im Abschnitt Repository-Details auf Mehr anzeigen.

    Die Namen der Bereinigungsrichtlinien werden angezeigt.

  4. Klicken Sie auf Repository bearbeiten, um die Details der Bereinigungsrichtlinien des Repositorys anzusehen oder zu bearbeiten.

    Die Details zu Ihren vorhandenen Bereinigungsrichtlinien sind im Abschnitt Bereinigungsrichtlinien aufgeführt.

gcloud-CLI

Führen Sie dazu diesen Befehl aus:

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

Ersetzen Sie Folgendes:

  • REPOSITORY durch den Namen des Repositorys.
  • Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts.
  • LOCATION durch den regionalen oder multiregionalen Standort des Repositorys.

Richtlinie aus einem Repository entfernen

Entfernen Sie eine Bereinigungsrichtlinie aus einem Repository, wenn Artifact Registry Artefaktversionen nicht mehr automatisch löschen soll.

Console

  1. Öffnen Sie in der Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie das Repository in der Liste der Repositories aus und klicken Sie auf Repository bearbeiten.

  3. Bewegen Sie im Abschnitt Bereinigungsrichtlinien den Mauszeiger auf den Namen der Richtlinie, die Sie löschen möchten.

  4. Klicken Sie auf das Symbol Löschen.

  5. Klicken Sie auf Aktualisieren.

    Die Bereinigungsrichtlinie wird gelöscht.

gcloud-CLI

Führen Sie dazu diesen Befehl aus:

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

Ersetzen Sie Folgendes:

  • REPOSITORY ist der Name des Repositorys.
  • PROJECT_ID ist die ID Ihres Google Cloud-Projekts.
  • LOCATION ist der regionale oder multiregionale Standort für das Repository.
  • POLICY_NAMES ist eine durch Kommas getrennte Liste von Richtliniennamen für die Richtlinien, die Sie entfernen möchten.

Mit dem folgenden Befehl wird beispielsweise eine Richtlinie namens delete-test aus dem Repository my-repo in der Region us-west1 im Projekt my-project entfernt:

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

Audit-Logeinträge für Bereinigungsrichtlinien

Wenn Sie die Logeinträge für Bereinigungsrichtlinien in Cloud Logging ansehen möchten, müssen Sie das DATA_WRITE-Logging enable.

Wenn Sie eine Bereinigungsrichtlinie für ein Repository festlegen, wird der Vorgang als Aktualisierung des Repositorys (Vorgang UpdateRepository) protokolliert.

Wenn Artifact Registry eine Version eines Artefakts löscht, wird das Ereignis in den Datenzugriffslogs von Cloud Logging protokolliert. Aus den Logeinträgen geht hervor, dass das Artifact Registry-Dienstkonto den Löschvorgang durchgeführt hat. Die Artifact Registry-Dienstkonto-ID hat das Format service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com

Sonstige Tools

Bei Container-Images können Sie auch die folgenden Tools zur Verwaltung des Image-Lebenszyklus verwenden:

  • gcrane: Ein Tool für Container-Registries, mit dem Sie Images zwischen Repositories kopieren können.
  • gcr-cleaner: Ein Tool zum Löschen von Container-Images nach bestimmten Kriterien.

Die Tools gcrane und gcr-cleaner sind keine offiziellen Google-Produkte.