0

プライベート エージェント (オンプレミス ビルド サーバー) で実行する必要があるビルド定義を Team Services で作成しました。このエージェントはドメイン アカウントで実行されています。次に、NuGet パッケージャー タスクによって作成されたパッケージを発行しようとしている Team Services で NuGet フィードを作成しました。

NuGet パブリッシャー タスク (NuGet v4.0.0.2283) を使用してパッケージを内部フィードにプッシュしようとすると、認証エラー (403 Forbidden) が発生します。

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に記載されている資格情報を使用して、同じパッケージをビルド サーバーに手動で公開できることに注意してください。

現在、ビルド定義はプロジェクト スコープです (プロジェクト コレクション スコープではありません)。したがって、プロジェクト コレクション ビルドサービス アカウントをフィードの投稿者に追加する既定のアクセス許可は、おそらく正しくありません。この特定のチーム プロジェクトに関連付けられたプロジェクト ビルドサービス アカウントを貢献者 (または所有者) に追加する必要があると思います。

この Team Services アカウントには 15 以上のプロジェクトがあり、Project Build Service アカウントはすべて同じ名前であるため、正しいアカウントを見つけるにはいくつかの作業が必要です。次の PowerShell インライン スクリプトをビルドに追加することで、特定のプロジェクト ビルド サービス アカウント GUID を見つけることができました (ここから取得しました: https://github.com/Microsoft/vsts-tasks/issues/3287 )。

$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を持つアカウントを見つけて、プロジェクトビルドサービスアカウントをフィードの貢献者に追加できないようです。

これはバグですか、それとも何かを設定するのを忘れましたか?

4

1 に答える 1