Abbiamo già visto in passato come sia semplice terminare l'esecuzione di un workflow di GitHub, in quel caso per non proseguire l'esecuzione e lanciare un errore qualora la soglia minima della code coverage non venga raggiunta (https://www.dopsitalia.com/script/78/Terminare-Esecuzione-Workflow-GitHub.aspx). In alcuni casi, però, può essere altrettanto utile cancellare un workflow in esecuzione, piuttosto che terminarlo con un errore.
Per terminare l'esecuzione del workflow in corso senza un codice di errore possiamo fare riferimento alla CLI e alle REST API di GitHub:
- name: Cancel run shell: bash run: | gh api --method POST -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" /repos/OWNER/REPO/actions/runs/${{ github.run_id }}/cancel
Come possiamo vedere, infatti, si è sufficiente specificare il nome del repository, l'owner dell'organizzazione e l'id della run in corso.
Poiché questo genere di cancellazione è di tipo "graceful", talvolta è possibile che non sia sufficiente a terminare per davvero l'esecuzione, che potrebbe bloccarsi. In questi casi possiamo terminare forzatamente l'esecuzione facendo la stessa chiamata ma rimandandola all'endpoint "force-cancel" anziché "cancel".
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Supportare la sessione affinity di Azure App Service con Application Gateway
Gestione degli stili CSS con le regole @layer
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Utilizzare Azure Cosmos DB con i vettori
Sostituire la GitHub Action di login su private registry
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Creare una libreria CSS universale - Rotazione degli elementi
Ottenere un token di accesso per una GitHub App
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Creare gruppi di client per Event Grid MQTT
Ottimizzare le performance usando Span<T> e il metodo Split
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow