Subscribed unsubscribe Subscribe Subscribe

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とかくっつけてみても確かに動かない。

とりあえず無理矢理やるんだとすると、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も取れる良いんだけどな〜。