Hudson Remote APIでParameterized Build
HudsonにはPrameterized Buildという機能で、ビルド時にパラメータを渡すことができます。
これをHudosnのRemote APIでビルド開始時に渡せたら色々と他のツールと連携できそうな気がするのですが、現状使い易いAPIはないとのこと。
There's no easy way to submit parameters when you are programmatically invoking a build from outside without a browser
http://hudson.gotdns.com/wiki/display/HUDSON/Parameterized+Build
IssueTrackingにも挙がっています。
Remote APIでビルドを開始するには以下のようなURLなのですが、parametername=valueとかくっつけてみても確かに動かない。
- http://localhost/hudson/job/${job_name}/build
とりあえず無理矢理やるんだとすると、GETではなくPOSTでJSON形式のパラメータを投げればできるっぽいですが。。。
jsonというキーで値を以下のようにJSON形式で記述します。
{"parameter": {"name": "FOO", "value": "abc"}}
そうすると、上記の例だとFOOにabcが設定されます。(事前に、JOBに対してString parameterでName:FOOが設定してあることが必要です)
試してみたクライアントのソース
package example; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.PostMethod; public class Sample { public static void main(String[] args) throws Exception { HttpClient client = new HttpClient(); PostMethod post = new PostMethod("http://localhost:8080/job/test/build"); post.addParameter("json", "{\"parameter\": {\"name\": \"FOO\", \"value\": \"abc\"}}"); int rtn = client.executeMethod(post); System.out.println(rtn); } }
後は、実行されたビルドIDも取れる良いんだけどな〜。