Linuxビルドエージェントを構成する
.NET - Powerful Open Source Development
Linuxのディストリビューションごとに手順が違うので、注意してください。私はUbuntu Server 16.04 LTSでやっています。
ビルド定義を作る
Windows版と同じ感じで作ります。
違うのはZipパッケージの作成と、リリース用PowerShellスクリプトの代わりにシェルスクリプトが用意されていることですね。タスクはほとんどUtilityにある、Shell Scriptを使用します。
シェルスクリプトとタスクの単位
dotnet restore/buildのように連続するタスクは一つのシェルスクリプトで実施してもかまわないのでしょうが、個人的にはビルドタスク単位で別にしたほうがわかりやすいかと思います。
作成したシェルスクリプトはSolutionフォルダ内に適当なシェル用のフォルダを作って入れておくといいでしょう。
NuGetパッケージのリストア
NuGetパッケージのリストアに必要なシェルはこのようになります。
#!/bin/sh
/usr/bin/dotnet restore
パッケージリストア用のシェルスクリプトはテストプロジェクトでも使用できるので、使いまわしてください。
プロジェクトのビルド
ビルドに必要な最低限のシェルはこのようになります。
#!/bin/sh /usr/bin/dotnet build -c $BUILDCONFIGURATION
$BUILDCONFIGURATIONはVariablesに定義された値です。Variablesでは大文字小文字があるように見えますが、bashではこの定義済みの値は全て大文字として定義されています。
テストプロジェクトの実行
テストプロジェクトにあるテストを実行するにはこのようなスクリプトを実行します。テストプロジェクトを実行する前に必ずNuGetパッケージのリストアタスクをテストプロジェクトのフォルダで実行してください。
#!/bin/sh /usr/bin/dotnet test -xml Test-Result1.xml
Windowsのビルド定義のところでも書きましたが、-xmlオプションでXMLファイルにテスト結果を出力します。複数のテストプロジェクトの結果をマージする場合、この引数はシェルスクリプトの引数として外出できるようにしてください。
パッケージを出力する
特定のプロジェクトをWebサーバーへデプロイするための最低限のスクリプトはこのようになります。
#!/bin/sh /usr/bin/dotnet publish src/{プロジェクト名} --configuration $BUILDCONFIGURATION --output $PUBLISHOUTPUT --framework $NETCOREVERSION
$PUBLISHOUTPUTは出力先フォルダを定義した値です。これもWindows版と同様に、システムに.NET Coreがインストールされているという前提のパッケージです。
Windows版にも書きましたが、必ず--configurationでreleaseと指定して、Release版をデプロイしてください。
場合によってはここで一気にデプロイまでやってもいいのですが、別にしています。
まとめ
Windows版と同様ですが、タスクごとにシェルスクリプト作らないといけないのが少し面倒かもしれませんね。外部にビルドサーバーが必要になるし、どうしてもLinuxでなくてはならないビルドを行う以外はHostedエージェントを使ったほうがいいように思います。
次はリリースについて紹介します。