Aufbewahrungsrichtlinien

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Aufbewahrungsrichtlinien steuern, wie lange Pipelineläufe, klassische Versionen und Testdaten in Azure DevOps aufbewahrt werden. Mithilfe dieser Einstellungen können Sie die Speichernutzung, Compliance und Rückverfolgbarkeit ausgleichen, indem Sie definieren, wann Ältere Daten gelöscht werden sollen und welche Daten länger aufbewahrt werden sollen. In diesem Artikel werden die verfügbaren Aufbewahrungsoptionen und ihre Anwendung auf Pipelines, Releases und Tests erläutert.

Voraussetzungen

Product Anforderungen
Azure DevOps - Eine Azure DevOps Organisation.
- Ein Azure DevOps-Projekt.
Erlaubnisse – Standardmäßig können Sie Aufbewahrungsrichtlinien verwalten, wenn Sie Mitglied in den Gruppen "Mitwirkende", "Build-Administratoren", "Projektadministratoren" oder "Release-Administratoren" sind.
– Zum Verwalten von Aufbewahrungsrichtlinien benötigen Sie eines der folgenden Abonnements: Enterprise-, Test Professional- oder MSDN-Plattformen.
- Sie können auch den monatlichen Azure-Test-Plans-Zugriff erwerben und die Zugriffsebene Basic + Test Plans zuweisen. Weitere Informationen finden Sie unter Testen des Zugriffs nach Benutzerrolle.

Wichtig

Azure Pipelines unterstützt keine Aufbewahrungsrichtlinien pro Pipeline mehr. Es wird empfohlen, Aufbewahrungsregeln auf Projektebene zu verwenden.

Konfigurieren von Aufbewahrungsrichtlinien

Führen Sie die folgenden Schritte aus, um die Seiten mit den Aufbewahrungseinstellungen in Ihrem Projekt zu öffnen und den Richtlinienbereich auszuwählen, den Sie verwalten möchten:

  1. Melden Sie sich bei Ihrem Azure DevOps Projekt an.

  2. Wählen Sie Zahnradsymbol>Projekteinstellungen aus.

  3. Wählen Sie eine der folgenden Optionen aus:

    • Unter "Pipelines" wählen Sie "Einstellungen" aus, um die Aufbewahrung für Ausführungen, Artefakte, Symbole, Anhänge und Pull-Request-Läufe zu konfigurieren.
    • Wählen Sie unter "Pipelines" die Option "Freigabeaufbewahrung" aus, um Freigabeaufbewahrungseinstellungen zu konfigurieren, einschließlich, wenn Versionen gelöscht oder dauerhaft zerstört werden.
    • Wählen Sie unter "Testen" die Option "Aufbewahrung" aus, um zu konfigurieren, wie lange manuelle und automatisierte Testläufe aufbewahrt werden.

Pipeline führt Aufbewahrungsrichtlinien aus

In den meisten Fällen müssen Sie abgeschlossene Ausführungen nicht unbegrenzt aufbewahren. Über Aufbewahrungsrichtlinien können Sie festlegen, wie lange Ausführungen und zugehörige Daten aufbewahrt werden, bevor sie gelöscht werden.

  1. Wechseln Sie in den Einstellungen Ihres Projekts zur Registerkarte Zahnradsymbol>Einstellungen.

  2. Wählen Sie im Abschnitt "Pipelines" die Option "Einstellungen" aus:

    • Legen Sie fest, wie viele Tage Artefakte, Symbole und Anlagen beibehalten werden sollen.
    • Legen Sie fest, wie viele Tage Ausführungen aufbewahrt werden sollen.
    • Stellen Sie ein, wie viele Tage die Pull-Request-Ausführungen gespeichert werden sollen.
    • Legen Sie die Anzahl der letzten Durchläufe fest, die für jede Pipeline beibehalten werden sollen.

Warnung

Azure DevOps unterstützt keine Aufbewahrungsregeln mehr pro Pipeline. Die einzige Möglichkeit zum Konfigurieren von Aufbewahrungsrichtlinien für YAML und klassische Pipelines ist die zuvor beschriebenen Projekteinstellungen. Sie können keine pipelinespezifischen Aufbewahrungsrichtlinien mehr konfigurieren.

