Taskをアドインするとか、そういう話。
重要なのは、
- ThoughtWorks.CruiseControl.Core.ITask
- タスクである為に実装するインターフェース。Runメソッドが定義されている。
- ThoughtWorks.CruiseControl.Core.IIntegrationResult
- Runメソッドの引数となるオブジェクト。現在の処理プロセスに紐付くコンテキスト情報が大体なんでもとれる。
- Exortech.NetReflector.ReflectorTypeAttribute
- ccnet.configでTaskとして使う際に、使用するタグの名前を定義するのに使う。
- Exortech.NetReflector.ReflectorPropertyAttribute
- ccnet.configで、作りこんだTaskにオプションを指定出来る様にする為に使う。
大体この4つを押さえれば、何でもやりたい様に、やりたい事が出来る感じ。
後、ThoughtWorks.CruiseControl.Core.Utilって名前空間にあるクラスを
頭の片隅においておくと、結構いい事あるカモネ。
- ProcessExecutor
- Registry
- WildCardPath
使いでがありそうなのは、この辺。
んで、projectタグの子要素として、tasksタグとか、publisherタグとか使えるのだけど、
tasksタグの子だろうが、publisherの子だろうが、同じ様にITaskの実装クラスを使える。
但し、tasksの子だと、それより前のtaskがFailしたりとかすると、後ろに処理が回らないので注意。
publisherの子にしておけば、前がコケようが何しようが、後ろのTaskが実行されるます。
他の注意事項は、ドキュメントがあるので、それをしっかり読む…とは言っても大した事書いてねぇけども。
重要なのは、アセンブリの名前付けルールだけかな。
この部分。
The assembly that it produces should be named: 'ccnet.*.plugin.dll' (where the star represents the name you choose).