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
Sostituire la GitHub Action di login su private registry
Applicare un filtro per recuperare alcune issue di GitHub
Referenziare un @layer più alto in CSS
.NET Conference Italia 2024
Migrare una service connection a workload identity federation in Azure DevOps
Recuperare l'ultima versione di una release di GitHub
Le novità di Angular: i miglioramenti alla CLI
La gestione della riconnessione al server di Blazor in .NET 9
Sfruttare al massimo i topic space di Event Grid MQTT
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8