2

我们的项目目前正在使用 VSTS(Visual Studio Team Services)包在项目之间共享包。我们希望采用Release Views功能来挑选处于不同成熟阶段的包,以便自动发布到不同的环境。

虽然将包提升到特定视图非常容易,但我还没有找到从该视图取消提升包的方法。出于以下几个原因,可能需要这样做:

  1. 包裹被错误地提升了。
  2. 由于发现了一些问题,需要取消升级包,因此需要将其降级到较低的成熟度级别。

我没有通过 VSTS 用户界面找到直接的方法。我确实找到了一些通过 REST API 进行操作的文章,但看起来 Feed 下的当前 API不再支持这一点。

有谁知道如何实现这一目标?

4

1 回答 1

3

目前,没有办法在 VSTS 包管理中取消升级包。

并且我在 VSTS 包管理和更新 REST API 文档中发布了一个用户语音 Enable to unpromote package and update REST API document,它建议添加该功能以取消升级包并更新 REST API 文档。您可以投票并跟进。

以及用于推广 NuGet 包的 REST API 如下:

PATCH https://{account}.pkgs.visualstudio.com/DefaultCollection/_apis/packaging/feeds/{feedId}/nuget/packages/{packageId}/versions/{packageVersion}?api-version=5.0-preview.1

应用程序/json:

{
 "views": 
   { "op":"add", 
     "path":"/views/-", 
     "value":"release view" }
 }

笔记:

  • 对于请求 URLfeedIdpackageId在请求 URL 中,您可以改用提要名称和包名称。
  • 对于 REST API 版本,您还可以使用旧版本,例如3.0-preview.1.

如下例所示,在新提要中推广ConsoleApp1带有版本的 nuget 包以供查看,REST API 是(如果成功,则响应 202 Accepted 状态):1.5.0-alphapre

在此处输入图像描述

在此处输入图像描述

并使用PowerShell实现示例,脚本可以是:

$releaseViewURL = "https://marinaliu.pkgs.visualstudio.com/DefaultCollection/_apis/packaging/feeds/new/nuget/packages/ConsoleApp1/versions/1.5.0-alpha?api-version=5.0-preview.1"


$json = '
 {
 "views": 
 { "op":"add", 
 "path":"/views/-", 
 "value":"pre" }
 }
'
$bodyJson=$json | ConvertFrom-Json

$user="name"
$token="p1tjzehdq6tilwfjdbgbkymo3f3ojszmrlfgzh302fww6kgwnavq"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

$response = Invoke-RestMethod -Uri $releaseViewURL -Headers  @{Authorization=("Basic {0}" -f $base64AuthInfo)} -ContentType "application/json" -Method Patch -Body $bodyJson
于 2018-07-23T10:06:37.517 回答