Kvarhållningsprinciper

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

Kvarhållningsprinciper styr hur länge pipelinekörningar, klassiska versioner och testdata sparas i Azure DevOps. De här inställningarna hjälper dig att balansera lagringsanvändning, efterlevnad och spårbarhet genom att definiera när du ska ta bort äldre data och vilka data du bör behålla längre. Den här artikeln beskriver vilka kvarhållningsalternativ som är tillgängliga och hur de gäller för pipelines, releaser och tester.

Förutsättningar

Product Requirements
Azure DevOps - En Azure DevOps-organisation.
- Ett Azure DevOps projekt.
behörigheter – Som standard kan du hantera kvarhållningsprinciper om du är medlem i grupperna Deltagare, Byggadministratörer, Project Administratörer eller Versionsadministratörer.
– För att hantera kvarhållningsprinciper behöver du någon av följande prenumerationer: Enterprise, Test Professional eller MSDN-plattformar.
– Du kan också köpa månatlig Azure Test Plans åtkomst och tilldela åtkomstnivån Basic + Test plans. Mer information finns i Testa åtkomst efter användarroll.

Viktigt!

Azure-pipelines stöder inte längre kvarhållningspolicyer per pipeline. Vi rekommenderar att du använder kvarhållningsregler på projektnivå.

Konfigurera kvarhållningsprinciper

Om du vill öppna sidorna för kvarhållningsinställningar i projektet och välja det principområde som du vill hantera följer du dessa steg:

  1. Logga in på ditt Azure DevOps projekt.

  2. Välj kugghjulsikonen>Projektinställningar.

  3. Välj något av följande alternativ:

    • Under Pipelines väljer du Inställningar för att konfigurera kvarhållning av körningar, artefakter, symboler, bifogade filer och pull request-körningar.
    • Under Pipelines väljer du Versionskvarhållning för att konfigurera inställningar för kvarhållning av versioner, inklusive när versioner tas bort eller förstörs permanent.
    • Under Test väljer du Kvarhållning för att konfigurera hur länge manuella och automatiserade testkörningar ska sparas.

Kvarhållningsprinciper för pipelinekörningar

I de flesta fall behöver du inte behålla slutförda körningar för alltid. Kör kvarhållningsprinciper så att du kan definiera hur länge körningar och relaterade data sparas innan du tar bort dem.

  1. Gå till fliken kugghjulsikon>inställningar i projektets inställningar.

  2. I avsnittet Pipelines väljer du Inställningar:

Varning

Azure DevOps stöder inte längre kvarhållningsregler per pipeline. Det enda sättet att konfigurera kvarhållningsprinciper för YAML och klassiska pipelines är genom de projektinställningar som tidigare beskrivits. Du kan inte längre konfigurera kvarhållningspolicyer per pipeline.

Antalet senaste körningar som ska behållas för varje pipelineinställning tolkas på olika sätt baserat på lagringsplatstyp:

  • Azure-lagringsplatser: Azure-pipelines behåller det konfigurerade antalet senaste körningar för pipelines standardgren och för varje skyddad gren på lagringsplatsen. En skyddad branch är alla brancher med grenpolicyer konfigurerade.

    Överväg till exempel en lagringsplats med två grenar: main och release. Om pipelinens standardgren är main och release har en förgreningsprincip behandlas den release som en skyddad gren. Om du konfigurerar kvarhållning för att behålla tre körningar behåller Azure-pipelines de senaste tre körningarna för main, de senaste tre körningarna för release och de senaste tre körningarna för pipelinan totalt (oavsett filial).

    I följande exempel förutsätts att den senaste körningen visas först. Den visar vilka körningar som behålls när du konfigurerar kvarhållning för att behålla de senaste tre körningarna (ignorera den dagsbaserade inställningen).

    Springa # Filial Behålls/behålls inte Varför?
    Kör 10 main Behållen Senaste 3 för main och senaste 3 för pipeline
    Kör 9 filial1 Behållen De senaste 3 i pipelinen
    Kör 8 gren2 Behållen De senaste 3 i pipelinen
    Kör 7 main Behållen Senaste 3 för huvudmenyn
    Kör 6 main Behållen Senaste 3 för huvudmenyn
    Kör 5 main Behålls inte För main eller pipeline är det inte bland de senaste tre.
    Kör 4 main Behålls inte För main eller pipeline är det inte bland de senaste tre.
    Kör 3 filial1 Behålls inte För main eller pipeline är det inte bland de senaste tre.
    Kör 2 släppa Behållen Senaste 3 för lansering
    Kör 1 main Behålls inte För main eller pipeline är det inte bland de senaste tre.

    Antalet dagar som ska behållas beräknas från det datum körningen är avslutad. Till exempel finns det två körningar på huvudgrenen den 19 januari. Körningen som slutfördes senare bevaras.

  • Alla andra Git-lagringsplatser: Azure-pipelines behåller det konfigurerade antalet senaste körningar för hela pipelinen.

  • Team Foundation Version Control (TFVC): Azure-pipelines behåller det konfigurerade antalet senaste körningar för hela pipelinen, oavsett gren.

Vilka delar av processen tas bort

När en körning raderas tas följande data bort:

  • Loggar
  • Alla pipeline-artifakter och byggartefakter
  • Alla symboler
  • Binärer
  • Testresultat
  • Köra metadataprocessen
  • Källetiketter (TFVC) eller taggar (Git)

Kvarhållning av pipelinekörning styr inte universella paket, NuGet, npm och andra paket.

När tas körningar bort

En körning tas bort om alla följande villkor är uppfyllda:

  • Det överskrider antalet dagar som konfigurerats i kvarhållningsinställningarna.
  • Det är inte en av de senaste körningarna som konfigurerats i kvarhållningsinställningarna.
  • Den är inte markerad för obegränsad lagringstid.
  • Den sparas inte av en utgåva.

Kvarhållningsprinciper bearbetas en gång per dag. Bearbetningstiden varierar eftersom arbetet distribueras hela dagen för belastningsutjämning. Du kan inte ändra det här schemat.

Ange automatiskt kvarhållningslån för pipelinekörningar

Med kvarhållningslån kan du utöka eller kontrollera livslängden för pipelinekörningar utöver konfigurerade kvarhållningsperioder. Du kan lägga till eller ta bort leases för en pipelinekörning med hjälp av Lease API. Du kan anropa det här API:et från en pipeline med hjälp av ett skript och fördefinierade variabler för runId och definitionId.

Du kan ange ett hyresavtal för en viss varaktighet. Du kan till exempel behålla en körning som distribueras till en testmiljö under en kortare period. Du kan behålla en körning som distribueras till produktion under en längre tid.

Ange kvarhållningspolicy manuellt för pipelinekörningar

Du kan behålla en pipelinekörning manuellt från menyn Fler åtgärder på sidan Information om pipelinekörning .

Skärmbild som visar hur du manuellt bevarar en process.

Ta bort en körning

Du kan ta bort körningar från menyn Fler åtgärder på sidan Pipelinekörningsdetaljer.

Skärmbild som visar hur du tar bort en körprocess.

Anteckning

Om några retentionspolicyer för närvarande gäller för körningen måste du ta bort dem innan du kan ta bort körningen. Anvisningar finns i Information om pipelinekörning: Ta bort en körning.

Utgåvor av kvarhållningspolicyer

Kvarhållningsprinciper för versionshantering av klassiska pipelines avgör hur länge en version och dess tillhörande körning förblir bevarad. Med dessa principer kan du konfigurera båda:

  • Antalet dagar som varje version ska behållas efter att den senast ändrades eller distribuerades.
  • Det minsta antalet releaser som ska behållas för varje pipeline.

Kvarhållningstimern återställs varje gång en version ändras eller distribueras till en fas. Inställningen för minimala versioner har företräde framför den dagbaserade inställningen. Om du till exempel anger minst tre versioner behålls de tre senaste versionerna oavsett hur många dagar som har konfigurerats. Du kan fortfarande ta bort dessa versioner manuellt när du inte längre behöver dem. Mer information finns i Vanliga frågor och svar senare i den här artikeln.

YAML- och byggpipelines använder samma behållningspolicy för utförande. Du kan visa de här inställningarna under Project inställningar>Pipelines>Inställningar.

Global retentionspolicy för utgåvor

I Azure DevOps Services kan du visa de här inställningarna, men du kan inte ändra dem på projektnivå.

