我有以下脚本用于更新 ADO 发布管道中的 MS Fabric 工作区。这不起作用。此外,身份验证是在服务主体上针对令牌进行的。
$accessToken = "$(accessToken)" # Use the token from pipeline variables
$headers = @{
Authorization = "Bearer $accessToken"
"Content-Type" = "application/json"
}
$apiUrl = "https://api.fabric.microsoft.com/core/git/update-from-git?workspaceId=<workspace-id>&itemId=<item-id>"
$body = @{
gitBranch = "feature"
} | ConvertTo-Json -Depth 10
$response = Invoke-RestMethod -Uri $apiUrl -Method Post -Headers $headers -Body $body
Write-Output $response
错误:
2025-03-05T17:37:34.2927854Z Invoke-RestMethod :
2025-03-05T17:37:34.2928743Z Not Found
2025-03-05T17:37:34.2930059Z Not Found
2025-03-05T17:37:34.2931039Z HTTP Error 404. The requested resource is not found.
2025-03-05T17:37:34.2932857Z At D:\a\_temp\.ps1:16 char:13
2025-03-05T17:37:34.2933909Z + $response = Invoke-RestMethod -Uri $apiUrl -Method Post -Headers $hea ...
2025-03-05T17:37:34.2934961Z + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2025-03-05T17:37:34.2936330Z + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebExc
2025-03-05T17:37:34.2937301Z eption
我可以使用您的脚本在本地 PowerShell 提示符中重现
404
错误,该脚本似乎没有调用有效的 API URL。您可能希望调用此 API来更新 Git。但请注意,它不支持服务主体或托管身份。
根据身份支持文件,
我认为这也是为什么我对List Workspaces 的调用成功,而对Get Git Status 的调用却无法获取要更新的 git head 的原因。我还测试了使用用户的持有者令牌进行身份验证来调用 Get Git Status api,并且成功了。
添加我的脚本以帮助您理解我的测试。
我们不确定您是否
https://api.fabric.microsoft.com/core/git/update-from-git?workspaceId=<workspace-id>&itemId=<item-id>
从Microsoft Fabric REST API 参考 - Microsoft Fabric REST API | Microsoft Learn 中找到该 API 。如果是,请编辑您的原始帖子并分享 API 链接。此外,如果脚本在管道之外工作,请告知我们,以帮助缩小根本原因。Azure Pipelines 只是一个自动化工具。您需要确保您的脚本在本地运行,然后再将其集成到管道中。希望这些信息能够澄清问题的实际原因。