web-dev-qa-db-ja.com

TFS2015 Build(Build.vnext)およびNuGetパッケージの復元を取得してカスタムパッケージソースを使用する方法

TFS2015 Build( TFSBuild vnext )をVS Team Servicesと一緒に取得しようとしています。

これまでのところ、ほとんどの ブログとドキュメント が役に立ちました。ただし、NuGet自動パッケージ復元用のカスタムパッケージソースを使用するプロジェクトをビルドしようとする場合を除きます。

Team Servicesビルドエージェント(ビルドの新しいメカニズム)を正常に展開しましたが、NuGetパッケージを復元するビルドタスクが失敗するまで、すべてうまくいくようでした。

失敗は、インストールされたVS構成からカスタム/プライベートパッケージソースが取得されなかったため、それらのパッケージが見つかりませんでした。デフォルトのNuGetパッケージフィードからの従来のパッケージは、問題なく復元されました。

エージェントを使用するときに使用するNuGetの追加パッケージソースを指定するにはどうすればよいですか?

編集:vcastroは、NuGet Installerのビルドステップについて尋ね、そのビルドステップの構成でパスを定義しました。上記では、Visual Studioのビルドステップと統合オプションを使用して、NuGetがパッケージを復元します。参考のためにこの画像を参照してください。 http://i.imgur.com/Hrqhhk2.png

23
Jaans

私はほとんど成功せずにWebをざっと見ましたが、いじくり回した後は次のことが役立ちます。

OK NuGet.config用に構成されたパッケージソースは、ユーザーアカウントごとに保存されているようです。

c:\Users\<<username>>\AppData\Roaming\NuGet\NuGet.config

ビルドエージェントがWindows ServiceアカウントでLocal Systemとして実行されていたため、私の問題を解決することは困難でした。そのため、ビルド用にNuGet構成を取得するには、代わりに次のパスを使用する必要がありました。

  • 64ビットWindows C:\Windows\SysWOW64\config\systemprofile\AppData\Roaming\NuGet\NuGet.Config
  • 32ビットWindows C:\Windows\System32\config\systemprofile\AppData\Roaming\NuGet\NuGet.Config

NuGetサブフォルダーとNuGet.Configファイル。

注:Local Serviceアカウントを使用するための解決策はありません。上記はLocal System(または実際のユーザー)アカウントでのみ機能します。

7
Jaans

または、ビルド構成のNuGet Installerステップの前にVisual Studio Buildビルドステップを追加して、すべてのNuGetパッケージを復元することもできます。

そこで、nuget.exeへの引数としてプライベートリポジトリの場所を渡すことができます。

-source "https://www.nuget.org/api/v2/;http://mynugetserver"

17
Pascal Berger

「NuGet Installer」と呼ばれる新しいVSTSタスクがあります。これにより、NuGet.configファイルをチェックインして、さまざまなパッケージソースを指定できます。 MSBuildを実行する前に、このタスクを実行してください。

VSTS NuGetフィードを使用している場合は、ビルドサービスアカウントをフィードに追加して、パッケージのダウンロードを有効にする必要があります https://www.visualstudio.com/get-started/package/use/common-identities

enter image description here

7
Gary Howlett

別のパッケージの場所を指定するNuGet.configをプロジェクトに追加します。解決の規則は明確に定義されており、公式の documentation で説明されています。

7
Daniel Mann

1つの解決策(私にとってはうまくいきます)は、たとえば、tfs 2015ビルドエージェントサービス(私のビルドマシンVSOエージェントtsf.Agent-PC)のアカウントをtfsagentに変更し、Nuget.configをC:\ Users\tfsagent\AppDataに追加することです\ Roaming\Nuget。それで全部です!

2
honzakuzel1989
  1. ソリューションのnuget.configファイルでカスタムNuGetフィードURLを指定します。このファイルにはユーザー名とパスワードを保存しないでください。

    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="MyCompany" value="https://nuget.mycompany.com:443/nuget" />
    
  2. VSTSのビルド定義でユーザー名とパスワードの変数を作成します。変数は暗号化でき、ビルドログの出力には表示されません。ここでは、MyCompanyNugetUserおよびMyCompanyNugetPwd変数を作成します。

  3. ビルド手順では、最初のアクションとしてPowershellスクリプトを追加します。これにより、ユーザー名とパスワードの変数が読み取られ、ビルドマシンのユーザーレベルのnuget.configファイルが更新されます。以下は、インラインPowershellスクリプトのコードスニペットです。

    引数:

    $(MyCompanyNugetUser) $(MyCompanyNugetPwd)
    

    脚本:

    param($user, $pwd)
    
    $nugetFile = "$ENV:AGENT_HOMEDIRECTORY\agent\worker\tools\nuget.exe"
    Write-Output "Looking for nuget.exe in $nugetFile"
    
    if (-not (Test-Path $nugetFile))
    {
      Write-Error "nuget.exe could not be located."
      return
    }
    
    Write-Output "nuget.exe located"
    
    $cmd = "$nugetFile sources add -name MyCompany -source https://nuget.mycompany.com:443/nuget -username $user -password $pwd -StorePasswordInClearText"
    Write-Output $cmd
    iex $cmd
    
  4. 次に、MicrosoftのテンプレートからデフォルトのNuGet Restoreステップを実行し続けます

詳細: https://codingcase.com/2016/07/27/vsts-build-setup-custom-nuget-feeds-with-authentication/

HTH

1
Sweis

Team Foundation Server 2015のRTMでは、「NuGet Installer」タイプのビルドステップを追加し、実際のビルドプロセスを実行する前にソリューションファイルのパッケージを復元する必要があります。タスクには、リポジトリパスを含む引数-ConfigFile path/to/nuget.configを渡すことができます。

例えば:

<configuration>
  <packageSources>
    <add key="Internal Nuget" value="\\srv-nuget\Repo" />
  </packageSources>
</configuration>

enter image description here

0
Martin Lantzsch