In alcuni scenari potrebbe essere necessario dover fermare una build in corso. Alcuni esempi comprendono l'esecuzione in batch di determinati commit, tag di skip applicati dinamicamente sui commit, test di integrazione che falliscono, piuttosto che pipeline triggerate come risorse che hanno terminato la loro esecuzione con stato di failure e così via.
Purtroppo, non è possibile, secondo la documentazione, cancellare una build in corso. Tuttavia, c'è un workaround che consente di aggiornare lo stato della build sfruttando l'endpoint delle builds, come abbiamo visto negli script precedenti:
$uri = "https://dev.azure.com/$env:ORGANIZATION_NAME/$env:PROJECT_NAME/_apis/build/builds/$env:BUILD_ID?api-version=5.1" $json = @{ status = "Cancelling" } | ConvertTo-Json -Compress Invoke-RestMethod -Uri $uri -Method Patch -Headers @{Authorization = "Bearer $(System.AccessToken)"} -ContentType "application/json" -Body $json
Il trucco sta nell'aggiornare la build (identificata dalla variabile d'ambiente BUILD_ID) tramite chiamata REST, impostando tra le sue proprietà lo stato Cancelling. Una volta inviato il comando, la pipeline verrà terminata esattamente come quando procediamo manualmente all'operazione di cancellazione.
E' bene però sottolineare nuovamente che si tratta di un workaround e che, pertanto, questo esempio di codice potrebbe non funzionare più in futuro.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Disabilitare automaticamente un workflow di GitHub (parte 2)
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Managed deployment strategy in Azure DevOps
Generare la software bill of material (SBOM) in GitHub
Cancellare una run di un workflow di GitHub
Eliminare una project wiki di Azure DevOps
Potenziare la ricerca su Cosmos DB con Full Text Search
Creare una custom property in GitHub
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Creare un webhook in Azure DevOps