Du kan granska de globala inställningarna för versionsbevarande från sidan Release-kvarhållning i inställningarna för Projekt:

  • Maximal kvarhållningsprincip: Definierar den övre gränsen för hur länge du kan behålla versioner i alla versionspipelines. Pipelineförfattare kan inte konfigurera kvarhållning utöver den här gränsen.
  • Standardregel för kvarhållning: Definierar standardkvarhållningsvärden som tillämpas på utgivningspipelines. Pipelineutvecklare kan åsidosätta dessa förinställda värden.
  • Förstör versioner permanent: Styr hur länge borttagna versioner sparas innan de tas bort permanent. En utgivningspipeline kan inte åsidosätta den här principen.

Global retentionspolicy för utgåvor

Om du använder Azure DevOps Server lokalt kan du konfigurera standardvärden och maxvärden på projektnivå för kvarhållning av versioner. Du kan också ange när borttagna versioner förstörs permanent. (De tas bort från fliken Borttaget i Build Explorer.)

  • Maximal kvarhållningsprincip: Definierar den övre gränsen för hur länge du kan behålla versioner i alla versionspipelines. Pipelineförfattare kan inte konfigurera kvarhållning utöver den här gränsen.
  • Standardregel för kvarhållning: Definierar standardkvarhållningsvärden som tillämpas på utgivningspipelines. Pipelineutvecklare kan åsidosätta dessa förinställda värden.
  • Förstör versioner permanent: Styr hur länge borttagna versioner sparas innan de tas bort permanent. En utgivningspipeline kan inte åsidosätta den här principen.

Screenshot som visar kvarhållningsprincipinställningarna i Azure DevOps Server.

Ange kvarhållningsprinciper på samlingsnivå

Om du använder en lokal server kan du även konfigurera kvarhållning på samlingsnivå med anpassade regler. De här inställningarna gäller för klassiska byggprocesser och definierar standard- och högsta bevarandevärden för samlingen.

Skärmbild som visar hur du konfigurerar kvarhållningsprinciper på samlingsnivå.

Använd aktiviteten Kopiera filer för att spara data längre

Om du behöver behålla byggutdata längre än den konfigurerade kvarhållningsperioden kopierar du dem till din egen lagringsplats med hjälp av aktiviteten Kopiera filer.

Använd Kopiera filer i stället för Publicera byggartefakter eftersom data som publiceras som byggartefakter fortfarande är föremål för kvarhållningsrensning.

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

Vanliga frågor

Gäller kvarhållningsprincipen fortfarande om jag markerar en körning eller en utgåva att behållas på obestämd tid?

Nej. Pipelinens kvarhållningsprincip och de maximala gränser som angetts av administratören tillämpas inte när du markerar att en enskild körning eller version ska behållas på obestämd tid. Den finns kvar tills du slutar behålla den på obestämd tid.

Hur anger jag att körningar som distribueras till produktion ska behållas längre?

Om du använder klassiska versioner för att distribuera till produktion anpassar du kvarhållningen på versionspipelinen. Ange hur många dagar som du vill behålla versioner som distribuerats till produktion och ange att körningar som är associerade med dessa versioner behålls. Den här inställningen åsidosätter principen för kvarhållning av körningar.

Om du använder YAML-pipelines för flera flöden kan du endast konfigurera kvarhållning i projektinställningar. Du kan inte konfigurera kvarhållning efter distributionsmiljö.

Jag markerade inte körningar att de skulle behållas på obestämd tid, men många körningar behålls ändå. Hur kan jag förhindra det här beteendet?

Det här beteendet kan inträffa på grund av någon av följande orsaker:

  • Någon i projektet markerade körningarna för obegränsat bevarande.
  • En version förbrukar körningarna och versionen innehåller ett kvarhållningslås på dessa körningar. Anpassa kvarhållningsprincipen för versioner som tidigare förklarats.

Om körningarna inte längre behövs, eller om de versioner som behöll dem redan har tagits bort, kan du ta bort körningarna manuellt.

Hur fungerar inställningen för minimiutgåvor att behålla?

Minsta antal versioner att behålla definieras på fas. Azure DevOps behåller alltid det antalet senast distribuerade versioner för fasen, även om de är utanför kvarhållningsperioden. En släppt version bidrar endast till minimiantalet när distributionen till den etappen påbörjas. Både lyckade och misslyckade distributioner räknas. Versioner som väntar på godkännande räknas inte.

Hur avgörs kvarhållningsperioden när versionen distribueras till flera steg som har olika kvarhållningsperioder?