Die Anzahl der letzten Ausführungen, die für jede Pipeline-Einstellung beibehalten werden sollen, wird je nach Repository-Typ unterschiedlich interpretiert:

  • Azure Repos: Azure Pipelines behält die konfigurierte Anzahl der neuesten Ausführungen für den Standardbranch der Pipeline und für jeden geschützten Branch im Repository bei. Eine geschützte Verzweigung ist eine beliebige Verzweigung mit konfigurierten Verzweigungsrichtlinien.

    Ziehen Sie z. B. ein Repository mit zwei Verzweigungen in Betracht: main und release. Wenn die Pipeline-Standardverzweigung main ist und release eine Verzweigungsrichtlinie hat, dann wird release als geschützte Verzweigung behandelt. Wenn Sie die Aufbewahrung so konfigurieren, dass drei Ausführungen beibehalten werden, behält Azure Pipelines die neuesten drei Ausführungen für main, die neuesten drei Ausführungen für release und die neuesten drei Ausführungen für die Pipeline insgesamt (unabhängig vom Branch).

    Im folgenden Beispiel wird davon ausgegangen, dass die letzte Ausführung zuerst aufgeführt wird. Es wird angezeigt, welche Läufe beibehalten werden, wenn die Aufbewahrung so konfiguriert ist, dass die letzten drei Läufe erhalten bleiben (die Einstellung auf Tage wird dabei ignoriert).

    Nr. der Ausführung Branch Beibehalten/Nicht beibehalten Warum?
    Lauf 10 Standard Beibehalten Die neuesten 3 für den Hauptzweig und die neuesten 3 für die Pipeline.
    Lauf 9 Branch1 Beibehalten Die letzten 3 für Pipeline
    Ausführung 8 Branch2 Beibehalten Die letzten 3 für Pipeline
    Lauf 7 Standard Beibehalten Die letzten 3 für „main“
    Ausführung 6 Standard Beibehalten Die letzten 3 für „main“
    Lauf 5 Standard Nicht beibehalten Nicht die neuesten 3 für Haupt- oder Pipeline
    Lauf 4 Standard Nicht beibehalten Nicht die neuesten 3 für Haupt- oder Pipeline
    Ausführung 3 Branch1 Nicht beibehalten Nicht die neuesten 3 für Haupt- oder Pipeline
    Testlauf 2 Freigabe Beibehalten Die letzten 3 für Release
    Lauf 1 Standard Nicht beibehalten Nicht die neuesten 3 für Haupt- oder Pipeline

    Die Anzahl der Tage, die gespeichert werden sollen, wird ab dem Datum berechnet, an dem die Ausführung abgeschlossen ist. Zum Beispiel gibt es zwei Läufe auf einer Hauptzweigung am 19. Januar. Die später abgeschlossene Ausführung wird beibehalten.

  • Alle anderen Git-Repositorys: Azure Pipelines behält die konfigurierte Anzahl der neuesten Ausführungen für die gesamte Pipeline bei.

  • Team Foundation Version Control (TFVC): Azure Pipelines behält die konfigurierte Anzahl der neuesten Ausführungen für die gesamte Pipeline unabhängig von der Verzweigung bei.

Welche Teile der Ausführung werden gelöscht?

Wenn eine Ausführung gelöscht wird, werden die folgenden Daten entfernt:

  • Logdateien
  • Alle Pipeline- und Buildartefakte
  • Alle Symbole
  • Binärdateien
  • Testergebnisse
  • Ausführungsmetadaten
  • Quellbezeichnungen (TFVC) oder Tags (Git)

Die Beibehaltung von Pipeline-Ausführungen betrifft nicht Universal Packages, NuGet, npm und andere Pakete.

Wann werden Ausführungen gelöscht?

Eine Ausführung wird gelöscht, wenn alle folgenden Bedingungen erfüllt sind:

  • Er überschreitet die Anzahl von Tagen, die in den Aufbewahrungseinstellungen konfiguriert wurden.
  • Es handelt sich entsprechend den konfigurierten Aufbewahrungseinstellungen nicht um eine der letzten Ausführungen
  • Sie ist nicht für unbefristete Aufbewahrung markiert.
  • Wird nicht von einem Release aufbewahrt.

