RedmineのREST APIを使ってみる。
いまごろではありますが、主に使っているRedmineのバージョンが上がったので、やっとREST APIが使える環境になりました。
#個人的にREST APIを使ったツールを作ってみる活動はしていたのですが、メインの環境では対応していなかったのもあって、モチベーションが続いてませんでした…。
できれば周りにも利用したり、応用したり、良いアイディアを出してもらいたいなあと思ったので、まずはどんな感じで使えるか、というサンプルを作ることにしました。
* * *
チケットの参照はWebから行うことの方が多いので、やっぱりチケットを作るサンプルから。
参考にさせていただいたREST APIについての記述は、Redmine本家と、r-labsのサイトの日本語訳になります。(ありがとうございます!)
- http://www.redmine.org/projects/redmine/wiki/Rest_api (Redmine.orgのWiki)
- http://www.r-labs.org/projects/r-labs/wiki/Redmine_REST_API (r-labsの日本語訳)
動作確認は、daipresentsさんの記事を参考にさせていただきました。こちらもありがとうございます!
daipresentsさんの記事では、RESTを試すクライアントとして、RESTClient を使われていました。こちらは使ったことが無かったので、ダウンロードしてみたところ、なるほど、これも便利でした。
わたしの場合は、いつもはFiddler2 を使っているので、参考までにFiddler2でのスクリーンショットを載せておきます。
1枚目がPOSTメソッドでリクエストを生成するところ。2枚目がレスポンスの画面です。
うまくチケットが出来ると、Status Code 201が返ってきます。また、レスポンス本文にも、チケットのIDを含めたXMLが返ってきます。
動作確認ができたので、じゃあ、チケットを作成するプログラムを…と思ったのですが、RubyやPerl, Pythonといったライブラリの組み込み状況は、サーバの環境によってまちまち。Perlしか入れていないところもあります。
現在のチケット作成のAPIは、添付ファイル付きでの作成が出来ず、結局のところXMLをPOSTすることになるので、シンプル?に、curlとShellを使ったスクリプトを作ることにしました。
チケット作成がメインで、Statusの指定やカテゴリの指定は重視していなかったので、オプション設定は行っていません。Shellを参考にカスタマイズすれば、Updateやカテゴリ設定も可能かと思います。(実はまだUpdateは試してないので、できたらまた追記します)
使い方は、このような感じです。
$redmine_postIssue.sh –u REDMINEのURL –k APIキー \
–p プロジェクトID(番号じゃなく識別子) \
-t トラッカーID(番号) –s タイトル \
-d チケット本文
チケット作成時に、作成者を別途指定できたり、担当者も指定できます。ただ、やっぱり担当者とかトラッカーとかのIDをきちんと知っていないといけません。
APIを使ってリッチなクライアントを作るって、凄いなあと思っています(^^;
大変すばらしいツールで当方のCIに利用させていただいております。
返信削除しかしながら、残念なことに、debian6,debian7の環境ではチケット本文に改行コードを混ぜることができませんでした。
この原因はcurlコマンドで-dオプションを使用しているからだと思います。
このオプションの場合、改行文字をとりのぞいてしまいます。
すくなくとも、私の環境では--data-binaryオプションに置き換えることで期待通り動作しました。
以上報告まで。
板垣さま、初めまして、こんにちは!
削除コメントありがとうございます!
debianでは検証していなかったのですが、上記ツールを実行する (curlを実行する)サーバがdebianということですね。
スクリプトの注意書きにも、作者の想定環境を明記しておきますね。
また、問題がないようなら、--data-binaryオプションへの切り替えを実施してみます。
ありがとうございました!