使用 TFS 的 cURL 和 REST API 安装扩展时出现问题

Problem in using cURL and REST API of TFS to install extension

我正在尝试使用 TFS 2018 的 REST API 在 cURL 的帮助下在我们的服务器上安装扩展。这个过程必须每天重复,这就是为什么我想 运行 使用带有 cURL 的命令。

到目前为止,我想出了如何使用以下命令获取服务器上所有已安装扩展的列表。这告诉我连接和身份验证工作正常。

curl -u {username}:{PAT} -d "" -X GET http://{instance}/{collection}/_apis/extensionmanagement/installedextensions?api-version=4.1-preview.1

要安装扩展程序,我已从 Microsoft 文档中阅读了以下信息:https://docs.microsoft.com/en-us/rest/api/azure/devops/extensionmanagement/installed%20extensions/install%20extension%20by%20name?view=vsts-rest-tfs-4.1

我尝试制定一个命令来安装我在此处找到的扩展:https://marketplace.visualstudio.com/items?itemName=benjhuser.tfs-extensions-build-tasks

命令是:

curl -u {username}:{PAT} -H "Content-Type: application/json" -X POST http://{instance}/{collection}/_apis/extensionmanagement/installedextensionsbyname/benjhuser/tfs-extensions-build-tasks/3.0.14?api-version=4.1-preview.1

我认为扩展的发布者、id 和版本应该是正确的,因为我从这个发布文档中获取了它们:https://github.com/huserben/TfsExtensions/blob/master/BuildTasks/vss-extension.json.

响应说扩展名不存在。这令人困惑。有人可以给我一些提示,问题是什么?提前谢谢你。

{
  "$id": "1",
  "innerException": null,
  "message": "The requested extension 'benjhuser.tfs-extensions-build-tasks' doesn't exist.",
  "typeName": "Microsoft.VisualStudio.Services.Gallery.WebApi.ExtensionDoesNotExistException, Microsoft.VisualStudio.Services.Gallery.WebApi",
  "typeKey": "ExtensionDoesNotExistException",
  "errorCode": 0,
  "eventId": 3000
}

Install Extension By Name Rest API is used to Install pre-installed extensions. You need to add the extensions locally. Please refer to the document about Install extensions for on-premises servers.

请尝试以下步骤:

1.Open 浏览器的开发者工具(F12) 然后点击安装按钮。您可以在 URL. 中找到发布者名称和扩展名 2.Check 开发者工具 (F12) 中的网络选项卡。您可以找到像

这样的 REST API

GET http://{instance}/{collection}/_gallery/items?itemName={publisher name}.{extension name}&install=true&installContext={Some context}.

installContext不会改变,每次安装新扩展只需要在此处更改发布者名称和扩展名称: 3.Now,你可以在本地扩展中找到这个扩展。

在此之后,您可以使用“按名称安装扩展”API 来安装扩展。

步骤总结:

1.curl -u {username}:{PAT} -X GET http://{instance}/{collection}/_gallery/items?itemName=benjhuser.tfs-extensions-build-tasks&install=true&installContext={installContext}

2.curl -u {username}:{PAT} -d "" -H "Content-Type: application/json" -X POST http://{instance}/{collection}/_apis/extensionmanagement/installedextensionsbyname/benjhuser.tfs-extensions-build-tasks?api-version=4.1-preview.1

这是我的结果:

此外,Azure DevOps Services 可以直接使用按名称安装扩展API。