MantisConnectを使ってIssue登録

 article  Comments Off on MantisConnectを使ってIssue登録
May 212011
 

MantisConnectを使ったIssue登録を試してみました。
MantisはPHPで動作するので、SOAPクライアントもPHPスクリプトにしてみます。
環境は以下のとおり。mantis, php等すべてDebianパッケージを使用しています。

  • Debian 6.0.1 (squeeze)
  • mantis 1.1.8+dfsg-10
  • php5 5.3.3-7+squeeze1
  • php-soap 0.12.0-2
  • mysql-server 5.1.49-3
  • apache2 2.2.16-6+squeeze1

結論からいうと以下のようなスクリプトでOKでした。WSDLモードで接続してmc_issue_add()を呼び出します。

#!/usr/bin/php
<?php

$client = new SoapClient('http://localhost/mantis/api/soap/mantisconnect.php?wsdl');

$username = "administrator";
$password = "********";

$issue = array(
        'project'         => array('id' => 1),
        'priority'        => array('id' => 10),
        'severity'        => array('id' => 10),
        'status'          => array('id' => 10),
        'reproducibility' => array('id' => 10),
        'resolution'      => array('id' => 10),
        'projection'      => array('id' => 10),
        'eta'             => array('id' => 10),
        'view_state'      => array('id' => 10),
        'category'        => "Default",
        'summary'         => "要約",
        'description'     => "詳細\n\nこちらに詳細情報を入力します。"
        );

$result = $client->mc_issue_add($username, $password, $issue);

echo "$result\n";
?>

最初は username, password, summary, description だけを指定してみたのですが、やれ「project指定がない」「priority指定がない」等のエラーが返ってきますので、それらを指定していった結果、こんな状態になりました。追加していったパラメータは、とりあえず各enum値の最初の値を指定しています。

日本語部分はUTF-8でベタ書きしています。
実行後のMantis登録状態は以下のとおりで、日本語も問題ありませんでした。

最初、日本語入力は文字化けしてしまったのですが、これはMantis用のMySQLデータベースがlatin1で作成されていたためで(Debian squeezeのデフォルト状態)、utf8で作り直すと大丈夫になりました。

# echo "DROP DATABASE mantis" | mysql -u root -p
# echo "CREATE DATABASE mantis DEFAULT CHARSET utf8 DEFAULT COLLATE utf8_general_ci;" | mysql -u root -p
# mysql -u root -p mantis < /usr/share/dbconfig-common/data/mantis/install/mysql

MantisのDBをEUC-JPからUTF-8に変換

 article  Comments Off on MantisのDBをEUC-JPからUTF-8に変換
Apr 202008
 

Mantisを0.18から1.1系列にアップグレードする際、文字コードをUTF-8に変更した。
しかし、mysqldumpした結果をlv -Iej -Ou8で変換したものをmysqlに投入すると、

Unknown command '\"'

となってしまう。
lvではなくiconvを使ってiconv -f EUC-JP-MS -t UTF-8したところ無事解決したようだ。

ところでmantis_bug_file_tableやmantis_project_file_tableはファイル名部分はEUC-JPからUTF-8に変換が必要なものの、ファイルの内容部分は変換してはいけないので一括iconvな方法は使えない。
こちらはDBのキャラクタセットをUTF-8で作成してあると、INSERT時にSET NAMES eucjpms;をやっておけば、MySQLがきれいに変換してくれるようだ。

$ echo "\
> CREATE DATABASE bugtracker \
> DEFAULT CHARACTER SET = utf8 \
> DEFAULT COLLATE = utf8_unicode_ci" \
> | mysql -u username -p
$ ( echo "SET NAMES eucjpms; \
> cat mantis_bug_file_table.sql ) \
> | mysql -u username -p bugtracker

mantis_bug_file_table.sqlがEUC-JPなMantisなDBからmysqldumpしたデータ。