Tutte le pipeline che andiamo a creare all'interno di Azure DevOps hanno chiaramente durata differente in base al numero e alla complessità degli step che contengono per realizzare un determinato obiettivo predisposto dalla pipeline stessa. Azure DevOps applica alcuni meccanismi di protezione che impediscono ai task di essere eseguiti troppo a lungo: infatti, superati i limiti di default, i task verranno automaticamente cancellati dal servizio per evitare di incorrere in problemi come costi esagerati, per quanto riguarda i consumi su hosted-agents, piuttosto che servizi in stallo su agent di tipo self-hosted.
Il timeout, ovvero il tempo massimo di esecuzione per i task prima che Azure DevOps inizi la cancellazione (a partire da quando il job viene eseguito, non messo in coda), se non impostato a livello di job, come vedremo a breve, è fissato a 60 minuti. Se viene impostato al valore zero, però, non significa che i task verranno subito cancellati ma, anzi, avrà un valore differente in base alla tipologia di agent che stiamo referenziando dal job stesso. Esso assumerà una durata di:
- 6 ore per hosted-agent che sono associati a progetti/repository pubblici;
- 60 minuti per hosted-agents che sono associati a progetti/repository privati (se non si è pagato per una capacity differente);
- illimitata su agent self-hosted;
Per poter modificare il valore di default, a livello di pipeline YAML non dovremo fare altro che impostare la proprietà timeoutInMinutes impostandola al valore desiredato:
jobs: - job: Test timeoutInMinutes: X cancelTimeoutInMinutes: Y
Allo stesso modo, la proprietà cancelTimeoutInMinutes andrà ad impostare un limite differente di timeout sull'esecuzione del task una volta che il precedente (o il task stesso) è stato cancellato. Supponendo, ad esempio, che il task A duri più del periodo impostato da timeoutInMinutes, Azure DevOps cercherà di terminare il task in modalità graceful ma, se questo non dovesse terminare entro il periodo indicato da cancelTimeoutInMinutes, impostato ad un periodo di default di 5 minuti, Azure DevOps effettuerà una chiusura forzata.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Routing statico e PreRendering in una Blazor Web App
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Criptare la comunicazione con mTLS in Azure Container Apps
Creare una custom property in GitHub
Eseguire i worklow di GitHub su runner potenziati
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Eseguire script pre e post esecuzione di un workflow di GitHub
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Proteggere le risorse Azure con private link e private endpoints
Estrarre dati randomici da una lista di oggetti in C#
Installare le Web App site extension tramite una pipeline di Azure DevOps
Evitare la script injection nelle GitHub Actions