Aufbewahrungsrichtlinien werden einmal pro Tag verarbeitet. Die Verarbeitungszeit variiert, da die Arbeit täglich für den Lastenausgleich verteilt wird. Sie können diesen Zeitplan nicht ändern.

Automatisches Festlegen von Aufbewahrungsleases für Pipelineausführungen

Aufbewahrungsleasen ermöglichen es Ihnen, die Lebensdauer der Pipeline über konfigurierte Aufbewahrungszeiträume hinaus zu verlängern oder zu steuern. Sie können Leases für eine Pipeline hinzufügen oder löschen, die mit der Lease-API ausgeführt wird. Sie können diese API aus einer Pipeline mit einem Skript und vordefinierten Variablen für runId und definitionId aufrufen.

Sie können eine Lease für eine bestimmte Dauer festlegen. Sie können beispielsweise eine Ausführung beibehalten, die für einen kürzeren Zeitraum in einer Testumgebung bereitgestellt wird. Sie können eine Ausführung beibehalten, die für eine längere Zeit in der Produktion bereitgestellt wird.

Manuelles Festlegen von Aufbewahrungsleases für Pipelineausführungen

Sie können eine Pipelineausführung manuell über das Menü "Weitere Aktionen " auf der Seite " Pipelineausführungsdetails " beibehalten.

Screenshot, der zeigt, wie Sie eine Ausführung manuell speichern.

Löschen einer Ausführung

Sie können Ausführungen über das Menü „Weitere Aktionen“ auf der Seite „Pipeline-Ausführungsdetails“ löschen.

Screenshot, der zeigt, wie eine Ausführung gelöscht wird.

Hinweis

Wenn aufbewahrungsrichtlinien zurzeit für die Ausführung gelten, müssen Sie sie entfernen, bevor Sie die Ausführung löschen können. Anweisungen finden Sie unter Pipeline-Ausführungsdetails: Löschen eines Durchlaufs.

Erlässt Aufbewahrungsrichtlinien

Release-Aufbewahrungsrichtlinien für klassische Release-Pipelines bestimmen, wie lange ein Release und die zugehörige Ausführung aufbewahrt werden. Mit diesen Richtlinien können Sie beide konfigurieren:

  • Die Anzahl der Tage, die jede Version aufbewahrt werden soll, nachdem sie zuletzt geändert oder bereitgestellt wurde.
  • Die Mindestanzahl der Versionen, die pro Pipeline aufbewahrt werden sollen.

Der Aufbewahrungszeitgeber wird jedes Mal zurückgesetzt, wenn ein Release geändert oder in einer Phase bereitgestellt wird. Die Einstellung für Mindestreleases hat Vorrang vor der auf Tagen basierenden Einstellung. Wenn Sie z. B. die mindesten auf drei Versionen festlegen, werden die drei neuesten Versionen unabhängig von der konfigurierten Anzahl von Tagen beibehalten. Sie können diese Versionen weiterhin manuell löschen, wenn Sie sie nicht mehr benötigen. Weitere Informationen finden Sie in den häufig gestellten Fragen weiter unten in diesem Artikel.

YAML- und Buildpipelines verwenden dieselbe Ausführungs-Aufbewahrungsrichtlinie. Sie können diese Einstellungen unter Project einstellungen>Pipelines>Settings anzeigen.

Globale Archivierungsrichtlinie für Releases

In Azure DevOps Services können Sie diese Einstellungen anzeigen, sie können jedoch nicht auf Projektebene ändern.

Die globalen Einstellungen zur Releaseaufbewahrung können Sie auf der Seite Release-Aufbewahrung Ihres Projekts in Ihren Projekteinstellungen einsehen:

  • Maximale Aufbewahrungsrichtlinie: Definiert die obere Grenze für die Dauer der Aufbewahrung von Versionen über alle Releasepipelines hinweg. Pipelineautoren können die Aufbewahrung nicht über diesen Grenzwert hinaus konfigurieren.
  • Standardaufbewahrungsrichtlinie: Definiert die Standardaufbewahrungswerte, die auf Freigabepipelinen angewendet werden. Pipeline-Autoren können diese Standardwerte überschreiben.
  • Endgültiges Löschen von Versionen: Steuert, wie lange gelöschte Versionen vor der dauerhaften Entfernung aufbewahrt werden. Einzelne Release-Pipelines können diese Richtlinie nicht überschreiben.

