Powershell の psake でビルドスクリプト書いてみた
昨年から .Net なプロジェクトに携わっているんだが、ビルドスクリプトをなにで書けばいいかなーとか思ってたら Powershell にpsake というのがよさそうだったので色々調べたのでメモっておく。
参考: http://84zume.wordpress.com/2011/12/14/first-psake/
今回は Powershell 2.0, psake 4.1.0 で試した。
環境は以下。
- WindowsXP SP3
- WIndowsServer2008 R2
- .Net framework 3.5
Powershell のインストール
2008 にはデフォルトでインストールされているが、XPは入っていなので以下を入れる
http://www.microsoft.com/ja-jp/download/details.aspx?id=16818
psake インストール
https://github.com/psake/psake からダウンロードし適当な場所に解凍する。解凍フォルダにPATHを通しておく。
こんなのかいてみた
だいたいこんな雰囲気の "build.ps1" を書いてみた。
import-module build-functions.ps1 #自作util property { $env = $parameters.env import-module $env.ps1 #パラメータ読み込み $slnFilePath = path¥to¥Hoge.sln $compiledDir = compiled $zipFIlePath = path¥to¥Hoge.zip } task package -depends clean, compile, zip task compile { msbuild $slnFilePath /Configuration=Release } task zip { zip $compiledDir $zipFilePath } task clean { remove-item $compiled -force -recurse write-host "$compiled Deleted." }
package タスクをコマンドプロンプトから動かすときはこんなかんじ。
> psake build.ps1 -framework 3.5 -parameters @{env='test';hoge='fuga'} package
コマンドラインパラメータをスクリプトから参照するには $parameters.env といった感じでアクセスできる。
ついでに zip/unzip 使えるようにしてみた
標準だと zip 使えないようなので、調べてみたら Ionic.Zip.dll でできるらしい。
ので、 zip と unzip の function を作ってみた。