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 Azure AI Studio per testare i modelli AI
Implementare l'infinite scroll con QuickGrid in Blazor Server
Eseguire i worklow di GitHub su runner potenziati
Ottenere un token di accesso per una GitHub App
Rendere le variabili read-only in una pipeline di Azure DevOps
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Eseguire script pre e post esecuzione di un workflow di GitHub
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Gestione degli stili CSS con le regole @layer
Eliminare una project wiki di Azure DevOps
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste