2020年2月20日更新
まとめ
Azure DevOpsパイプラインビルドで、Artifactsの下のプライベートフィードからNuGetパッケージが見つかりません。
Azure DevOps環境
Azureには、「スペース」という会社があります。dev.Azure.com/ OurCompany
その下には複数のプロジェクトがあるので、たとえば次の3つを想像してください。
[〜#〜]赤[〜#〜]
REDには、すべての一般的なヘルパーコードが、GREENおよびBLUEのアプリケーションによって使用されるDLLであることが保持されています。これらはNuGetパッケージとして提供されます。
REDのアーティファクトの下に、「OurCompany」という「組織スコープフィード」が表示されます。これらのNuGetパッケージはOurCompanyのすべてのユーザーが使用できる必要があるため、これを使用できないことがわかりました。これは、Azureだけでなく、企業ネットワーク(Visual Studioを実行している)のデスクトップコンピューターでも使用できることを意味します。 「組織スコープフィード」は私たちの企業ネットワークに公開されていないと思います。
したがって、REDのアーティファクトの下に新しいフィードを作成しました。アクセス許可を表示すると、次のエントリが表示されます。
Corporate
したがって、Corporateに戻って、NuGetパッケージフィードをVisual Studioに追加すると、AzureからNuGetパッケージを取得できます。
緑と青
ここに私達の製品があります。ビルドパイプラインを作成し、NuGet復元ステップを追加します。
- task: NuGetCommand@2
displayName: 'Restore for Our Application'
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
feedsToUse: 'select'
vstsFeed: '{Guid1}/{Guid2}'
ドロップダウンからAzure Artifactsフィードを選択すると、2つのGuidが入力されました。
緑または青のNuGet復元エラー
したがって、ここで問題が発生します。 NuGet復元ステップが実行されると、次のメッセージで失敗します。
Unable to find version 'nnnn.n.n' of package 'TheNuGetPackage'.
ログ出力は膨大ですが、目立つ行は次のように見えます。
2020-02-18T18:36:35.2838118Z [command]C:\hostedtoolcache\windows\NuGet\5.4.0\x64\nuget.exe sources Add -NonInteractive -Name {Guid2} -Source https://pkgs.dev.Azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json
-ConfigFile d:\a\1\Nuget\tempNuGet_356.config 2020-02-18T18:36:35.7513495Z Package source with Name: {Guid2} added successfully. 2020-02-18T18:36:41.1671856Z [CredentialProvider.183638]Command-line v0.1.20+a5d37185a1a95acb4f0g997b9c23cab99508: "d:\a\_tasks\NuGetCommand_333b11bd-d341-40d9-bdbd-b32d5ce6f23b\2.164.0\CredentialProviderV2\plugins\netfx\CredentialProvider.Microsoft\CredentialProvider.Microsoft.exe"
-Plugin 2020-02-18T18:36:41.1673979Z [CredentialProvider]Handling 'Request' 'GetAuthenticationCredentials'. Time elapsed in ms: 3 - Payload: {"Uri":"https://pkgs.dev.Azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json","IsRetry":false,"IsNonInteractive":true,"CanShowDialog":true} 2020-02-18T18:36:41.1674299Z [CredentialProvider]Handling auth request, Uri: https://pkgs.dev.Azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json, IsRetry: False, IsNonInteractive: True, CanShowDialog: True 2020-02-18T18:36:41.1674465Z [CredentialProvider]URI: https://pkgs.dev.Azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json 2020-02-18T18:36:41.1674818Z [CredentialProvider]Skipping NuGetCredentialProvider.CredentialProviders.VstsBuildTaskServiceEndpoint.VstsBuildTaskServiceEndpointCredentialProvider, cannot provide credentials for https://pkgs.dev.Azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json 2020-02-18T18:36:41.1675261Z [CredentialProvider]VstsBuildTaskCredentialProvider - https://dev.Azure.com/OurCompany/ 2020-02-18T18:36:41.1675425Z [CredentialProvider]VstsBuildTaskCredentialProvider - https://pkgs.dev.Azure.com/OurCompany/ 2020-02-18T18:36:41.1675722Z [CredentialProvider]VstsBuildTaskCredentialProvider - https://pkgs.dev.Azure.com/OurCompany/ 2020-02-18T18:36:41.1676021Z [CredentialProvider]VstsBuildTaskCredentialProvider - https://pkgs.dev.Azure.com/OurCompany/ 2020-02-18T18:36:41.1676161Z [CredentialProvider]VstsBuildTaskCredentialProvider - Matched prefix: https://pkgs.dev.Azure.com/OurCompany/ 2020-02-18T18:36:41.1676330Z [CredentialProvider]VstsBuildTaskCredentialProvider - Found credentials for endpoint https://pkgs.dev.Azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json 2020-02-18T18:36:41.1680820Z https://pkgs.dev.Azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json: Unable to load the service index for source https://pkgs.dev.Azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json. 2020-02-18T18:36:41.1680996Z Response status code does not indicate success: 404 (Not Found - VS800075: The project with id 'vstfs:///Classification/TeamProject/{Guid1}' does not exist, or you do not have permission to access it. (DevOps Activity ID: 0628EDE7-6E7E-465D-A6AE-7B6B0AA065D2)).
これは私には許可のように見えます。しかし、奇妙なことに、REDのアーティファクトフィードは、パイプラインビルドYAMLを作成するときに、それを使用するためのアクセス許可がないときに発見可能でした。
REDでフィードに権限を追加しようとしました。 「ユーザー/グループの追加」をクリックします。以下を見つけて、読者または投稿者として追加しましたが、成功しませんでした。
そう:
更新#1
復元手順からの詳細なエラーメッセージ
https://api.nuget.org/v3/index.json :パッケージ 'Package1.nnnn.nn'がソース ' https://api.nuget.orgに見つかりません/v3/index.json '。
https://pkgs.dev.Azure.com/OurCompany/ {Guid1}/_packaging/{Guid2} /nuget/v3/index.json:サービスインデックスをロードできませんソース https://pkgs.dev.Azure.com/OurCompany/ {Guid1}/_packaging/{Guid2} /nuget/v3/index.json。応答ステータスコードが成功を示さない:404(見つかりません-VS800075:ID 'vstfs:/// Classification/TeamProject/{Guid1}'のプロジェクトが存在しないか、アクセスする権限がありません(DevOpsアクティビティID:{Guid}))。
私のLibsProjectにはLibsFeed(OP's [〜#〜] red [〜#〜])があり、それを私のパイプラインConsumingProject。
これを機能させるには、次の権限を追加する必要がありました。
考えられるすべての管理者権限があっても、OPのソリューションを有効にすることさえできません
ジョブの承認範囲を現在のプロジェクトに制限する