In una delle ultime release di Azure DevOps è stato rilasciato un nuovo task per le pipeline YAML chiamato ManualValidation: questo task è molto simile al ManualIntervention presente nelle release pipeline "classiche" e, di fatto, consente di effettuare le stesse operazioni, ovvero rimanere in attesa del completamento di una attività manuale. Sebbene, infatti, le pipeline prevedano tutta un'esecuzione automatica per minimizzare i rischi, aumentare il flusso di rilascio etc., talvolta non c'è niente di meglio che un bel controllo manuale prima di poter andare in produzione. Allo stesso modo, ci sono task che possono richiedere obbligatoriamente interventi manuali come, ad esempio, la configurazione di un proxy in una rete in cui l'agent di Azure DevOps non ha accesso o permessi per applicare le modifiche e così via.
Esattamente come per la controparte nelle pipeline di release, anche nelle pipeline YAML questo task deve obbligatoriamente essere eseguito in un ambiente serveless (senza un agent, dato che deve solamente attendere), in questo caso identificato dal pool server:
jobs: - job: A ... - job: Wait dependsOn: A pool: server timeoutInMinutes: 4320 # 3gg di timeout steps: - task: ManualValidation@0 timeoutInMinutes: 1440 # 1gg di timeout inputs: notifyUsers: | a@test.com b@test.com instructions: 'Per testare l'applicazione controllare X, Y e Z...' onTimeout: 'reject' - job: B dependsOn: Wait ...
I tre job, come possiamo vedere dall'esempio, sono concatenati, quindi fino a quando il job "Wait" non verrà validato (o rifiutato), il job "B" non sarà in grado di partire: in questa fase non verrà impegnato alcun agent perchè, appunto, il job gira in modalità agentless anche se manterrà tutte le caratteristiche tipiche di un normale job come il timeout (utile poi per capire l'azione da eseguire automaticamente), così come gli stati di uscita (se "Wait" fallisce, allora anche "B" terminerà a meno di esplicitare una condition differente). Essendo questo un job agentless, non possiamo però eseguire tutte le operazioni classiche di una pipeline ma l'uso è ristretto ad una serie specifica di task come chiamate REST, delay e query (sia di work item che di Azure Monitor).
Quando il task di ManualValidation entrerà in esecuzione, manderà immediatamente una mail a tutti gli utenti identificati dalla property notifyUsers e aspetterà una conferma sul da farsi prima di continuare o bloccarsi. Se la conferma non dovesse arrivare in tempo (specificato dal timeoutInMinutes), allora entrerà in gioco la property onTimeout che istruirà l'agent su come procedere (resume) o terminare la pipeline con una failure(reject). Le istruzioni specificate da instructions, invece, saranno visibili direttamente all'interno del tab "Review" della pipeline:
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
Potenziare Azure AI Search con la ricerca vettoriale
Copiare automaticamente le secret tra più repository di GitHub
Eseguire le GitHub Actions offline
Disabilitare automaticamente un workflow di GitHub
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Gestire liste di tipi semplici con Entity Framework Core
Eseguire attività con Azure Container Jobs
I più letti di oggi
- Utilizzare WebAssembly con .NET, ovunque
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Utilizzare il trigger SQL con le Azure Function
- Ottimizzazione dei block template in Angular 17
- Disabilitare automaticamente un workflow di GitHub (parte 2)