Globale Archivierungsrichtlinie für Releases

Wenn Sie Azure DevOps Server lokal verwenden, können Sie Standardwerte auf Projektebene und Höchstwerte für die Freigabeaufbewahrung konfigurieren. Sie können auch festlegen, wann gelöschte Versionen dauerhaft zerstört werden. (Sie werden aus der Registerkarte " Gelöscht " im Build-Explorer entfernt.)

  • Maximale Aufbewahrungsrichtlinie: Definiert die obere Grenze für die Dauer der Aufbewahrung von Versionen über alle Releasepipelines hinweg. Pipelineautoren können die Aufbewahrung nicht über diesen Grenzwert hinaus konfigurieren.
  • Standardaufbewahrungsrichtlinie: Definiert die Standardaufbewahrungswerte, die auf Freigabepipelinen angewendet werden. Pipeline-Autoren können diese Standardwerte überschreiben.
  • Endgültiges Löschen von Versionen: Steuert, wie lange gelöschte Versionen vor der dauerhaften Entfernung aufbewahrt werden. Einzelne Release-Pipelines können diese Richtlinie nicht überschreiben.

Screenshot mit den Einstellungen für aufbewahrungsrichtlinien in Azure DevOps Server.

Festlegen von Aufbewahrungsrichtlinien auf Sammlungsebene

Wenn Sie einen lokalen Server verwenden, können Sie die Aufbewahrung auf Sammlungsebene auch mit benutzerdefinierten Regeln konfigurieren. Diese Einstellungen gelten für klassische Build-Pipelines und definieren die Standard- und maximalen Aufbewahrungswerte für die Sammlung.

Screenshot, der zeigt, wie Aufbewahrungsrichtlinien auf Sammlungsebene konfiguriert werden.

Verwenden der Aufgabe "Dateien kopieren" zum längeren Speichern von Daten

Wenn Sie die Buildausgabe länger als der konfigurierte Aufbewahrungszeitraum beibehalten müssen, kopieren Sie sie mithilfe der Aufgabe "Dateien kopieren" in Ihren eigenen Speicherort.

Verwenden Sie "Dateien kopieren" anstelle von "Buildartefakte veröffentlichen", da Daten, die als Buildartefakte veröffentlicht wurden, weiterhin der Aufbewahrungsbereinigung unterliegen.

- task: CopyFiles@2
  displayName: 'Copy Files to: \\mypath\storage\$(Build.BuildNumber)'
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)'
    Contents: '_buildOutput/**'
    TargetFolder: '\\mypath\storage\$(Build.BuildNumber)'

Häufig gestellte Fragen

Wenn ich eine Ausführung oder ein Release als zeitlich unbegrenzt aufzubewahren markiere, gilt dann die Aufbewahrungsrichtlinie dennoch?

Nein. Die Aufbewahrungsrichtlinie der Pipeline und die vom Administrator festgelegten maximalen Grenzwerte werden nicht angewendet, wenn Sie eine einzelne Ausführung oder Freigabe markieren, die unbegrenzt aufbewahrt werden soll. Es bleibt erhalten, bis Sie die Aufbewahrung auf unbestimmte Zeit beenden.

Wie kann ich angeben, dass für die Produktion bereitgestellte Ausführungen länger aufbewahrt werden soll?

Wenn Sie klassische Versionen für die Bereitstellung in der Produktion verwenden, passen Sie die Aufbewahrung in der Releasepipeline an. Legen Sie fest, wie viele Tage die in der Produktion bereitgestellten Releases aufbewahrt werden sollen und geben Sie an, dass die mit diesen Releases verbundenen Ausführungen ebenfalls aufbewahrt werden sollen. Diese Einstellung setzt die Ausführungsaufbewahrungsrichtlinie außer Kraft.

