In uno script precedente (https://www.dopsitalia.com/script/111/Disabilitare-Automaticamente-Workflow-GitHub.aspx) abbiamo visto come sia facile disabilitare automaticamente un workflow esistente. Questo, però, funziona solamente nel momento in cui il workflow è nello stato "Active", altrimenti la CLI di GitHub ci ritornerà un errore perché non abbiamo gestito opportunamente le chiamate. Di fatto, dobbiamo integrare lo script precedente con un po' di check di stato.
Non esiste un modo diretto per verificare che il workflow specifico sia in un attivo o disabilitato, perciò dobbiamo recuperare questa informazione da un'altra API (o comando della CLI):
gh workflow list --repo <org>/<repo-name> --all --json id,state --jq ".[] | select(.id == 1234) | .state"
Con una semplice query di JQ ci siamo estrapolati lo stato a partire dall'elenco completo dei workflow disponibili in un determinato repository. A questo punto, basta salvare questo valore in una variabile e controllare lo stato prima di procedere alla disabilitazione del workflow:
if [[ "$state" == "active" ]]; then echo "Disabling workflow..." gh workflow disable 1234 --repo <org>/<repo-name> else echo "Workflow 1234 is already disabled. Skipping..." fi
Per abilitarlo, invece, è sufficiente fare l'operazione contraria.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire script pre e post esecuzione di un workflow di GitHub
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Applicare un filtro per recuperare alcune issue di GitHub
Managed deployment strategy in Azure DevOps
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Creare un webhook in Azure DevOps
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Eseguire i worklow di GitHub su runner potenziati
Gestione dell'annidamento delle regole dei layer in CSS
.NET Aspire per applicazioni distribuite