Ошибка обновления представления после публикации пакета Nuget через API - PullRequest
0 голосов
/ 05 мая 2020

Недавно мы обнаружили несколько конвейеров выпуска, которые использовали устаревшую версию nuget API для обновления представления в опубликованном пакете nuget (настройка Prerelease / Release в пакете). После обновления вызовов веб-службы в соответствии с API 5.1 мы получаем следующую ошибку при вызове этой веб-службы для установки атрибутов в опубликованном пакете

Веб-служба:

https://pkgs.dev.azure.com/<org_name>/_apis/packaging/feeds/<feed_name>/upack/packages/<package_name>/versions/2.0.20126.03?api-version=5.1-preview.1

Ошибка:

Указанная версия пакета недействительна. Версии универсального пакета должны быть версиями SemVer 2.0 в нижнем регистре без метаданных сборки. Версия пакета должна быть меньше 128 символов, а каждая из основных / второстепенных / патчей должна быть меньше или равна 2147483647

Я новичок в SemVer и публикую пакеты Nuget, есть идеи, как go о решении вопроса? Артефакт публикуется с номером версии, как указано выше 2.0.20126.03

Ответы [ 2 ]

0 голосов
/ 22 мая 2020
<feed_name>/upack/packages

upack означает универсальный пакет вместо пакета nuget, api rest, связанный с пакетом nuget: {feedId} / nuget / packages .

Для универсального пакета на основе этого документа: Publi sh Универсальный пакет

Имена пакетов должны быть в нижнем регистре и могут использовать только буквы, цифры и дефисы (-). Версии пакета должны быть в нижнем регистре Semanti c Versioning (SemVer) 2.0.0 без метаданных сборки (+ суффикс).

Ваша версия / имя недействительны, вы можете использовать 4.0.20126-0.3 или 4.0 .20126-3 вместо этого.

0 голосов
/ 12 мая 2020

Вы можете попробовать следующий сценарий в задаче powershell, чтобы проверить, работает ли он.

$token = "Enter your Pat here"

$url = "https://pkgs.dev.azure.com/OrgName/ProjectName/_apis/packaging/feeds/FeedID/nuget/packagesbatch?api-version=5.1-preview.1"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))

$JSON = @'
{
  "data": {
    "viewId": "Release"
  },
  "operation": 0,
  "packages": [{
    "id": "YourPackageName",
    "version": "PackageVersion",
    "protocolType": "nuget"
  }]
}
'@

$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -ContentType application/json -body $JSON

Вы можете установить PreRelease/Release в viewID для продвижения пакетов nuget в Azure DevOps feed view из @local до @pre-release до @release.

Кроме того, вы также можете попробовать Promote package to Release View extension для продвижения пакетов в ленте.

...