Kompira

Menu Menu

Enterprise Technical information

外部との連携 Redmineへ新規チケットを登録する

チケット管理システムにチケットが登録された場合にKompiraから何らかの処理を行わせたり、逆にKompiraの処理結果よりチケットを新規登録、内容更新を行いたい場合があると思います。今回の記事では代表的なチケット管理システム”Redmine”に新規チケットを登録する方法をご紹介します。
(既に動いているRedmineサーバーがあり、管理者権限で作業できることを想定しています。)

※本記事の内容の動作確認にはRedmine3.2.4を使用しています。

 


動作確認環境

ソフトウェア バージョン
Kompira 1.4.10.post10
LinuxOS CentOS6.10

または

ソフトウェア バージョン
Kompira 1.5.5.post7
LinuxOS CentOS7.8.2003

 


 

Redmineプロジェクトの作成

まずは新規のプロジェクトを作成しました。名称を”kompira-project”としています。

 

redmineのプロジェクト

 

RedmineのAPI設定

KompiraからはRedmineのREST APIを呼び出してチケット操作を行います。この際には以前の記事で紹介したKompiraの組み込み関数urlopen()を使用します。またAPI呼び出しの結果はJSON形式で応答がありますので、パースする必要が出てきます。

まずはRedmineのREST APIを有効にしていきます。
[管理] -> [設定] -> [API]
この画面で「RESTによるWebサービスを有効にする」を選択して「保存」をクリックします。

 

API有効化

 

次にAPIアクセスキーを取得します。
[個人設定] -> [APIアクセスキー] -> [表示]

 

APIアクセスキー

※表示されない場合には[リセット]をクリックしてみてください。
表示されたキーをテキストエディタにコピーしておきます。

 

新規チケットの投稿

RedmineのAPIは次のページで調べる事が出来ます。
http://www.redmine.org/projects/redmine/wiki/Rest_api
http://www.r-labs.org/projects/r-labs/wiki/Redmine_REST_API (日本語)

これによると、チケット登録のAPIは
http://(redmineのURL)/issues.json
であることが分かります。(.json は応答のフォーマットを表します。)

このAPIをurlopen()を使って呼び出すジョブフローを作成します。

 

|redmine_url = "http://redmine.local/issues.json"|
|access_key = "your_access_key"|
|project_id = 1|
|ticket_title = 'test ticket'|

print("チケット登録") ->
[dat = {issue = {subject = ticket_title, project_id = project_id },
        key = access_key}] ->
urlopen(url=redmine_url, data = dat, timeout=20, encode='json', http_method='POST') ->
[result = json_parse($RESULT.body)]->
print ('チケット登録結果\n', result['issue'] )

 

ここではパラメータ”redmine_url”は、RedmineサーバーのURLに”/issues.json”をつけます。
“access_key”はRedmineの管理画面からコピーしたAPIアクセスキーの文字列を指定します。
“project_id”は作成したプロジェクトのIDを指定します。
“ticket_title”は、これから作成するチケットの表題となる任意の文字列です。

プロジェクトのIDを確認するため、http://(redmine)/projects.xml にアクセスすると、プロジェクトの一覧が表示されます。
作成したプロジェクトに該当するidを確認してください。

 

1
kompira-project
kompira-project

1
<is_public>true
<created_on>2016-11-30T01:21:28Z
<updated_on>2016-11-30T05:19:31Z

2
testproject
testproject

1
<is_public>true
<created_on>2016-11-30T05:21:25Z
<updated_on>2016-11-30T05:21:25Z

 

上記の場合、”kompira-project”は1、”testproject”は2となります。

さて、このジョブフローを実行するとRedmineに新規チケットが作成されます。

 

チケット登録完了

 

Redmineの画面では次の様になります。

 

Redmineの新規チケット

 

このように新しいチケットが登録されているのが分かるかと思います。

Kompiraのコンソールには、次の様なJSON形式のAPIの応答が表示されます。(表示の都合で改行を入れていますが、実際には1行で表示されます。)

 

{
  'id': 1, 
  'project': {'id': 1, 'name': 'kompira-project'}, 
  'tracker': {'id': 1, 'name': 'バグ'}, 
  'status': {'id': 1, 'name': '新規'}, 
  'priority': {'id': 2, 'name': '通常'}, 
  'author': {'id': 1, 'name': 'Redmine Admin'}, 
  'subject': 'test ticket', 
  'start_date': '2016-11-29', 
  'done_ratio': 0, 
  'created_on': '2016-11-30T05:02:48Z', 
  'updated_on': '2016-11-30T05:02:48Z'
}

 

JSON形式のままでは読みにくいため、少し整形して表示する場合には、ジョブフロー最後の

print(‘チケット登録結果\n’, result[‘issue’] )

の部分を、例えば次の様にして必要な項目を抜粋して表示します。(ID, ステータス、優先度を表示)

 

print('ID       : ',result.issue.id) ->
print('ステータス: ',result.issue.status.name) ->
print('優先度    : ',result.issue.priority.name)

 

上記で見てきた通り、Redmine側のREST APIをKompiraからurlopen()で呼び出す事により、新規のチケットを発行する事が出来ます。今回作成したチケットはタイトルを指定しただけの簡単なものですが、ジョブフロー中の”dat”で指定するJSON形式のリクエストの中身を追加する事により、priority_id(優先度)、description(説明)、category_id(カテゴリ)などを直接指定することも可能です。(詳しくは先に紹介したAPI仕様をご覧ください。)

またチケットの新規作成以外にも、チケットの更新・削除、一覧表示なども可能です。各APIごとに定められたURLと、HTTPメソッドの指定を適切に行うことで実行することができます。(こちらも詳細についてはAPI仕様をご覧ください。)

ここではRedmineへのチケット登録の例をみてきましたが、ジョブフローに組み込む事で、Kompiraを利用した作業結果や監視結果などによりチケット発行を自動で行う事ができます。

スタートガイド

Kompiraジョブフローの基礎

ジョブフローの簡単な例

Kompiraの機能

外部との連携