hudsonのスレーブ機能でコンテンツデプロイしたい

Hudsonのスレーブ機能を試した目的の1つとしては、毎晩ナイトビルドしている結果をアプリケーションサーバに反映したいという要望がありました。今、ナイトビルドしているサーバとアプリケーションサーバが物理的に別のサーバで運用しているので、単純に以下のどれかの方法でコンテンツデプロイしようと思っていました。

  1. アプリケーションサーバにOpenSSHをセットアップして、Hudsonジョブの最後でSCPを行う
  2. アプリケーションサーバFTPをセットアップして、Hudsonジョブの最後でFTPを行う
  3. ナイトビルドしているサーバのどこかを共有フォルダとして公開し、ナイトビルドが終わったら共有フォルダにコンテンツを格納、アプリケーションサーバ側では共有フォルダからコンテンツを取得して決まった場所に展開

当初は1番を行ってみようと思い立ち、OpenSSH for Windowsをダウンロードし、http://new.micro-vnc.jp/documents/archieve/sshwindows/detail.html#setupの手順に従って行いましたが、Windows Server 2008(x64)では、サービスが起動しませんでした。これは問題解決に時間が掛かりそうだと判断し、1番はあっさりあきらめました。その後一番単純そうな3番でやってみようということで前回のスレーブ機能を試したのでした。以下の図のようなイメージ。

ですが、ここにも落とし穴がありました。スレーブ側に共有フォルダからコンテンツを取得するバッチファイルを用意し、スレーブ機能で実行してみるとうまく動きません。上の図で③の機能がNGなんです。このバッチをアプリケーションサーバリモートデスクトップでログインし実行すると問題なく動作します。
さて困った。残るは2番なんですが、これはほぼ問題なく出来るだろうな〜と思っていました。他の実案件でも行っていますし。ただWindows Server 2008で行っていないだけなので、あえてここで検証してみることな無いかなと思いまして、WGETで取得する方法で行おうと思い立ちました。Windowsで使用できるWGETがあるよという噂をWEBで見かけていたのと、WGETが使用できればHudsonのコマンドをWGET経由で実行できるらしいので、Windows Server 2008でも動くのか試したくなったためです。http://xoomer.virgilio.it/hherold/で1.10.2bをダウンロードしました。ZIP形式なので解凍すると、以下のような感じです。インストール不要です!

NET STOP "アプリケーションサーバ"
C:\bin\wget --user=ユーザ名 --password=パスワード (本当は改行なし)
"http://XX.XX.XX.XX:YYYY/hudson/view/Deploy/job/MDM-Build/lastSuccessfulBuild/artifact/testpackage/target/XXX-1.0.0.zip"

jar -xvf XXX-1.0.0.zip
robocopy /S /E XXX-1.0.0\runtime\doc\imart %IMART%\doc\imart
DEL XXX-1.0.0.zip
RMDIR /S /Q  XXX-1.0.0
NET START "アプリケーションサーバ"

ちなみに、wgetで指定するURLの中に日本語が入っていると、どうしてもNGでした。Hudsonのビュー画面で日本語(例えば○×開発用)を使用していると、成果物のパスに日本語が入り込んでダメでした。これで、夜間ビルド→アプリケーションサーバへのデプロイというコンボができました。