BT

psakeでビルドをシンプルに自動化する

| 作者: Abel Avram フォローする 9 人のフォロワー , 翻訳者 徳武 聡 フォローする 0 人のフォロワー 投稿日 2009年10月19日. 推定読書時間: 2 分 |

原文(投稿日:2009/10/15)へのリンク

psakePowerShell (PS)に統合されたビルド自動化ツールだ。バージョン2.01はPowerShell 2.0で動作する。Ayende Rahien氏はこのツールをRhino Toolsのビルドに使っている。

このプロジェクトのオーナーであるJames Kovacs氏は、psakeを使うとどんな改善がもたらされるか、 説明している 。

psakeではビルドスクリプトにPowerShellを利用します。なので、ビルド自動化のために、実行可能なXMLを作成して各括弧をいじくり回すような負担を背負わなくて済みます。psakeの構文は、rake(Ruby製のビルドツール)とbake (プログラミング言語Booで書かれたビルドツール)に影響を受けていますが、このふたつよりも簡単に記述できます。既存のコマンドラインの使い方をそのまま役立てることができるからです。

バージョン2.01では、PS 2.0で動作するようになり、その上、PSのモジュールとして作り直されている。この変更が生み出す主な利点は、

  1. ビルドスクリプトは、psakeがどこにインストールされているか知らなくていい。Invoke-psakeを呼ぶだけでビルドが実行される。
  2. カプセル化。明示的に公開しなければ、変数はモジュール内のプライベートな変数となる。なので、グローバル変数は必要ない。
  3. モジュールは必要に応じてアンロードできる。アンロードするとそのモジュールのコードと変数はメモリ上からすべて削除される。

2.01のその他の新しい特徴は、

  1. コーディングスタイルが今までと違っている。
  2. "Trap"ステートメントに代わってTry/Catchが使われている。
  3. "exec"関数が取り除かれた。
  4. タスクの"前"処理と"後"処理を定義できる。
  5. タスク名の書式を定義できる。
  6. "TaskSetup"関数を定義すれば、すべてのタスクより前に処理を実行できる(NUnitから拝借した)。
  7. "TaskTearDown"関数を定義すれば、すべてのタスクが終わった後に処理を実行できる。(これもNUnitから拝借)。
  8. "psake_buildSucceeded"という名前のグローバル変数を作成できる。ビルドが成功したらこの変数をtrueに設定すれば、ビルドの正否を検証できる。
  9. Run-Psakeに"$noexit"スイッチが加わった。これによって、Run-Psakeはexit()関数を使わなくて済むので、コマンドラインでビルドスクリプトをテストするときに、いちいちPSを閉じずに済む(ビルドが失敗したときはexit(1)が呼ばれるのが規定の動作なので、呼び出し元コードがビルドが成功したか失敗したかを決めることができる)。
  10. psake-buildTester.ps1からInvoke-psakeを呼ぶためにわずかな変更が加えられた。
  11. 事後条件や事前処理、事後処理等についてのサンプルが追加された。

Ayende Rahien氏はpsakeをRhino Toolsのビルドに使っていることについて書いている。はじめはNAntをもとにしたビルドツールを使っていたが複雑になりすぎて、“深い知識を持った人でも恐る恐る進まなければならないような‘魔窟’”になりつつあった。そこで、氏はRakeやBakeを使ってその可能性を評価した後、50行で必要な処理を行えるpsakeを使うようになった。

psakeはGitHubからダウンロードできる。ライセンスはMIT Licenseだ。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT