使用 python JIRA 库检索 JIRA 冲刺的开始日期和结束日期
Retrieve start date and end date of a JIRA sprint using the python JIRA library
有没有办法使用 python JIRA 库在 JIRA 中获取冲刺的开始和结束日期?我可以使用 jira.sprints(jira.boards()[<sequence number of the board of interest>].id)
获得一个 jira.client.ResultList
,其中包含感兴趣的委员会中的所有冲刺。该列表如下所示:
[<JIRA Sprint: name='LSD Sprint 1', id=1>,
...
<JIRA Sprint: name='LSD Sprint 14', id=14>]
我可以使用类似于 issue.fields
的东西以某种方式访问每个冲刺的开始和结束日期吗 returns 我 jira.resources.PropertyHolder
我可以从中访问其他数据?
为了测试,我使用了 jirashell
(python-jira 1.0.10
)、JIRA 6.3.11
、JIRA 7.2.3
、JIRA AGILE REST API v1.0
。我 运行 遵循 jirashell
中的代码:
dir(jira.sprints(jira.boards()[0].id)[0])
打印sprint
对象的所有方法和属性:
['AGILE_BASE_REST_PATH',
'AGILE_BASE_URL',
'AGILE_EXPERIMENTAL_REST_PATH',
'GREENHOPPER_REST_PATH',
'JIRA_BASE_URL',
'_READABLE_IDS',
'__class__',
'__delattr__',
'__dict__',
'__doc__',
'__format__',
'__getattr__',
'__getattribute__',
'__hash__',
'__init__',
'__module__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__weakref__',
'_base_url',
'_default_headers',
'_get_url',
'_load',
'_options',
'_parse_raw',
'_resource',
'_session',
'delete',
'find',
'id',
'linkedPagesCount',
'name',
'raw',
'self',
'sequence',
'state',
'update']
如您所见,该列表不包含 startDate
或 endDate
属性。尽管如此,对 sprint startDate and endDate properties via JIRA REST API 的快速谷歌搜索显示 API 确实支持此类属性。但事实证明 python-jira
使用旧版本的 JIRA AGILE REST API。例如,当我 运行 jira.sprints(jira.boards()[0].id)[0].self
时,我得到 https://[JIRA_URL]/rest/greenhopper/1.0/sprint/[ID]
结果(不是 agile/1.0 如答案中所述其中 API 支持 startDate 和 endDate 属性)。 python-jira
也会抛出一条消息 Old private GreenHopper API is used, all parameters will be ignored
.
因此,我认为由于使用的是旧版本的 JIRA AGILE API,因此无法使用 python-jira
获得 startDate
和 endDate
。
使用 python requests
库找到了解决我的问题的方法。这是它的 link :
http://docs.python-requests.org/en/master/
我使用以下方法获取感兴趣的 sprint 的开始和结束日期:
import requests
jiraResponse = requests.get('https://<YOUR ATLASSIAN DOMAIN>.atlassian.net/rest/agile/1.0/board/<BOARD ID OF INTEREST>/sprint', auth=(<YOUR JIRA CREDENTIALS>))
jiraResponseJSON = jiraResponse.json()
jiraResponseJSON
然后是一个字典,其 values
-key 包含对象列表中感兴趣的板中包含的所有冲刺,它们本身具有键 'completeDate'
,'endDate'
, 和 'startDate'
.
'endDate'
显然在 sprint 实际关闭之前可用,而 'completeDate'
仅在 sprint 关闭时才可用,例如它的状态从 active
变为 closed
。
我使用的示例:
startDate = jiraResponseJSON['values'][<SPRINT NUMBER>]['startDate'][:10]
endDate = jiraResponseJSON['values'][<SPRINT NUMBER>]['completeDate'][:10]
找到冲刺的开始和结束日期后,可以进一步将它们用作 python-jira 查询中的变量,例如:
jira.search_issues('project=<YOUR PROJECT NAME> and issuetype=bug AND status changed to closed DURING ("' + startDate + '", "' + endDate + '")', maxResults=100)
使用sprint_info(board_id, sprint_id)
这将 return 冲刺信息的字典。我希望将日期返回为日期格式,因此我有一些代码可以处理下面的转换并处理 returned 的 None 值。花了很长时间才找到这个,所以我认为回复将是我在 Stack Overflow 上的第一个答案!
for board in boards:
jira_sprints = jira.sprints(board.board_id)
for jira_sprint in jira_sprints:
sprint_info = jira.sprint_info(board.board_id, jira_sprint.id)
board_id = board.board_id
board_name = board.board_name
name = sprint_info['name']
id = sprint_info['id']
if sprint_info['startDate'] != 'None':
date_from = datetime.datetime.strptime(sprint_info['startDate'], "%d/%b/%y %I:%M %p").date()
else:
date_from = None
if sprint_info['endDate'] != 'None':
date_to = datetime.datetime.strptime(sprint_info['endDate'], "%d/%b/%y %I:%M %p").date()
else:
date_to = None
state = sprint_info['state']
有没有办法使用 python JIRA 库在 JIRA 中获取冲刺的开始和结束日期?我可以使用 jira.sprints(jira.boards()[<sequence number of the board of interest>].id)
获得一个 jira.client.ResultList
,其中包含感兴趣的委员会中的所有冲刺。该列表如下所示:
[<JIRA Sprint: name='LSD Sprint 1', id=1>,
...
<JIRA Sprint: name='LSD Sprint 14', id=14>]
我可以使用类似于 issue.fields
的东西以某种方式访问每个冲刺的开始和结束日期吗 returns 我 jira.resources.PropertyHolder
我可以从中访问其他数据?
为了测试,我使用了 jirashell
(python-jira 1.0.10
)、JIRA 6.3.11
、JIRA 7.2.3
、JIRA AGILE REST API v1.0
。我 运行 遵循 jirashell
中的代码:
dir(jira.sprints(jira.boards()[0].id)[0])
打印sprint
对象的所有方法和属性:
['AGILE_BASE_REST_PATH',
'AGILE_BASE_URL',
'AGILE_EXPERIMENTAL_REST_PATH',
'GREENHOPPER_REST_PATH',
'JIRA_BASE_URL',
'_READABLE_IDS',
'__class__',
'__delattr__',
'__dict__',
'__doc__',
'__format__',
'__getattr__',
'__getattribute__',
'__hash__',
'__init__',
'__module__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__weakref__',
'_base_url',
'_default_headers',
'_get_url',
'_load',
'_options',
'_parse_raw',
'_resource',
'_session',
'delete',
'find',
'id',
'linkedPagesCount',
'name',
'raw',
'self',
'sequence',
'state',
'update']
如您所见,该列表不包含 startDate
或 endDate
属性。尽管如此,对 sprint startDate and endDate properties via JIRA REST API 的快速谷歌搜索显示 API 确实支持此类属性。但事实证明 python-jira
使用旧版本的 JIRA AGILE REST API。例如,当我 运行 jira.sprints(jira.boards()[0].id)[0].self
时,我得到 https://[JIRA_URL]/rest/greenhopper/1.0/sprint/[ID]
结果(不是 agile/1.0 如答案中所述其中 API 支持 startDate 和 endDate 属性)。 python-jira
也会抛出一条消息 Old private GreenHopper API is used, all parameters will be ignored
.
因此,我认为由于使用的是旧版本的 JIRA AGILE API,因此无法使用 python-jira
获得 startDate
和 endDate
。
使用 python requests
库找到了解决我的问题的方法。这是它的 link :
http://docs.python-requests.org/en/master/
我使用以下方法获取感兴趣的 sprint 的开始和结束日期:
import requests
jiraResponse = requests.get('https://<YOUR ATLASSIAN DOMAIN>.atlassian.net/rest/agile/1.0/board/<BOARD ID OF INTEREST>/sprint', auth=(<YOUR JIRA CREDENTIALS>))
jiraResponseJSON = jiraResponse.json()
jiraResponseJSON
然后是一个字典,其 values
-key 包含对象列表中感兴趣的板中包含的所有冲刺,它们本身具有键 'completeDate'
,'endDate'
, 和 'startDate'
.
'endDate'
显然在 sprint 实际关闭之前可用,而 'completeDate'
仅在 sprint 关闭时才可用,例如它的状态从 active
变为 closed
。
我使用的示例:
startDate = jiraResponseJSON['values'][<SPRINT NUMBER>]['startDate'][:10]
endDate = jiraResponseJSON['values'][<SPRINT NUMBER>]['completeDate'][:10]
找到冲刺的开始和结束日期后,可以进一步将它们用作 python-jira 查询中的变量,例如:
jira.search_issues('project=<YOUR PROJECT NAME> and issuetype=bug AND status changed to closed DURING ("' + startDate + '", "' + endDate + '")', maxResults=100)
使用sprint_info(board_id, sprint_id)
这将 return 冲刺信息的字典。我希望将日期返回为日期格式,因此我有一些代码可以处理下面的转换并处理 returned 的 None 值。花了很长时间才找到这个,所以我认为回复将是我在 Stack Overflow 上的第一个答案!
for board in boards:
jira_sprints = jira.sprints(board.board_id)
for jira_sprint in jira_sprints:
sprint_info = jira.sprint_info(board.board_id, jira_sprint.id)
board_id = board.board_id
board_name = board.board_name
name = sprint_info['name']
id = sprint_info['id']
if sprint_info['startDate'] != 'None':
date_from = datetime.datetime.strptime(sprint_info['startDate'], "%d/%b/%y %I:%M %p").date()
else:
date_from = None
if sprint_info['endDate'] != 'None':
date_to = datetime.datetime.strptime(sprint_info['endDate'], "%d/%b/%y %I:%M %p").date()
else:
date_to = None
state = sprint_info['state']