Wenn Sie mehrstufige YAML-Pipelines verwenden, können Sie die Aufbewahrung nur in Den Projekteinstellungen konfigurieren. Sie können die Aufbewahrung nicht in der Bereitstellungsumgebung konfigurieren.

Ich habe nicht festgelegt, dass Ausführungen auf unbestimmte Zeit aufbewahrt werden, aber viele Ausführungen werden aufbewahrt. Wie kann ich verhindern, dass dieses Verhalten auftritt?

Dieses Verhalten kann aus einem der folgenden Gründe auftreten:

  • Eine Person in Ihrem Projekt markierte die Ausführung für eine unbefristete Aufbewahrung.
  • Die Ausführungen werden von einem Release genutzt und hält eine Aufbewahrungssperre für diese Ausführungen. Passen Sie die Veröffentlichungsaufbewahrungsrichtlinie wie zuvor erläutert an.

Wenn die Ausführungen nicht mehr benötigt werden oder die Releases, die sie enthielten, bereits gelöscht wurden, können Sie die Ausführungen manuell löschen.

Wie funktioniert die Einstellung für die Mindestanzahl an Versionen, die behalten werden?

Die Mindestanzahl an Versionen, die beibehalten werden sollen, wird auf Stufenebene festgelegt. Azure DevOps behält diese Anzahl der zuletzt bereitgestellten Versionen für die Phase immer bei, auch wenn sie sich außerhalb des Aufbewahrungszeitraums befinden. Ein Release wird bei der Berechnung dieser Mindestanzahl nur berücksichtigt, wenn die Bereitstellung auf dieser Stufe startet. Sowohl erfolgreiche als auch fehlgeschlagene Bereitstellungen werden gezählt. Ausstehende Freigaben, die auf Genehmigung warten, werden nicht gezählt.

Wie wird der Aufbewahrungszeitraum entschieden, wenn die Veröffentlichung in mehreren Phasen bereitgestellt wird, die unterschiedliche Aufbewahrungszeiträume aufweisen?

Der endgültige Aufbewahrungszeitraum wird durch die Einstellungen der Aufbewahrungstage in allen Phasen bestimmt, in denen die Veröffentlichung bereitgestellt wird, wobei der Maximalwert unter diesen Phasen verwendet wird. Mindestversionen, die beibehalten werden sollen, sind stufenspezifisch und ändern sich nicht basierend darauf, ob eine Version in einer oder mehreren Phasen bereitgestellt wurde. Zugeordnete Artefakte beibehalten kommt nur zur Anwendung, wenn ein Release auf einer Stufe bereitgestellt wird, für die diese Option aktiviert ist.

Ich habe eine Phase gelöscht, für die ich einige alte Releases habe. Welche Aufbewahrung wird für diesen Fall berücksichtigt?

Nachdem eine Phase gelöscht wurde, gelten die Aufbewahrungseinstellungen auf Phasenebene nicht mehr. In diesem Fall verwendet Azure DevOps die Standardaufbewahrungseinstellungen auf Projektebene.

Wir müssen in meiner Organisation Builds und Releases länger als in den Einstellungen zulässig aufbewahren. Wie kann ich eine längere Aufbewahrungsdauer anfordern?

Um eine Ausführung oder Freigabe länger als die konfigurierten Aufbewahrungsgrenzwerte beizubehalten, markieren Sie sie auf unbestimmte Zeit. Es gibt keine Einstellung zum manuellen Konfigurieren eines längeren Aufbewahrungszeitraums. Wenden Sie sich an Azure DevOps Support.

Sie können auch REST-APIs verwenden, um Ausführungsinformationen und Artefakte herunterzuladen und diese dann in Ihrem eigenen Speicherkonto oder Artefakt-Repository zu speichern.

Mir sind einige Ausführungen verloren gegangen. Gibt es eine Möglichkeit, sie zurückzubekommen?

Wenn Sie der Meinung sind, dass Prozesse aufgrund eines Dienstfehlers verloren gegangen sind, erstellen Sie sofort ein Supportticket. Wenn eine Builddefinition mehr als eine Woche zuvor manuell gelöscht wurde, können Sie sie nicht wiederherstellen. Wenn die Durchläufe erwartungsgemäß gemäß der Aufbewahrungsrichtlinie gelöscht wurden, können Sie sie nicht wiederherstellen.

