概要
Python JIRA で、課題を作成してみます。
以下と同じような内容で課題を作成するのがゴールです。
(JIRA をサブスクライブした時に出来る、デモプロジェクト内のサンプル課題に期日などを設定したもの)
プログラム経由で既存の課題の入力値を参照し、同じような課題を作成していきます。
JIRA の認証情報設定
以下のように JIRA の認証情報を設定します。
from jira import JIRA jira = JIRA( server='[Atlassian の URL]', basic_auth=('[ユーザー名]', '[API Key]') )
Atlassian の URL は https://xxxx.atlassian.net/
のようなものです。
既存の課題の情報を取得、表示
以下のように既存の課題(DESK-9)の入力値などを取得、表示できます。
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', } |
課題を作成
先ほど取得した情報を元に、以下のように課題作成できます。
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月入社。弊社はインフラ屋ですが、アプリも作ってみたいです。