Google Sitemaps用XML自動生成ツール

wgetでtracを操作する

Posted by ごうじん, on Monday, February 28, 2011 01:04 AM JST
no image

バグトラッキングシステム(Bug Tracking System:BTS)としてよく使われるtracを、wgetコマンドで操作してみました。

はじめに

TracXMLRPC 1.1.0プラグインをインストールすることにより、外部からtracのwikiやチケットを操作することが出来るようになります。 wgetを使って、いくつかの機能を試してみます。

環境

OS
CentOS 5.5
Xen Domain-U環境
Trac
インタアクト株式会社配布の、Trac-Ja 0.12.1ja1を使用。
TracXMLRPC 1.1.0プラグインを予めインストール。
8000ポートで起動し、ベーシック認証設定済み。

チケットを登録する

tracにチケットを登録してみます。以下は、チケットを登録するのに使ったshellです。

ticket_create.sh
#!/bin/sh
# xmlrpc接続サブルーチン
xmlrpc()
{
	[ $# -eq 0 ] && return 1

	method=$1
	wget	--quiet \
		--header="Content-type: text/xml" \
		--post-data="$method" \
		--output-document=- \
                --http-user=ユーザ \
                --http-password=パスワード \
		http://localhost:8000/test/login/xmlrpc

	return 0
}

# チケットの項目
summary="wget de xmlrpc"
description="wget de xmlrpc
test test test!"
reporter="wget"
owner="somebody"
priority="critical"
milstone="milestone1"
component="component1"
version="1.0"
keywords="wget de xmlrpc"
cc="curl"

# チケット登録メソッド
ticket_create="<?xml version='1.0'?>
<methodCall>
	<methodName>ticket.create</methodName>
	<params>
		<param><string>${summary}</string></param>
		<param><string>${description}</string></param>
		<param><struct>
			<value><string>reporter</string></value>
			<value><string>${reporter}</string></value>
			<value><string>owner</string></value>
			<value><string>${owner}</string></value>
			<value><string>priority</string></value>
			<value><string>${priority}</string></value>
			<value><string>milestone</string></value>
			<value><string>${milstone}</string></value>
			<value><string>component</string></value>
			<value><string>${component}</string></value>
			<value><string>version</string></value>
			<value><string>${version}</string></value>
			<value><string>keywords</string></value>
			<value><string>${keywords}</string></value>
			<value><string>cc</string></value>
			<value><string>${cc}</string></value>
		</struct></param>
	</params>
</methodCall>"

# チケット登録
xmlrpc "${ticket_create}"

実行結果

$ sh ./ticket_create.sh
<?xml version='1.0'?>
<methodResponse>
<params>
<param>
<value><int>12</int></value>
</param>
</params>
</methodResponse>

チケット番号が、12で登録できたようです。

チケットを取得する

先ほど登録したチケットを取得してみます。以下はチケットを取得するのに使ったshellです。

ticket_get.sh
#!/bin/sh
xmlrpc()
{
	[ $# -eq 0 ] && return 1

	method=$1
	wget	--quiet \
		--header="Content-type: text/xml" \
		--post-data="$method" \
		--output-document=- \
                --http-user=ユーザ \
                --http-password=パスワード \
		http://localhost:8000/test/login/xmlrpc

	return 0
}

# チケット番号
id=12

# チケット取得メソッド
ticket_get="<?xml version='1.0'?>
<methodCall>
	<methodName>ticket.get</methodName>
	<params>
		<param><int>${id}</int></param>
	</params>
</methodCall>"

# チケット取得
xmlrpc "${ticket_get}"
実行結果
$ sh ./ticket_get.sh
<?xml version='1.0'?>
<methodResponse>
<params>
<param>
<value><array><data>
<value><int>12</int></value>
<value><dateTime.iso8601>20110227T15:53:36</dateTime.iso8601></value>
<value><dateTime.iso8601>20110227T15:53:36</dateTime.iso8601></value>
<value><struct>
<member>
<name>status</name>
<value><string>new</string></value>
</member>
<member>
<name>changetime</name>
<value><dateTime.iso8601>20110227T15:53:36</dateTime.iso8601></value>
</member>
<member>
<name>description</name>
<value><string>wget de xmlrpc
test test test!</string></value>
</member>
<member>
<name>reporter</name>
<value><string>wget</string></value>
</member>
<member>
<name>cc</name>
<value><string>curl</string></value>
</member>
<member>
<name>resolution</name>
<value><string></string></value>
</member>
<member>
<name>time</name>
<value><dateTime.iso8601>20110227T15:53:36</dateTime.iso8601></value>
</member>
<member>
<name>component</name>
<value><string>component1</string></value>
</member>
<member>
<name>summary</name>
<value><string>wget de xmlrpc</string></value>
</member>
<member>
<name>priority</name>
<value><string>critical</string></value>
</member>
<member>
<name>keywords</name>
<value><string>wget de xmlrpc</string></value>
</member>
<member>
<name>version</name>
<value><string>1.0</string></value>
</member>
<member>
<name>milestone</name>
<value><string>milestone1</string></value>
</member>
<member>
<name>owner</name>
<value><string>somebody</string></value>
</member>
<member>
<name>type</name>
<value><string>defect</string></value>
</member>
</struct></value>
</data></array></value>
</param>
</params>
</methodResponse>

取得できました。

チケットを削除する

今度は、先ほど作ったチケットを削除してみます。以下は、チケットを削除するのに使ったshellです。

ticket_delete.sh
#!/bin/sh
xmlrpc()
{
	[ $# -eq 0 ] && return 1

	method=$1
	wget	--quiet \
		--header="Content-type: text/xml" \
		--post-data="$method" \
		--output-document=- \
                --http-user=ユーザ \
                --http-password=パスワード \
		http://localhost:8000/test/login/xmlrpc

	return 0
}

# チケット番号
id=12

# チケット削除メソッド
ticket_delete="<?xml version='1.0'?>
<methodCall>
	<methodName>ticket.delete</methodName>
	<params>
		<param><int>${id}</int></param>
	</params>
</methodCall>"

# チケット削除
xmlrpc "${ticket_delete}"
実行結果
$ sh ./ticket_delete.sh
<?xml version='1.0'?>
<methodResponse>
<params>
<param>
<value><int>0</int></value>
</param>
</params>
</methodResponse>

削除できました。

さいごに

今回は、wgetコマンドを使って、チケットの登録、取得、削除を試しました。

TracXMLRPC 1.1.0プラグインのマニュアルやサンプルには、python、C#、java、Ruby、curlコマンドを使ったものがありますので、wgetコマンドをあえて使う必要はないと思いますが、ちょっと確認するのにはいいのではないかと思います。



 amazon affiliate