首页 > 解决方案 > 使用 TFS 的 cURL 和 REST API 安装扩展时出现问题

问题描述

我正在尝试使用 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 doc 阅读此信息: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
}

标签: curltfsazure-devopsazure-devops-rest-apiazure-devops-extensions

解决方案


Install Extension By Name Rest API 用于安装预安装的扩展。您需要在本地添加扩展。请参阅有关为本地服务器安装扩展的文档。

请尝试以下步骤:

1.打开浏览器的开发者工具(F12),点击安装按钮。您可以在 URL 中找到发布者名称和扩展名。在此处输入图像描述 2.检查开发者工具中的网络选项卡(F12)。您可以找到类似的 REST API

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

installContext 不会改变,每次安装新扩展时只需要在此处更改发布者名称和扩展名: 在此处输入图像描述 3.现在,您可以在本地扩展中找到此扩展。 在此处输入图像描述

在此之后,您可以使用按名称安装扩展 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 可以直接使用 Install Extension By Name API。


推荐阅读