小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


Jenkins2.xとMSBuild PluginでVisual Studioのソリューションをビルドしてみたよ。

はじめに

JenkinsからMSBuildコマンドを実行して、Visual Studioのソリューションをビルドしてみました。

  • Windows Server 2016(1607)
  • Visual Studio 2017(15.9)
  • Jenkins 2.150.1
  • MSBuild 1.2.9

[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)
佐藤 聖規 和田 貴久 新井 雄介 米沢 弘樹 山岸 啓 岩成 祐樹
技術評論社
売り上げランキング: 115,241

Jenkins MSBuild Pluginをインストールする

JenkinsでVisual Studioのプロジェクトをビルドするには、はじめにJenkins MSBuild Pluginというプラグインをインストールします。

左のメニューから「Jenkinsの管理」をクリックします。
f:id:replication:20190105213041j:plain

「プラグインの管理」をクリックします。
f:id:replication:20190105213157j:plain

「利用可能」タブを選び、フィルタにMSbuildと入力します。検索結果が表示されたら、MSbuildのインストールにチェックを入れ、「再起動せずにインストール」をクリックします。
f:id:replication:20190105213332j:plain

インストールが成功します。
f:id:replication:20190105213600p:plain

MSBuildのパスを追加する

続いて、その環境にインストールされているMSbuildのパスをJenkinsに教えます。

Jenkinsの管理から、「Global Tool Configuration」をクリックします。
f:id:replication:20190105213749j:plain

MSBuildの設定で、MSBuild.exeの場所を指定して、任意の名前をつけます。(この名前が後から出てきます)
ちなみに、VS2017の場合は以下の場所にあります。

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin

f:id:replication:20190105214010j:plain

JenkinsのジョブからMSBuildを起動する

ジョブの設定画面にて、「ビルド」タブを選び、「MSBuildの実行」を選びます。
f:id:replication:20190105214441j:plain

続いて、MSBuildバージョン=先ほど指定した任意の名前を選び、MSBuildファイル=ビルドするソリューションファイルを指定します。
f:id:replication:20190105214541j:plain

上記で設定は完了です。無事ビルドが成功すると以下のようなログになります。
f:id:replication:20190105215046j:plain

ユーザーアドミンが実行
ビルドします。 ワークスペース: C:\Program Files (x86)\Jenkins\workspace\サンプル1
Path To MSBuild.exe: C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\msbuild.exe
Executing the command cmd.exe /C " chcp 932 & "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\msbuild.exe" "C:\Users\Administrator\source\repos\ConsoleApplication1\ConsoleApplication1.sln" " && exit %%ERRORLEVEL%% from C:\Program Files (x86)\Jenkins\workspace\サンプル1
[サンプル1] $ cmd.exe /C " chcp 932 & "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\msbuild.exe" "C:\Users\Administrator\source\repos\ConsoleApplication1\ConsoleApplication1.sln" " && exit %%ERRORLEVEL%%
現在のコード ページ: 932
.NET Framework 向け Microsoft (R) Build Engine バージョン 15.9.21+g9802d43bc3
Copyright (C) Microsoft Corporation.All rights reserved.

このソリューション内のプロジェクトを 1 度に 1 つずつビルドします。並行ビルドを有効にするには、"/m" スイッチを追加してください。
2019/01/05 21:27:15 にビルドを開始しました。
ノード 1 上のプロジェクト "C:\Users\Administrator\source\repos\ConsoleApplication1\ConsoleApplication1.sln" (既定のターゲット)。
ValidateSolutionConfiguration:
  ソリューション構成 "Debug|x64" をビルドしています。
プロジェクト "C:\Users\Administrator\source\repos\ConsoleApplication1\ConsoleApplication1.sln" (1) は、ノード 1 上に "C:\Users\Administrator\source\repos\ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.vcxproj" (2) をビルドしています (既定のターゲット)。
InitializeBuildStatus:
  "AlwaysCreate" が指定されたため "x64\Debug\ConsoleA.DFC51824.tlog\unsuccessfulbuild" を作成しています。
ClCompile:
  すべての出力が最新のものです。
  すべての出力が最新のものです。
Link:
  すべての出力が最新のものです。
  ConsoleApplication1.vcxproj -> C:\Users\Administrator\source\repos\ConsoleApplication1\x64\Debug\ConsoleApplication1.exe
FinalizeBuildStatus:
  ファイル "x64\Debug\ConsoleA.DFC51824.tlog\unsuccessfulbuild" を削除しています。
  "x64\Debug\ConsoleA.DFC51824.tlog\ConsoleApplication1.lastbuildstate" のタッチ タスクを実行しています。
プロジェクト "C:\Users\Administrator\source\repos\ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.vcxproj" (既定のターゲット) のビルドが完了しました。
プロジェクト "C:\Users\Administrator\source\repos\ConsoleApplication1\ConsoleApplication1.sln" (既定のターゲット) のビルドが完了しました。

ビルドに成功しました。
    0 個の警告
    0 エラー

経過時間 00:00:02.15
Finished: SUCCESS