Re:dashとJiraを連携して月間リリース回数をグラフ化する

ZAICOでは、Android・iOS・Rubyエンジニアを絶賛募集中です! 詳しくは、採用ページをご覧ください。

好きな場所で働こう

今回実施すること

うちのチームでは開発タスクの管理をJira Cloudで行っています。私は月間のリリース回数を報告するため、毎月手作業でチケットの状況を集計してました。面倒なので、今回Re:dashでJiraのチケット情報を集計できるようにしました。
今回実施する内容は、過去一年のJiraのチケットを取得し、リリースバージョンとリリース日を集計し、月毎のリリースバージョンの数を集計してリリース回数として表示することです。

環境

うちで使っているRe:dashはAWSのEC2上にインストールして稼働しています。バージョンは8.0.0+b32245(a16f551e)を使っています。Re:dashの公式に掲載されているAWSのイメージを使っています。

Jira連携

まずはRe:dashでJiraと連携します。
Re:dashの設定からData sourcesタブを選択し、+ New Data Sourceをクリックします。データソースの中からJIRA(JQL)を選択します。
次に設定を入力してください。注意しなければならないのは「Password」の部分です。ここにはJiraのAPI Tokenを入れてください。Re:dashのバージョン8ではまだこの項目は「Password」と書いてありますが、id/passwordでは連携はできず、API tokenによる連携が必要です。(バージョン9では「API token」とちゃんと項目名が変更になっているようです。)
Jiraの方でAPI tokenを取得する方法はこちらにあります。

JQLをRe:dashから実行

連携ができたらRe:dashからJQLを実行する準備が整いました。
今回は「過去1年の完了したチケットを取得し、リリースバージョンとリリース日付を表示する」というクエリを下記のように作成しました。

{
    "fields": "fixVersions",
    "jql": "statusCategory = Done AND created > startOfDay(-12M)",
    "fieldMapping": {
        "fixVersions.name": "release_version",
        "fixVersions.releaseDate": "release_date"
}

注意しなければならないのは、fixVersionsなどは複数のプロパティを持っています。そのためfieldMappingを指定しないと何も表示されません。fieldsでfixVersions.nameなどとしても表示されません。どのようなプロパティを持つのか、いまいちかっちりとした資料を見つけられませんでしたが、こちらのスマートバリューの記事が手がかりになりました。

Query resultを使って再集計

上記のクエリで過去1年のリリースバージョンとリリース日を取得できましたが、この結果を再集計して月ごとのリリース回数を算出する必要があります。そこでRe:dashで他のクエリの結果を元にして再集計する機能「Query Result」を使います。

Query resultを使うためにはデータソースにQuery resultを追加する必要があります。
Re:dashの設定からData sourcesタブを選択し、+ New Data Sourceをクリックします。データソースの中からQuery resultを選択します。設定する項目は特にありません。

新たにクエリを作成し、データソースは今作成したQuery resultを選択します。今回は先程のJiraに対するクエリの取得結果を元に再集計します。「リリースバージョン・リリース日でグルーピングして(リリースバージョンごとに一行に集約して)、さらにその結果を月毎に行数をカウントする。」というSQLが下記になります。

SELECT strftime('%Y年%m月',release_date) 月, count(*) リリース回数
FROM
  (SELECT release_date
   FROM QUERY_118
   WHERE release_date <> ''
     AND release_date NOT LIKE '%,%'
   GROUP BY release_version,
            release_date
   ORDER BY release_date)
GROUP BY 月

上記のQUERY_118は前述のJiraに対するクエリの実行結果になります。QUERY_***の数字部分は先程のクエリの(Re:dash上)のURL(host/queries/***の***部分)から確認できます。

集計結果

結果をグラフに表示したのが下記です。

無事、月次のリリース回数を集計することができました!

今回はJiraとの連携を書きましたがGoogle BigQueryやGoogle SpreadSheetとの連携などもやりましたのでその辺りもそのうち書きたいと思います。
今回は以上になります。

参考

Re:dash User guide | https://redash.io/help
Jira Manage API tokens for your Atlassian account | https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/
Jira スマート バリュー – 全般 | https://support.atlassian.com/ja/jira-software-cloud/docs/smart-values-general/

ZAICOでは、新しいテクノロジーの力でモノの状態・流れを把握する仕組みに一緒に取り組む仲間を募集しております。
詳しくは、採用ページをご覧ください。

好きな場所で働こう