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
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Usare una container image come runner di GitHub Actions
Utilizzare domini personalizzati gestiti automaticamente con Azure Container Apps
Reactive form tipizzati con modellazione del FormBuilder in Angular
Utilizzare le collection expression in C#
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Potenziare Azure AI Search con la ricerca vettoriale
Migrare una service connection a workload identity federation in Azure DevOps
Eseguire una GroupBy per entity in Entity Framework
Evitare la script injection nelle GitHub Actions
Generare token per autenicarsi sulle API di GitHub
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
I più letti di oggi
- I nuovi metodi degli array di ECMAScript 5
- Evitare (o ridurre) il repo-jacking sulle GitHub Actions
- Un custom control BoundField con dropdownlist
- .NET Core 3, C#8 and beyond
- Utilizzare long polling in HTML5 per richieste in real time
- Utilizzare le shortcut da tastiera con KeyboardAccelerator nella Universal Windows Platform
- Microsoft Security Bulletin MS05-048