Den sista kvarhållningsperioden bestäms av Dagar för att behålla inställningarna i alla faser där versionen distribueras, med hjälp av det maximala värdet mellan dessa steg. Minimiversioner att behålla är stegspecifika och ändras inte baserat på om en version har distribuerats till en eller flera faser. Behåll associerade artefakter gäller endast när en version distribueras till en fas där det alternativet är aktiverat.

Jag har tagit bort en etapp för vilken jag har några gamla versioner. Vilken lagring tillämpas för det här fallet?

När en fas har tagits bort gäller inte längre retentionsinställningarna på fasspecifik nivå. I så fall använder Azure DevOps standardinställningarna för kvarhållning på projektnivå.

Min organisation kräver att vi behåller byggdistributioner och versioner längre än vad som tillåts i inställningarna. Hur kan jag begära en längre kvarhållningstid?

Om du vill behålla en körning eller version som överstiger de konfigurerade kvarhållningsgränserna markerar du att den ska behållas på obestämd tid. Det finns ingen inställning för att manuellt konfigurera en längre kvarhållningsperiod. Kontakta supporten för Azure DevOps om du vill ha hjälp.

Du kan också använda REST-API:er för att ladda ned körningsinformation och artefakter och sedan lagra dem i ditt eget lagringskonto eller artefaktlagringsplats.

Jag förlorade några löprundor. Finns det något sätt att få dem tillbaka?

Om du tror att körningar har gått förlorade på grund av ett tjänstfel, skapa en supportbegäran omedelbart. Om en versionsdefinition togs bort manuellt mer än en vecka tidigare kan du inte återställa den. Om processer har tagits bort enligt kvarhållningsprincipen, kan de inte återställas.

Hur använder jag funktionen Build.Cleanup för agenter?

Genom att ställa in Build.Cleanup-funktionen på agenterna dirigeras endast rensningsuppgifter till dessa, vilket håller andra agenter tillgängliga för vanligt pipelinearbete. När en pipelinekörning tas bort rensas artefakter som lagras utanför Azure DevOps via ett agentjobb. Om rensningsjobben mättar poolen anger du en delmängd agenter som rensningsagenter. När några agenter har Build.Cleanup angetts kör endast dessa agenter rensningsjobb. Om du vill aktivera den här inställningen går du till Agentfunktioner> och angerBuild.Cleanup till .1

Vad händer med filer och artefakter när kompileringen tas bort?

När en version med filresursartefakter tas bort placeras en ny bygguppgift i kö på en byggagent för att rensa filerna. En agent väljs för att utföra den här uppgiften baserat på följande kriterier:

  • Finns det en agent med Build.Cleanup kapabilitet tillgänglig?
  • Är agenten som genomförde bygget tillgänglig?
  • Är en agent från samma pool tillgänglig?
  • Är en agent från en liknande pool tillgänglig?
  • Är någon agent tillgänglig?

Behålls automatiserade testresultat som publiceras som en del av en version tills versionen har tagits bort?

Testresultat som publicerats i en utgivningsfas behålls i enlighet med testkvarhållningsprincipen, inte principen för versionskvarhållning. Om du behöver behålla testresultaten så länge som versionen varar, ställ in automatisk kvarhållning av testkörningar i Project-inställningar till Aldrig ta bort. Den här inställningen säkerställer att testresultaten endast tas bort när versionen tas bort.

Tas manuella testresultat bort?

Nej. Manuella testresultat tas inte bort.

Hur gör jag för att bevara mina etiketter eller taggar för versionskontroll?

Om etiketter eller taggar måste bevaras efter att en version har tagits bort kan du använda dem i en pipelineaktivitet, lägga till dem manuellt utanför pipelinen eller behålla bygget på obestämd tid.

Viktigt!

Alla versionskontrolletiketter eller taggar som tillämpas under en bygg-pipeline som inte skapas automatiskt av aktiviteten Källor bevaras, även om bygget tas bort. Etiketter eller taggar som skapas automatiskt av aktiviteten Källor under en version behandlas som byggartefakter och tas bort med bygget.

Vad händer med pipelines som används i andra pipelines?

Klassiska versioner behåller pipelines som de förbrukar automatiskt.

Vad händer med pipelines som används i andra pipelines?

Klassiska versioner behåller pipelines som de förbrukar automatiskt. Om du använder YAML kan du också skapa en YAML-pipeline med flera versioner för att representera din version och använda en annan YAML-pipeline i den som en resurs. Resurspipelinen behålls automatiskt så länge versionspipelinen behålls.