Impostare criteri di conservazione per compilazioni, versioni e test

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

I criteri di conservazione consentono di impostare il tempo di mantenimento delle esecuzioni, delle versioni e dei test archiviati nel sistema. Per risparmiare spazio di archiviazione, è necessario eliminare esecuzioni, test e versioni precedenti.

I criteri di conservazione seguenti sono disponibili in Azure DevOps nelle impostazioni del progetto:

  1. Pipeline : specificare per quanto tempo mantenere elementi, simboli, allegati, esecuzioni e esecuzioni di richieste pull.
  2. Versione (versione classica) - Impostare se salvare le compilazioni e visualizzare le impostazioni di conservazione predefinite e massime.
  3. Test : impostare per quanto tempo mantenere le esecuzioni, i risultati e gli allegati automatizzati e manuali dei test.

Criteri di conservazione delle impostazioni del progetto

Nota

Se si usa un server locale, è anche possibile specificare le impostazioni predefinite dei criteri di conservazione per un progetto e quando le versioni vengono eliminate definitivamente. Altre informazioni sulla conservazione delle versioni più avanti in questo articolo.

Prerequisiti

Per impostazione predefinita, i membri dei gruppi Collaboratori, Amministratori di build, Amministratori di progetto e Amministratori di versione possono gestire i criteri di conservazione.

Per gestire i criteri di conservazione si deve disporre di una delle sottoscrizioni seguenti:

È anche possibile acquistare l'accesso mensile ad Azure Test Plans e assegnare il livello di accesso Basic + Test Plans. Vedere Test dell'accesso per ruolo utente.

Configurare i criteri di conservazione

  1. Accedere al progetto.

  2. Passare alla icona a forma di ingranaggio scheda Impostazioni delle impostazioni del progetto.

  3. Selezionare Conservazione versioni in Pipeline o Conservazione in Test.

    • Selezionare Conservazione rilascio per configurare i criteri di conservazione delle versioni e configurare quando eliminare o eliminare definitivamente le versioni.
    • Selezionare Conservazione per configurare per quanto tempo mantenere esecuzioni di test manuali e automatizzate.

    Screenshot delle impostazioni di conservazione nelle impostazioni di Project per DevOps 2019.

Configurare i criteri di conservazione

  1. Accedere al progetto.

  2. Passare alla icona a forma di ingranaggio scheda Impostazioni delle impostazioni del progetto.

  3. Selezionare Impostazioni o Conservazione versioni in Pipeline o Conservazione in Test.

    • Selezionare Impostazioni per configurare i criteri di conservazione per esecuzioni, artefatti, simboli, allegati e esecuzioni di richieste pull.
    • Selezionare Conservazione rilascio per configurare i criteri di conservazione delle versioni e configurare quando eliminare o eliminare definitivamente le versioni.
    • Selezionare Conservazione per configurare per quanto tempo mantenere esecuzioni di test manuali e automatizzate.

    Screenshot delle impostazioni di conservazione nelle impostazioni di Project.

Importante

Azure Pipelines non supporta più i criteri di conservazione per pipeline. È consigliabile usare regole di conservazione a livello di progetto.

Impostare i criteri di conservazione delle esecuzioni

Nella maggior parte dei casi, non è necessario conservare le esecuzioni completate più a lungo di un determinato numero di giorni. Usando i criteri di conservazione, è possibile controllare il numero di giorni in cui si vuole mantenere ogni esecuzione prima di eliminarla.

  1. Passare alla icona a forma di ingranaggio scheda Impostazioni delle impostazioni del progetto.

  2. Selezionare Impostazioni nella sezione Pipeline.

    • Impostare il numero di giorni per mantenere elementi, simboli e allegati.
    • Impostare il numero di giorni per mantenere le esecuzioni
    • Impostare il numero di giorni per mantenere le esecuzioni delle richieste pull
    • Impostare il numero di esecuzioni recenti da mantenere per ogni pipeline

Avviso

Azure DevOps non supporta più le regole di conservazione per pipeline. L'unico modo per configurare i criteri di conservazione per le pipeline YAML e classiche consiste nell'usare le impostazioni del progetto descritte in precedenza. Non è più possibile configurare i criteri di conservazione per pipeline.

L'impostazione per il numero di esecuzioni recenti da mantenere per ogni pipeline richiede una spiegazione più dettagliata. L'interpretazione di questa impostazione varia in base al tipo di repository compilato nella pipeline.

  • Azure Repos: Azure Pipelines mantiene il numero configurato di esecuzioni più recenti per il ramo predefinito della pipeline e per ogni ramo protetto del repository. Un ramo con criteri di ramo configurati viene considerato un ramo protetto.

    Si consideri ad esempio un repository con due rami e main release. Si supponga che pipeline's default branch sia il main ramo e che il release ramo abbia un criterio di ramo, rendendolo un ramo protetto. In questo caso, se i criteri sono stati configurati per conservare tre esecuzioni, vengono mantenute entrambe le tre esecuzioni più recenti e main le tre esecuzioni più recenti del release ramo. Inoltre, vengono mantenute anche le tre esecuzioni più recenti di questa pipeline (indipendentemente dal ramo).

    Per chiarire ulteriormente questa logica, si supponga che l'elenco delle esecuzioni per questa pipeline sia il seguente, con l'esecuzione più recente nella parte superiore. La tabella mostra le esecuzioni che verranno mantenute se è stato configurato per conservare le tre esecuzioni più recenti (ignorando l'effetto del numero di giorni impostato):

    Correre # Ramo Conservato/Non conservato Perché?
    Esecuzione 10 main Conservato Ultime 3 per main e Latest 3 for pipeline
    Esecuzione 9 Branch1 Conservato Più recente 3 per la pipeline
    Esecuzione 8 Branch2 Conservato Più recente 3 per la pipeline
    Esecuzione 7 main Conservato Ultime 3 per main
    Esecuzione 6 main Conservato Ultime 3 per main
    Esecuzione 5 main Non conservato Né la versione più recente 3 per main, né per la pipeline
    Esecuzione 4 main Non conservato Né la versione più recente 3 per main, né per la pipeline
    Esecuzione 3 Branch1 Non conservato Né la versione più recente 3 per main, né per la pipeline
    Esecuzione 2 release Conservato Più recente 3 per la versione
    Esecuzione 1 main Non conservato Né la versione più recente 3 per main, né per la pipeline
  • Tutti gli altri repository Git: Azure Pipelines mantiene il numero configurato di esecuzioni più recenti per l'intera pipeline.

  • TFVC: Azure Pipelines mantiene il numero configurato di esecuzioni più recenti per l'intera pipeline, indipendentemente dal ramo.

Quali parti dell'esecuzione vengono eliminate

Quando un'esecuzione viene eliminata, vengono eliminate le informazioni seguenti:

  • Registri
  • Tutti gli artefatti della pipeline e della compilazione
  • Tutti i simboli
  • File binari
  • Risultati del test
  • Eseguire i metadati
  • Etichette di origine (TFVC) o tag (Git)

I pacchetti universali, NuGet, npm e altri pacchetti non sono associati alla conservazione delle pipeline.

Quando vengono eliminate le esecuzioni

I criteri di conservazione vengono elaborati una volta al giorno. Ora in cui i criteri ottengono variabili elaborate perché si distribuisce il lavoro durante il giorno per scopi di bilanciamento del carico. Non è possibile modificare questo processo.

Un'esecuzione viene eliminata se tutte le condizioni seguenti sono vere:

  • Supera il numero di giorni configurati nelle impostazioni di conservazione
  • Non è una delle esecuzioni recenti configurate nelle impostazioni di conservazione
  • Non è contrassegnato per essere conservato a tempo indeterminato
  • Non viene conservato da una versione

Impostare automaticamente il lease di conservazione nelle esecuzioni della pipeline

I lease di conservazione vengono usati per gestire la durata delle esecuzioni della pipeline oltre i periodi di conservazione configurati. I lease di conservazione possono essere aggiunti o eliminati in un'esecuzione della pipeline chiamando l'API lease. Questa API può essere richiamata all'interno della pipeline usando uno script e usando variabili predefinite per runId e definitionId.

È possibile aggiungere un lease di conservazione in un'esecuzione della pipeline per un periodo specifico. Ad esempio, un'esecuzione della pipeline che viene distribuita in un ambiente di test può essere mantenuta per un periodo di tempo più breve mentre una distribuzione in esecuzione nell'ambiente di produzione può essere mantenuta più a lungo.

Impostare manualmente il lease di conservazione sulle esecuzioni della pipeline

È possibile impostare manualmente un'esecuzione della pipeline da conservare usando il menu Altre azioni nella pagina Dettagli esecuzione pipeline.

conservare manualmente un'esecuzione

Eliminare un'esecuzione

È possibile eliminare le esecuzioni usando il menu Altre azioni nella pagina Dettagli esecuzione pipeline.

Nota

Se all'esecuzione si applicano criteri di conservazione, è necessario rimuoverli prima che l'esecuzione possa essere eliminata. Per istruzioni, vedere Dettagli esecuzione della pipeline: eliminare un'esecuzione.

eliminare un'esecuzione

Impostare i criteri di conservazione delle versioni

I criteri di conservazione delle versioni per una pipeline di versione classica determinano per quanto tempo viene mantenuta una versione e l'esecuzione collegata. Usando questi criteri, è possibile controllare il numero di giorni in cui si vuole mantenere ogni versione dopo l'ultima modifica o la distribuzione e il numero minimo di versioni da conservare per ogni pipeline.

Il timer di conservazione in una versione viene reimpostato ogni volta che una versione viene modificata o distribuita in una fase. Il numero minimo di versioni da mantenere ha la precedenza sul numero di giorni. Ad esempio, se si specifica di conservare almeno tre versioni, le tre più recenti verranno mantenute per un periodo illimitato, indipendentemente dal numero di giorni specificato. Tuttavia, è possibile eliminare manualmente queste versioni quando non sono più necessarie. Per altre informazioni sul funzionamento della conservazione delle versioni, vedere le domande frequenti seguenti.

In qualità di autore di una pipeline di versione, è possibile personalizzare i criteri di conservazione per le versioni della pipeline nella scheda Conservazione .

I criteri di conservazione per YAML e le pipeline di compilazione sono gli stessi. È possibile visualizzare le impostazioni di conservazione della pipeline in Impostazioni progetto per le pipeline nella sezione Impostazioni .

Criteri di conservazione delle versioni globali

Se si usa un Team Foundation Server locale o Azure DevOps Server, è possibile specificare i valori predefiniti e i valori massimi dei criteri di conservazione delle versioni per un progetto. È anche possibile specificare quando le versioni vengono eliminate definitivamente (rimosse dalla scheda Eliminato in Esplora compilazioni).

Impostazioni di conservazione delle versioni locali

Se si usa Azure DevOps Services, è possibile visualizzare ma non modificare queste impostazioni per il progetto.

Le impostazioni dei criteri di conservazione delle versioni globali possono essere esaminate dalle impostazioni di conservazione delle versioni del progetto:

  • Azure DevOps Services: https://dev.azure.com/{organization}/{project}/_settings/release?app=ms.vss-build-web.build-release-hub-group
  • Locale: https://{your_server}/tfs/{collection_name}/{project}/_admin/_apps/hub/ms.vss-releaseManagement-web.release-project-admin-hub

Il criterio di conservazione massimo imposta il limite massimo per quanto tempo è possibile conservare le versioni per tutte le pipeline di versione. Gli autori di pipeline di versione non possono configurare le impostazioni per le definizioni oltre i valori specificati qui.

I criteri di conservazione predefiniti impostano i valori di conservazione predefiniti per tutte le pipeline di versione. Gli autori di pipeline di compilazione possono eseguire l'override di questi valori.

I criteri di distruzione consentono di mantenere le versioni per un determinato periodo di tempo dopo l'eliminazione. Questo criterio non può essere sottoposto a override nelle singole pipeline di versione.

Impostare criteri di conservazione a livello di raccolta

Per i server locali, è anche possibile impostare i criteri di conservazione a livello di raccolta con regole di conservazione personalizzate. Questi criteri di conservazione si applicano alle pipeline di compilazione classiche. La pagina in https://{your_server}/{collection_name}/_settings/buildqueue controlla i valori massimi e i valori predefiniti.

Screenshot che mostra come configurare i criteri di conservazione a livello di raccolta.

Usare l'attività Copia file per salvare i dati più a lungo

È possibile usare l'attività Copia file per salvare i dati di compilazione e artefatto per più tempo rispetto a quelli impostati nei criteri di conservazione. L'attività Copia file è preferibile all'attività Pubblica artefatti di compilazione perché i dati salvati con l'attività Pubblica artefatti di compilazione verranno puliti ed eliminati periodicamente.

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

Domande frequenti

Se si contrassegna un'esecuzione o una versione da conservare per un periodo illimitato, i criteri di conservazione vengono ancora applicati?

No. Non vengono applicati né i criteri di conservazione della pipeline né i limiti massimi impostati dall'amministratore quando si contrassegna un'esecuzione o una versione singola da conservare per un periodo illimitato. Rimarrà fino a quando non si smetterà di conservarlo indefinito.

Ricerca per categorie specificare che le esecuzioni distribuite nell'ambiente di produzione verranno mantenute più a lungo?

Se si usano le versioni classiche per la distribuzione nell'ambiente di produzione, personalizzare i criteri di conservazione nella pipeline di versione. Specificare il numero di giorni di conservazione delle versioni distribuite nell'ambiente di produzione. Inoltre, indicare che le esecuzioni associate a tale versione devono essere mantenute. In questo modo verrà eseguito l'override dei criteri di conservazione delle esecuzioni.

Se si usano pipeline YAML a più fasi per la distribuzione nell'ambiente di produzione, l'unico criterio di conservazione che è possibile configurare si trova nelle impostazioni del progetto. Non è possibile personalizzare la conservazione in base all'ambiente in cui viene distribuita la compilazione.

Non ho contrassegnato le esecuzioni da conservare a tempo indeterminato. Tuttavia, vedo un numero elevato di esecuzioni mantenute. Come posso prevenire questo problema?

Questo potrebbe essere per uno dei motivi seguenti:

  • Le esecuzioni sono contrassegnate da un utente nel progetto da conservare per un periodo illimitato.
  • Le esecuzioni vengono utilizzate da una versione e la versione contiene un blocco di conservazione per queste esecuzioni. Personalizzare i criteri di conservazione delle versioni come illustrato in precedenza.

Se si ritiene che le esecuzioni non siano più necessarie o se le versioni sono già state eliminate, è possibile eliminare manualmente le esecuzioni.

Come funziona l'impostazione 'minimum releases to keep'?

Le versioni minime da mantenere sono definite a livello di fase. Indica che Azure DevOps manterrà sempre il numero specificato di versioni distribuite per una fase anche se le versioni non rientrano nel periodo di conservazione. Una versione verrà considerata con le versioni minime da mantenere per una fase solo quando la distribuzione è iniziata in tale fase. Le distribuzioni riuscite e non riuscite vengono considerate. Le versioni in attesa di approvazione non vengono considerate.

Come viene deciso il periodo di conservazione quando il rilascio viene distribuito in più fasi con un periodo di conservazione diverso?

Il periodo di conservazione finale viene deciso considerando i giorni per conservare le impostazioni di tutte le fasi in cui viene distribuita la versione e richiedendo max days per mantenerle tra di esse. Le versioni minime da mantenere sono regolate a livello di fase e non cambiano in base al rilascio distribuito in più fasi o meno. Conservare gli artefatti associati sarà applicabile quando la versione viene distribuita in una fase per cui è impostata su true.

Ho eliminato una fase per cui ho alcune versioni precedenti. Quale conservazione verrà considerata per questo caso?

Quando la fase viene eliminata, le impostazioni di conservazione a livello di fase non sono applicabili ora. Azure DevOps eseguirà il fallback alla conservazione predefinita a livello di progetto per questo caso.

L'organizzazione richiede di conservare le build e le versioni più a lungo di quelle consentite nelle impostazioni. Come è possibile richiedere un periodo di conservazione più lungo?

L'unico modo per conservare un'esecuzione o una versione più lunga di quella consentita tramite le impostazioni di conservazione è contrassegnarla manualmente per essere mantenuta a tempo indeterminato. Non è possibile configurare manualmente un'impostazione di conservazione più lunga. Per assistenza, contattare il supporto di Azure DevOps.

È anche possibile esplorare la possibilità di usare le API REST per scaricare informazioni e artefatti sulle esecuzioni e caricarli nel proprio repository di archiviazione o artefatto.

Ho perso qualche esecuzione. È possibile recuperarle?

Se si ritiene di aver perso le esecuzioni a causa di un bug nel servizio, creare immediatamente un ticket di supporto per recuperare le informazioni perse. Se una definizione di compilazione è stata eliminata manualmente più di una settimana prima, non sarà possibile recuperarla. Se le esecuzioni sono state eliminate come previsto a causa di un criterio di conservazione, non sarà possibile recuperare le esecuzioni perse.

Ricerca per categorie usare la Build.Cleanup funzionalità degli agenti?

Se si imposta una Build.Cleanup funzionalità sugli agenti, i processi di pulizia del pool verranno indirizzati solo a tali agenti, lasciando il resto libero di svolgere regolarmente il lavoro. Quando viene eliminata un'esecuzione della pipeline, gli artefatti archiviati all'esterno di Azure DevOps vengono puliti tramite un processo eseguito sugli agenti. Quando il pool di agenti viene saturo con i processi di pulizia, questo può causare un problema. Soluzione a che consiste nel designare un subset di agenti nel pool che sono gli agenti di pulizia. Se sono stati Build.Cleanup impostati agenti, solo gli agenti eseguiranno i processi di pulizia, lasciando liberi gli altri agenti di continuare a eseguire i processi della pipeline. La funzionalità Pulizia può essere abilitata passando a Funzionalità agente>e impostando Build.Cleanup su .1

Cosa accade alla condivisione file Artifacts quando la compilazione viene eliminata

Quando viene eliminata una compilazione con condivisione file Artifacts, una nuova attività di compilazione viene accodata in un agente di compilazione per pulire tali file. Viene selezionato un agente per eseguire questa attività in base ai criteri seguenti: è disponibile un agente con Build.Cleanup funzionalità? L'agente che ha eseguito la compilazione è disponibile? È disponibile un agente dello stesso pool? È disponibile un agente da un pool simile? È disponibile un agente?

I risultati dei test automatizzati pubblicati come parte di una versione vengono mantenuti fino all'eliminazione della versione?

I risultati dei test pubblicati all'interno di una fase di una versione vengono mantenuti come specificato dai criteri di conservazione configurati per i risultati del test. I risultati del test non vengono conservati fino a quando non viene mantenuta la versione. Se sono necessari i risultati del test purché la versione venga rilasciata, impostare le impostazioni di conservazione per le esecuzioni automatizzate dei test nelle impostazioni di Project di conseguenza su Mai eliminare. In questo modo, i risultati del test vengono eliminati solo quando la versione viene eliminata.

I risultati dei test manuali vengono eliminati?

No. I risultati dei test manuali non vengono eliminati.

Come mantenere le etichette o i tag del controllo della versione?

Attenzione

Tutte le etichette o i tag di controllo della versione applicati durante una pipeline di compilazione che non vengono creati automaticamente dall'attività Origini verranno mantenuti, anche se la compilazione viene eliminata. Tutte le etichette o i tag del controllo della versione creati automaticamente dall'attività Origini durante una build vengono tuttavia considerati parte degli artefatti della compilazione e verranno eliminati quando la build viene eliminata.

Se è necessario mantenere le etichette o i tag del controllo della versione, anche quando la build viene eliminata, sarà necessario applicarli come parte di un'attività nella pipeline, etichettata manualmente all'esterno della pipeline oppure la build dovrà essere mantenuta per un tempo indefinito.

Cosa accade alle pipeline utilizzate in altre pipeline?

Le versioni classiche mantengono le pipeline utilizzate automaticamente.

Cosa accade alle pipeline utilizzate in altre pipeline?

Le versioni classiche mantengono le pipeline utilizzate automaticamente. Se si usa YAML, è anche possibile creare una pipeline YAML a più fasi per rappresentare la versione e utilizzare un'altra pipeline YAML in essa come risorsa. La pipeline di risorse verrà mantenuta automaticamente finché la pipeline di versione viene mantenuta.