はじめに
jiraと言えば、知る人ぞ知るATLASSIAN社の課題管理ツールですよね。
https://ja.atlassian.com/software/jira
弊社では課題管理をjiraで実施しており、ITのプロマネをやっていると常にBoardやBacklogとにらめっこしながら、
進捗状況を確認したり、タスクの過不足をチェックしたりしています。
ひょんなことから、jiraチケットが簡単に作れたら今までとは異なる粒度で管理が可能になるかな、と思い、
API等を調べたところ色々あることを発見。
自分に馴染みがあるPythonで実装してみました。
実際には100個近くの親チケットを作成し、それに子チケットを紐付けて作成する、というという作業を、
データ準備の部分だけ手作業で実施しています。
(エクセルでデータ整理してリストや辞書形式にし、pythonに持ってきている)
子チケットを2パターン作成したのですが、それでも300個以上あり、手作業だと膨大な時間がかかります。
(途中で心が先に折れると思います・・・)
やってみたこと
- チケット自動作成
- ウォッチャー追加
- 他の課題との紐付け
ログイン
まずは、JIRAを操作するためにログイン。
from jira import JIRA
from jira.exceptions import JIRAError
options = {'server': 'https://xxxxx.com',
'verify': False}
usr = 'YOUR_ACCOUNT'
pas = 'YOUR_PASSWORD'
try:
jira = JIRA(options=options, basic_auth=(usr, pas))
except JIRAError as e:
if e.status_code == 401:
print ("Login to JIRA failed.")
print ("Login!!")
チケット作成など
そしてチケット作成。Summaryなどをパラメータとした関数にして、実行
epicLink1 = 'ZZZZ-490'
sprint = 7870 # sprintは数字形式
labels=['label1', 'label2']
new_issue = jira.create_issue(
project = 'ZZZZ',
summary = 'Summary',
description = 'Description',
issuetype = {'name': 'Task'}, # 他にTicketなど
customfield_10001 = sprint, # Sprintはカスタムフィールド
customfield_10002 = epicLink1, # epic linkはカスタムフィールド
labels = labels
)
print ('Done!', new_issue, 'was created!')
ウォッチャー紐付けと関連チケット紐付け。
実際はチケット作成と直列で実施。
# Link
new_issue = jira.issue('ZZZZ-0001')
parent_issue = jira.issue('ZZZZ-0002')
jira.create_issue_link('Tests',new_issue, parent_issue) # Link typeはblocksなど色々
# Add watcher
jira.add_watcher(new_issue, 'taro.tanaka')
jira.add_watcher(new_issue, 'jiro.suzuki')
終わりに
チケット大量生産が簡単にできるようになりました。あとはマネージするだけ〜。
ところでパフォーマンスがひたすら悪かったです。1件作成してwatcherつけてLinkし終わるまでに、
1分弱かかっていました。
もしかしたら、弊社の場合JIRAの管轄がUS本社で行われていて、サーバー等も日本から離れているから、
なのかもしれない。。。
カスタムフィールドもいじれたので、基本的にはなんでもいじれるんじゃないかなと思います。
ではまた。