In Azure DevOps, lo sappiamo, non è propriamente possibile avere dei template repository come, invece, è possibile avere in GitHub. Questi repository, infatti, non sono nient'altro che una sorta di placeholder che può essere riutilizzato per quando vogliamo creare un nuovo progetto e partire da una base di codice già esistente. Tuttavia, un comportamento simile è facilmente realizzabile creando qualche pipeline di Azure DevOps che faccia tutto il setup/clone dei repository ed eventuali configurazione (ad esempio permessi per gli utenti, package registry e così via...).
Rimane un punto aperto riguardo le pipeline. Come già sappiamo, ora le pipeline vengono create principalmente come codice YAML che, però, contiene solamente la definizione. Pertanto, rimane necessario poter creare una pipeline a partire da del codice YAML pre-esistente. Tramite le API di Azure DevOps è possibile chiamare l'endpoint seguente:
$url = "https://dev.azure.com/{organization}/{projectName}/_apis/git/repositories?api-version=6.0" Invoke-RestMethod $url -Method GET -Headers @{Authorization=("Bearer {0}" -f $env:SYSTEM_ACCESSTOKEN);}
Leggendo la documentazione, però, ci sono un po' di parti mancanti per quanto riguarda il body da dover passare in ingresso all'API di riferimento che è il seguente:
{ "folder": null, "name": "la-mia-pipeline", "configuration": { "type": "yaml", "path": "/path-to-pipeline-from-root-of-the-repository.yml", "repository": { "id": "guid-of-repo-id", "name": "my-repo", "type": "azureReposGit" } } }
Infatti, oltre a quello specificato nella documentazione ufficiale (https://docs.microsoft.com/en-us/rest/api/azure/devops/pipelines/pipelines/create?view=azure-devops-rest-6.0), manca completamente la definizione del nodo configuration che non descrive affatto dove si trova la pipeline definition in YAML e in quale repository vive. Seguendo il codice di questo script dovrebbe essere abbastanza intuitivo poter lanciare una chiamata corrispondente e trovarsi, di fatto, la nuova pipeline creata. Eventualmente, è anche possibile specificare una folder di riferimento qualora abbiamo più pipeline raggruppate e ordinate.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Eseguire attività basate su eventi con Azure Container Jobs
Generare file PDF da Blazor WebAssembly con iText
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Migrare una service connection a workload identity federation in Azure DevOps
Limitare le richieste lato server con l'interactive routing di Blazor 8
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Paginare i risultati con QuickGrid in Blazor