概要
Python JIRA で、課題を作成してみます。
以下と同じような内容で課題を作成するのがゴールです。
(JIRA をサブスクライブした時に出来る、デモプロジェクト内のサンプル課題に期日などを設定したもの)

プログラム経由で既存の課題の入力値を参照し、同じような課題を作成していきます。
JIRA の認証情報設定
以下のように JIRA の認証情報を設定します。
1 2 3 4 5 6 | from jira import JIRA jira = JIRA( server = '[Atlassian の URL]' , basic_auth = ( '[ユーザー名]' , '[API Key]' ) ) |
Atlassian の URL は https://xxxx.atlassian.net/
のようなものです。
既存の課題の情報を取得、表示
以下のように既存の課題(DESK-9)の入力値などを取得、表示できます。
1 2 3 4 5 | def print_issue() - > None : issue = jira.issue( 'DESK-9' ) pprint(issue.raw) print_issue() |
実際に表示したものが以下です。(情報量が多いため、かなり削っています)
「リクエストタイプ」を設定するために customfield_10010
を指定する必要があるなど、初見では解読になかなか時間がかかりそうです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
{ 'fields': { 'project': {'id': '10001', 'key': 'DESK', 'name': 'デモ サービス プロジェクト', 'projectTypeKey': 'service_desk', 'simplified': False}, 'summary': '優先度の高いリクエスト', 'description': 'リクエストの優先度を確認してすばやく問題を特定し、*サービスレベル合意 (SLA)* ' 'issuetype': {'avatarId': 10551, 'description': 'An IT problem or question.', 'id': '10004', 'name': 'IT Help', 'subtask': False}, 'priority': {'id': '1', 'name': 'Highest'}, 'duedate': '2022-12-20', 'customfield_10010': {'requestType': {'groupIds': ['1'], 'helpText': '', 'id': '2', 'issueTypeId': '10004', 'name': 'Computer support', 'portalId': '1', 'serviceDeskId': '1'}}, 'components': [{'description': 'Issues related to Jira. Created by ' 'Jira Service Management.', 'id': '10000', 'name': 'Jira'}], 'labels': ['demo-desk'], 'id': '10008', 'key': 'DESK-9', } |
課題を作成
先ほど取得した情報を元に、以下のように課題作成できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | def register_issue() - > None : issue_content = { 'project' : { 'key' : 'DESK' }, 'summary' : '優先度の高いリクエスト (コピー)' , 'description' : 'n' .join([ 'リクエストの優先度を確認してすばやく問題を特定し、*サービスレベル合意 (SLA)* の目標をより厳しく設定しましょう。リクエストを作成する際、顧客が優先度を設定することも、顧客には表示せずチームで決定することも可能です。' , '', 'h3. 試してみる' , '', '自分を担当者に設定し、*最初のレスポンスまでの時間* SLA がカウントダウンするのを停止するコメントを追加します。リクエストを解決してすべての SLA を完全に停止します。' , ]), 'issuetype' : { 'name' : 'IT Help' }, 'priority' : { 'name' : 'Highest' }, 'duedate' : '2022-12-20' , 'customfield_10010' : '2' , 'components' : [ { 'name' : 'Jira' } ], 'labels' : [ 'demo-desk' ] } issue = jira.create_issue(fields = issue_content) pprint(issue.key) register_issue() |
実際に作成された課題が以下です。

create_issue()
の返り値は Issue と呼ばれるもので、
例えば Issue.key
で課題のID(DESK-12 など)を取得できます。
まとめ
Python JIRA で課題を作成する方法について説明しました。
使い始めは課題を作成する時のパラメータの型などを調査するのが中々大変でした。
string なのか list なのか dict なのか、name で指定するのか id で指定するのか…など。
同じようなことをしようとしている方の助けになれれば幸いです。
投稿者プロフィール
- 2015年8月入社。弊社はインフラ屋ですが、アプリも作ってみたいです。