使用 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。
我正在尝试使用 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.
GET http://{instance}/{collection}/_gallery/items?itemName={publisher name}.{extension name}&install=true&installContext={Some context}
.
installContext不会改变,每次安装新扩展只需要在此处更改发布者名称和扩展名称:
在此之后,您可以使用“按名称安装扩展”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。