Wie nutze ich die Build-Cleanup-Funktion der Agents?

Das Festlegen der Build.Cleanup Funktion für Agents leitet Bereinigungsaufträge nur an diese Agents weiter, wodurch andere Agents für normale Pipelinearbeiten zur Verfügung stehen. Wenn eine Pipelineausführung gelöscht wird, werden Artefakte, die außerhalb Azure DevOps gespeichert sind, über einen Agentauftrag bereinigt. Wenn Bereinigungsaufträge Ihren Pool überlasten, bestimmen Sie eine Teilmenge von Agenten zu Bereinigungsagenten. Wenn bei Agents Build.Cleanup eingestellt ist, führen nur diese Agents Bereinigungsaufträge aus. Um diese Einstellung zu aktivieren, wechseln Sie zuAgent-Funktionen>, und legen Sie sie Build.Cleanup auf 1fest.

Was geschieht mit Dateifreigabeartefakten, wenn der Build gelöscht wird?

Wenn ein Build mit Dateifreigabeartefakten gelöscht wird, wird eine neue Buildaufgabe auf einem Build-Agent in die Warteschlange gestellt, um diese Dateien zu bereinigen. Ein Agent wird ausgewählt, um diese Aufgabe basierend auf den folgenden Kriterien auszuführen:

  • Gibt es einen Agenten oder eine Agentin mit Build.Cleanup Fähigkeit?
  • Ist der Agent verfügbar, der den Build ausgeführt hat?
  • Ist ein Agent aus demselben Pool verfügbar?
  • Ist ein Agent aus einem ähnlichen Pool verfügbar?
  • Ist überhaupt ein Agent verfügbar?

Werden Ergebnisse automatisierter Tests, die als Teil eines Releases veröffentlicht werden, bis zum Löschen des Releases aufbewahrt?

Testergebnisse, die in einer Veröffentlichungsphase veröffentlicht wurden, werden gemäß der Testaufbewahrungsrichtlinie und nicht der Veröffentlichungsaufbewahrungsrichtlinie beibehalten. Wenn Testergebnisse so lange beibehalten werden müssen, wie die Version, legen Sie die Aufbewahrung für automatisierte Testläufe in Project Einstellungen auf Never delete fest. Diese Einstellung stellt sicher, dass Testergebnisse nur gelöscht werden, wenn die Version gelöscht wird.

Werden Ergebnisse manueller Tests gelöscht?

Nein. Manuelle Testergebnisse werden nicht gelöscht.

Wie behalte ich meine Versionskontrollbezeichnungen oder Tags bei?

Wenn Bezeichnungen oder Tags nach dem Löschen eines Builds beibehalten werden müssen, wenden Sie sie in einer Pipelineaufgabe an, fügen Sie sie manuell außerhalb der Pipeline hinzu, oder behalten Sie den Build unbegrenzt bei.

Wichtig

Alle Versionssteuerungsbezeichnungen oder -tags, die während einer Buildpipeline angewendet werden, die nicht automatisch von der Aufgabe "Quellen " erstellt werden, werden beibehalten, auch wenn der Build gelöscht wird. Bezeichnungen oder Tags, die während eines Builds automatisch von der Aufgabe "Quellen " erstellt werden, werden als Buildartefakte behandelt und mit dem Build gelöscht.

Was geschieht mit Pipelines, die in anderen Pipelines verwendet werden?

Klassische Releases bewahren Pipelines auf, die sie automatisch nutzen.

Was geschieht mit Pipelines, die in anderen Pipelines verwendet werden?

Klassische Releases bewahren Pipelines auf, die sie automatisch nutzen. Wenn Sie YAML verwenden, können Sie auch eine mehrstufige YAML-Pipeline erstellen, um Ihre Version darzustellen und eine andere YAML-Pipeline darin als Ressource zu nutzen. Die Ressourcenpipeline wird automatisch aufbewahrt, solange die Releasepipeline aufbewahrt wird.