JenkinsでMSBuildするとNuGetパッケージを復元してくれない問題の対応
JenkinsからMSBuildでビルドするジョブを作る際に少しハマったので備忘録
要件
Visual Studioで作ったソリューションをJenkinsにビルドしてもらう
ソリューションはデスクトップアプリケーション(WPF)
Subversionでバージョン管理している
ジョブの流れ
1. Subversionからソリューションを落としてくる
2. NuGetでパッケージを復元
3. MSBuildでソリューションをビルド
NuGetパッケージの復元
Visual Studioからビルドするときは勝手にパッケージを復元してくれるが、MSBuild経由だとしてくれない模様。
なので、ビルド前に実行してあげよう。
参考:JenkinsでNuGetパッケージの復元メモ - やる気駆動型エンジニアの備忘録
ただし、Jenkinsからnuget.exeを呼び出す場合、フォルダのアクセス権限でうまく動かないことがあるっぽい。
NuGetがパッケージを入れとく場所を作ってあげて、環境変数で指定してあげればOK
code:batch
set NUGET_PACKAGES=D:\Jenkins\NuGet\PackageCache
nuget.exe restore "%WORKSPACE%\Hoge.sln"
参考:c# - Jenkins not restoring NuGet packages with new MSBuild restore target - Stack Overflow