使用python JIRA库检索JIRA sprint的开始日期和结束日期

时间:2017-08-22 12:50:10

标签: jira python-jira

有没有办法使用python JIRA库在JIRA中获取sprint的开始和结束日期?我可以使用jira.client.ResultList获得感兴趣的董事会中所有冲刺的jira.sprints(jira.boards()[<sequence number of the board of interest>].id)。该列表如下所示:

[<JIRA Sprint: name='LSD Sprint 1', id=1>,
...
<JIRA Sprint: name='LSD Sprint 14', id=14>]

我可以使用与issue.fields类似的内容访问每个sprint的开始日期和结束日期,并返回jira.resources.PropertyHolder,我可以从中查看其他数据吗?

3 个答案:

答案 0 :(得分:3)

为了进行测试,我使用了jirashellpython-jira 1.0.10),JIRA 6.3.11JIRA 7.2.3JIRA 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']

如您所见,该列表不包含startDateendDate属性。然而,sprint startDate and endDate properties via JIRA REST API的快速谷歌搜索表明API DOES支持这些属性。但事实证明python-jira使用旧版本的JIRA AGILE REST API。例如,当我运行jira.sprints(jira.boards()[0].id)[0].self时,我得到https://[JIRA_URL]/rest/greenhopper/1.0/sprint/[ID](而不是敏捷/ 1.0 ,如答案中提到的API支持startDate和endDate属性)。另外python-jira会抛出一条消息Old private GreenHopper API is used, all parameters will be ignored

因此,我认为由于它使用的旧版本的JIRA AGILE API,无法使用startDate获取endDatepython-jira

答案 1 :(得分:1)

使用python requests库找到我的问题的解决方法。这是它的链接: 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 - 键包含对象列表中感兴趣的板中包含的所有sprint,这些对象本身具有键'completeDate',{{1 }和'endDate'

在sprint实际关闭之前,

'startDate'显然可用,而'endDate'仅在sprint关闭时才可用,例如其状态从'completeDate'更改为active

我使用的例子:

closed

找到sprint的开始和结束日期后,可以进一步将它们用作python-jira查询中的变量,例如:

startDate = jiraResponseJSON['values'][<SPRINT NUMBER>]['startDate'][:10] endDate = jiraResponseJSON['values'][<SPRINT NUMBER>]['completeDate'][:10]

答案 2 :(得分:0)

使用sprint_info(board_id,sprint_id)

这将返回冲刺信息的字典。我希望将日期追溯为日期格式,因此我有一些代码可以处理下面的转换并处理返回的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']