3
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonでjira操作してみた

Last updated at Posted at 2019-03-12

はじめに

jiraと言えば、知る人ぞ知るATLASSIAN社の課題管理ツールですよね。
https://ja.atlassian.com/software/jira

弊社では課題管理をjiraで実施しており、ITのプロマネをやっていると常にBoardやBacklogとにらめっこしながら、
進捗状況を確認したり、タスクの過不足をチェックしたりしています。

ひょんなことから、jiraチケットが簡単に作れたら今までとは異なる粒度で管理が可能になるかな、と思い、
API等を調べたところ色々あることを発見。
自分に馴染みがあるPythonで実装してみました。

実際には100個近くの親チケットを作成し、それに子チケットを紐付けて作成する、というという作業を、
データ準備の部分だけ手作業で実施しています。
(エクセルでデータ整理してリストや辞書形式にし、pythonに持ってきている)

子チケットを2パターン作成したのですが、それでも300個以上あり、手作業だと膨大な時間がかかります。
(途中で心が先に折れると思います・・・)

やってみたこと

  • チケット自動作成
  • ウォッチャー追加
  • 他の課題との紐付け

ログイン

まずは、JIRAを操作するためにログイン。

login
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などをパラメータとした関数にして、実行

create_ticket
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/watcher
# 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本社で行われていて、サーバー等も日本から離れているから、
なのかもしれない。。。

カスタムフィールドもいじれたので、基本的にはなんでもいじれるんじゃないかなと思います。
ではまた。

3
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?