Quando abbiamo a che fare con i pacchetti di NuGet, di npm o altro all'interno di Azure DevOps, quasi sicuramente ci ritroviamo ad utilizzare anche la parte dedicata ad Azure Artifacts. Questa sezione di Azure DevOps ci consente di creare delle viste, per evidenziare lo stato in cui si trovano i nostri pacchetti che, magari, abbiamo costruito all'interno di una qualche pipeline: ad esempio, potrebbe essere utile avere una vista per tenere i pacchetti in versione alpha, una per tenere i pacchetti in prerelease e, infine, una terza vista per tenere solamente le dipendenze che vogliamo rilasciare in maniera stabile.
Azure DevOps ci consente di promuovere i pacchetti tra una vista e l'altra tramite il portale. Tuttavia, probabilmente vogliamo questo comportamento integrato con le pipeline che lo hanno generato e caricato dentro Azure Artifacts stesso, pertanto ci serve un sistema per automatizzare il processo. Grazie all'estensione Azure DevOps, possiamo fare uso delle sue REST API per chiamare un endpoint dedicato alla gestione delle dipendenze:
$feedView = "my-feed-view" $json = @{ "packages"= @( @{ id= 'PackageName' version= 'PackageVersion' } ) "operation" = "promote" "data" = @{ viewId= $feedView } } $body = ConvertTo-Json -InputObject $json $uri = 'https://pkgs.dev.azure.com/$org/$project/_apis/packaging/feeds/$feedName/nuget/packagesbatch?api-version=5.0-preview.1' Invoke-RestMethod $uri -Method POST -Body $body -Headers @{Authorization=("Bearer {0}" -f $env:SYSTEM_ACCESSTOKEN); "content-type" = "application/json"} Write-Host "##vso[task.complete result=Succeeded;]Promote succeeded"
Questo endpoint può lavorare i pacchetti anche a batch, così da poter risparmiare sul numero di request in caso in cui dobbiamo promuovere più pacchetti contemporaneamente, e accetta in ingresso un payload in cui dobbiamo solamente specificare il nome del package e la sua versione, oltre che al tipo di operazione che vogliamo fare (tra le altre una remove) e verso quale feed (o view).
Questa chiamata richiede l'autenticazione verso Azure DevOps e, questo, possiamo ottenerlo sfruttando l'access token generato dalla pipeline, ovvero SYSTEM_ACCESSTOKEN. Dalla pipeline, possiamo invocare questo script di PowerShell (ma lo stesso può avvenire anche per Bash, PowerShell Core etc.), tramite questo script:
- pwsh: | # Lo script precedente qui, oppure referenziato tramite file path displayName: Promote NuGet packages env: SYSTEM_ACCESSTOKEN: $(SYSTEM.ACCESSTOKEN)
E' bene ricordare che, sebbene sia possibile promuovere un pacchetto, non è possibile effettuare l'operazione contraria e che, il numero di versione, deve essere univoco al momento dell'ingestion nel sistema di Azure Artifacts, altrimenti verrà generato un errore 409 (Conflict) in risposta alla request sull'API.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Abilitare Hot Module Replacement in Angular
Rigenerare il database negli integration test di ASP.NET Core
#devops for any developer with #github sta per cominciare. Seguite @xTuMiOx live su http://aspit.co/ReBuild-20 #aspilive
Creare un componente Button in Blazor per operazioni asincrone
Condividere una variabile tra stage in una pipeline YAML di Azure DevOps
Esecuzione condizionale dei task nelle pipeline YAML di Azure DevOps
Introduzione a GitHub
Produrre e condividere una variabile tra step in una pipeline YAML di Azure DevOps
Azure loves Docker: non solo AKS
Rinominare tabelle e colonne durante il reverse engineering con EF Core Power Tools
Gestire parametri opzionali nel routing di Blazor
Keep Calm and Distributed Tracing
I più letti di oggi
- Modificare la modalità di esecuzione delle query con Include in Entity Framework Core 5
- Le novità di Entity Framework Core 5
- Autenticazione con JWT Token e ASP.NET Core Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Creare un web server locale con LiveReload
- Effettuare l'upload di un file da Blazor su Azure Blob Storage
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Tracciabilità dei work item nel ciclo di vita del software con Azure DevOps