hudson-cliがちょっと分かって来た

つか,もう日本語化されとる。id:ssogabeさん,スゴイ!カコイイ!!
Hudson CLI - 日本語 - Hudson Wiki

しょうむない小バグだけど,Winstoneで起動すると本文中の hudson-cli.jar のパスの ${rootURL} が展開されませんな(コマンド例の方は正しいURLなので,そっからCLIモジュールはダウンロードできる)。


それはそうと,ちょっと思い違いをしていたのだが,CLIのgroovyshはあっち側(Hudson Server)で動いて,結果をエコーバックしてるようだ。試しに,

new File(".").eachFile { println it }


とかってすると,Hudson側のカレントディレクトリ直下のファイル一覧が返る。あたしゃ,てっきりHudsonインスタンス(hudson.model.Hudson)を起点にした一連のHudsonオブジェクトがスタブ的な振る舞いをするんだと思い込んでおりました。
なんで先のコード片はCLI側のファイル一覧が取得できるのかと思ってたワケだが,そんなだったらわざわざ「CLIのコードが45行でできたよ」とは言わないよね。


つまりだ。先のコード片と,このコード片は意味的に等価ってことでいいのかなと。

import hudson.util.*
import hudson.model.*
script = """new File(".").eachFile { println it }"""
RemotingDiagnostics.executeGroovy(script, Hudson.MasterComputer.localChannel)


欲を言えばCLI側のローカルリソースにアクセスできると,いろいろ夢も広がるかなって妄想してみたが,もうすぐ "groovy (not groovysh)"ってコマンドが追加されるようなので,ひと安心。
#...でも,CLI<->Hudson間のファイル転送もやる気になればできるんだろうな(ぼそっ)。


やっぱり,Hudsonさんは,CIの範疇を越えて分散コンピューティングのプラットフォーム化してきてますよ。(多少冗長なコードになるだろうけど)今でもRemotingDiagnostics使えば分散スクリプトみたいなことは可能だし,きっと遠くない未来には分散Groovy環境も実装されるに違いない。
もういっその事,アプリケーションサーバになっちゃいなよっ。:-D


ps.
せっかくCLI使ってみたものの,やってみたのはシステムメッセージ書き換えるだけでしたとさ(ちょっとまだアイデアが沸かない)。

CLIの仕組みが分かってしまえば,groovyshでinspectが使えないのも理解できる。



それと,ご覧の通りgroovyshはエスケープシーケンスをふんだんに使っているのでDOS窓で実行すると,なかなかオモロイことになるのでご注意を。:-)