Gestire il timeout di esecuzione dei task nelle pipeline di Azure DevOps

di Matteo Tumiati, in DevOps,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi