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
Usare lo spread operator con i collection initializer in C#
Code scanning e advanced security con Azure DevOps
Eseguire script pre e post esecuzione di un workflow di GitHub
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Gestire domini wildcard in Azure Container Apps
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Creare una custom property in GitHub
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Generare la software bill of material (SBOM) in GitHub
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
.NET Conference Italia 2024
I più letti di oggi
- Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
- Creare una libreria CSS universale: Cards
- Eseguire script pre e post esecuzione di un workflow di GitHub