我已經創造了團隊服務構建定義,需要在一個私人劑(即內部部署構建服務器)上運行403(禁止)錯誤。此代理正在域帳戶下運行。然後我在Team Services中創建了一個NuGet feed,我嘗試發佈NuGet Packager任務創建的包。VSTS的NuGet出版商 -
我正在一個身份驗證錯誤(403禁止)試圖將包推到使用的NuGet發佈任務(的NuGet v4.0.0.2283)的內部進料時:
2017-05-04T21:05:06.3076014Z CredentialProvider.TeamBuild: Failed to authenticate to https://mycompany.pkgs.visualstudio.com/_packaging/MyProject/nuget/v3/index.json from your project collection, prefix = https://mycompany.pkgs.visualstudio.com/
2017-05-04T21:05:07.8546075Z System.AggregateException: One or more errors occurred. ---> NuGet.Protocol.Core.Types.FatalProtocolException: Unable to load the service index for source https://mycompany.pkgs.visualstudio.com/_packaging/MyProject/nuget/v3/index.json. ---> System.Net.Http.HttpRequestException: Response status code does not indicate success: 403 (Forbidden).
請注意,我能夠使用我在此處描述的憑據在構建服務器上手動發佈相同的包:https://www.visualstudio.com/en-us/docs/package/nuget/nuget-exe
現在,構建定義是項目範圍(不是Project集合範圍)。因此,向Feed的貢獻者添加Project Collection Build服務帳戶的默認權限可能不正確。 我認爲需要被添加到提供者(或業主)與此特定團隊項目相關的項目生成服務帳戶。
由於在這個團隊服務業佔15分以上的項目和項目構建服務帳戶都具有相同的名稱,找到正確的帳戶需要一些工作。我設法找到addding以下的PowerShell聯腳本來構建(這是我從這裏得到:https://github.com/Microsoft/vsts-tasks/issues/3287):GUID的具體項目生成服務帳戶
$headers = @{Authorization="Bearer ${env:SYSTEM_ACCESSTOKEN}"}
$response = Invoke-RestMethod "${env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI}/_apis/connectionData" -Headers $headers
$response.authenticatedUser | Format-List id, customDisplayName | Out-Host
現在,我似乎無法添加項目構建服務帳戶通過鍵入其guid或鍵入「項目構建服務」以從帳戶列表中找到具有正確guid的項目。
這是bug還是我忘記配置些什麼呢?
如果您將帳戶添加爲供稿權限中的所有者,那麼構建結果如何? –
我的(用戶)帳戶已經是供稿的所有者。這可能是我能夠使用VSTS憑證提供程序手動發佈到Feed的原因。儘管代理服務在不同的(服務)帳戶下運行。 我需要在VSTS中爲此服務帳戶創建一個用戶嗎?我沒有看到在MSDN文檔中這樣做的要求... –