皆さん
おはげようございます、こんにちわ、こんばんわ。
Backlog 利用していますか。
私も漏れなく公私共に Backlog を利用させて頂いております。
ところで
Backlog に API が提供されていることは何となくは存じ上げておりましたが、最近になって Backlog の API を利用して業務改善出来るんぢゃないかなーと思いはじめた部分があるので試しに Backlog API を触ってみました。
ということで、Backlog API を叩く CLI ツールを作ってみた
ので課題を作ったり、コメント付けたり、ステータスを変更したりしてみたいと思います。
あくまでもサンプルとして作ったものなのでツッコミどころ満載です。
backlog-issue の準備
Docker があると嬉しい
mruby-cli は mruby でコマンドラインツールが作れる優れもののツールですが、バイナリを生成するにあたり docker-compose を利用しますので、作業環境には Docker エンジンが動いていると嬉しいと思います。
また、mruby ですので、Linux や Windows 版のバイナリについても生成される点も嬉しいですよね。(実際に試せてはいませんのでご容赦下さいmm)
バイナリの生成
git clone https://github.com/inokappa/backlog-issue.git
cd backlog-issue
docker-compose run compile
以上です。
暫く待つとバイナリが生成されますので確認しましょう。
今回試す環境は MacOS X ですので、カレントディレクトリの以下のディレクトリにバイナリが作成されます。
bash-3.2$ ls -l mruby/build/x86_64-apple-darwin14/bin
total 2328
-rwxr-xr-x 1 kawahara staff 1190464 Nov 20 08:31 backlog-issue
API キー
API キーを事前にダッシュボードから払い出しておきましょう。そして、以下のように環境変数にセットします。
export BACKLOG_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ヘルプ
ヘルプを見てみましょう。
bash-3.2$ cd mruby/build/x86_64-apple-darwin14/bin
bash-3.2$ ./backlog-issue --help
Please set Backlog Space Name.
上記の通り、Backlog のスペース名が必要になります。今回は hage-pika
というスペース名の Backlog を操作する体でいきます。
bash-3.2$ ./backlog-issue --help --space hage-pika
Usage: backlog-issue [options]
-h, --help Display help.
-v, --version Display version.
--space Space_Name Set Backlog Space Name(Required).
--project Project_Key Set Project Key(Project ID = ).
--issue Issue_Title Set Issue Title.
--type Issue_Type Set Issue Type(Issue Type ID = ).
--status Status_ID Set Issue Status ID( 未対応 = 1, 処理中 = 2, 処理済み = 3, 完了 = 4,).
--priority Priority_ID Set Issue Priority ID( 高 = 2, 中 = 3, 低 = 4,).
--desc Description Set Issue Description.
--key Issue_Key_Name Set Issue Key Name.
--comment Comment Set Comment.
さらに、対象のプロジェクト名を --project
で指定すると以下のように出力されます。今回は FAM
というプロジェクトで操作する体でいきます。
bash-3.2$ ./backlog-issue --help --space hage-pecha --project FAM
Usage: backlog-issue [options]
-h, --help Display help.
-v, --version Display version.
--space Space_Name Set Backlog Space Name(Required).
--project Project_Key Set Project Key(Project ID = xxxxx).
--issue Issue_Title Set Issue Title.
--type Issue_Type Set Issue Type(Issue Type ID = タスク = 1xxxx1, バグ = 1xxxx2, 要望 = 1xxxx3, その他 = 1xxxx2,).
--status Status_ID Set Issue Status ID( 未対応 = 1, 処理中 = 2, 処理済み = 3, 完了 = 4,).
--priority Priority_ID Set Issue Priority ID( 高 = 2, 中 = 3, 低 = 4,).
--desc Description Set Issue Description.
--key Issue_Key_Name Set Issue Key Name.
--comment Comment Set Comment.
上記のようにプロジェクトの ID と Issue Type
(種別 ID) についてはプロジェクト単位で生成される為、対象となるプロジェクト毎の値が返ってくるようになります。
backlog-issue を操作する
課題を起票する
せっかくなので backlog-issue コマンドのバグ報告をしてみましょう。
bash-3.2$ ./backlog-issue --space hage-pika \
> --project FAM \
> --title "これはバグだろうこんちきしょう" \
> --type 1xxxx2 \
> --desc "これは mruby のコマンドラインツールからの投稿です" \
> --priority 2
以下のようなレスポンスが返ってきます。レスポンス内容は Backlog API が返す値そのままをダンプしています。必要に応じて jq
コマンド等で整形しましょう。
{"id":xxxxxx,"projectId":xxxxx,"issueKey":"FAM-9","keyId":9,"issueType":{"id":1xxxx2,"projectId":xxxxxxx,"name":"バグ","color":"#990000","displayOrder":1},"summary":"これはバグだろうこんちきしょう","description":"これは mruby のコマンドラ インツールからの投稿です","resolution":null,"priority":{"id":2,"name":"高"},"status":{"id":1,"name":"未対応"},"assignee":null,"category":[],"versions":[],"milestone":[],"startDate":null,"dueDate":null,"estimatedHours":null,"actualHours":null,"parentIssueId":null,"createdUser":{"id":xxxxxxx,"userId":"backlog-api","name":"backlog-api-demo","roleType":1,"lang":null,"mailAddress":"xxx@xxxx.com","nulabAccount":null},"created":"2016-11-19T23:54:55Z","updatedUser":{"id":xxxxxxx,"userId":"backlog-api-demo","name":"backlog-api-demo","roleType":1,"lang":null,"mailAddress":"xxx@xxxx.com","nulabAccount":null},"updated":"2016-11-19T23:54:55Z","customFields":[],"attachments":[],"sharedFiles":[],"stars":[]}
issueKey
を確認しておきましょう。
本当に課題が起票されているか、念の為にい確認しておきましょう。
課題にコメントを付ける
心をこめてコメントを付けてみましょう。
bash-3.2$ ./backlog-issue --space hage-pika \
> --key FAM-9 \
> --comment "すいません、すいません、すいません。すぐ直します"
先ほど控えておいた issueKey
を --key
に指定して --comment
にコメントを書きます。
以下のようなレスポンスが返ってきます。
{"id":xxxxxxxx,"content":"すいません、すいません、すいません。すぐ直します","changeLog":[],"createdUser":{"id":xxxxx,"userId":"backlog-api-demo","name":"backlog-api","roleType":1,"lang":null,"mailAddress":"xxxx@xxxxx.com","nulabAccount":null},"created":"2016-11-20T00:04:34Z","updated":"2016-11-20T00:04:34Z","stars":[],"notifications":[]}
本当にコメントがついているか、念の為に確認しておきましょう。
課題のステータスを変える
早速、改修作業に着手しましょう。ということで、コメントを付けて課題のステータスを「処理中」に変更してみたいと思います。
bash-3.2$ ./backlog-issue --space hage-pika \
> --key FAM-9 \
> --status 2 \
> --comment "改修作業を開始しました"
以下のようなレスポンスが返ってきます。
{"id":xxxxxxxx,"content":"改修作業を開始しました","changeLog":[],"createdUser":{"id":184492,"userId":"backlog-api","name":"backlog-api-demo","roleType":1,"lang":null,"mailAddress":"xxx@xxxx.com","nulabAccount":null},"created":"2016-11-20T00:11:20Z","updated":"2016-11-20T00:11:20Z","stars":[],"notifications":[]}
{"id":xxxxxx,"projectId":xxxxxx,"issueKey":"FAM-9","keyId":9,"issueType":{"id":1xxxx2,"projectId":xxxxx,"name":"バグ","color":"#990000","displayOrder":1},"summary":"これはバグだろうこんちきしょう","description":"これは mruby のコマンドラ インツールからの投稿です","resolution":null,"priority":{"id":2,"name":"高"},"status":{"id":2,"name":"処理中"},"assignee":null,"category":[],"versions":[],"milestone":[],"startDate":null,"dueDate":null,"estimatedHours":null,"actualHours":null,"parentIssueId":null,"createdUser":{"id":xxxxxx,"userId":"backlog-api-demo","name":"backlog-api-demo","roleType":1,"lang":null,"mailAddress":"xxx@xxxx.com","nulabAccount":null},"created":"2016-11-19T23:54:56Z","updatedUser":{"id":xxxxxx,"userId":"backlog-api","name":"backlog-api-demo","roleType":1,"lang":null,"mailAddress":"xxx@xxxx.com","nulabAccount":null},"updated":"2016-11-20T00:11:21Z","customFields":[],"attachments":[],"sharedFiles":[],"stars":[]}
本当にコメントがついているか、念の為に確認しておきましょう。
課題を閉じる
頑張った改修の結果、改修は終了ということで課題を完了としたいと思います。
bash-3.2$ ./backlog-issue --space hage-pika \
> --key FAM-9 \
> --status 4 \
> --comment "改修作業が完了しましたけん"
本当に完了しているか、念の為に確認しておきましょう。
良かった、良かった。
ということで
駆け足で Backlog API をラップした backlog-issue というコマンドの使い方を紹介しつつ、Backlog API を触ってみましたが、とても簡単に Backlog 課題を操作出来たと思います。
もう少し、自分の中でやりたいことを整理した上で、Backlog API を使った心のこもった課題運用について検討していきたいと考えています。
ありがとうございました。