In onprem Azure DevOps (Version 17.143.28621.4) is there a way to automatically promote a nuget package from one view to another using a task in a release definition?
<
The following powershell script you can use to promote multiple packages. This script assumes that all packages have the same version (one product consisting of several packages). It is working fine with our "DevOps Server 2019".
param(
[Parameter(Mandatory=$True)]
[string]$tfsCollectionUri,
[Parameter(Mandatory=$True)]
[string]$feedName,
[Parameter(Mandatory=$True)]
[string]$packageVersion,
[Parameter(Mandatory=$True)]
[string]$packageQuality
)
$ErrorActionPreference = "Stop"
[regex]$nameExpression = "(?[^0-9]*)\."
$json = '{ "views": { "op":"add", "path":"/views/-", "value":"' + $packageQuality + '" } }'
Write-Verbose -Message $json
Get-ChildItem . -Filter *.nupkg | Foreach-Object {
$matches = $nameExpression.Match($_.Name)
$packageName = $matches.groups['name']
$requestUri = $tfsCollectionUri + "/_apis/packaging/feeds/$feedName/nuget/packages/$packageName/versions/$packageVersion" + "?api-version=5.0-preview.1"
Write-Verbose -Message $requestUri
$reponse = Invoke-RestMethod -Uri $requestUri -UseDefaultCredentials -ContentType "application/json" -Method Patch -Body $json
Write-Verbose -Message "Response: '$reponse'"
}
The parameter packageQuality should be e.g. "Release" or "Prerelease", without leading "@".
Many thanks to Shayki Abramczyk for the tip in the right direction.