1. Python的jira库概述

Jira是Atlassian公司出品的一款事务管理软件。该软件会提供网页界面给用户。在工作中,有时需要批量的处理操作,在网页上无法进行。这个时候,使用Python来操作Jira是一个很好的选择。
下面link是一个非常友好的python jira库,可按如下操作安装:
https://pypi.org/project/jira/

pip install jira

2. Python的jira库API介绍

2.1. JIRA对象

JIRA类的定义请见如下link:
https://github.com/pycontribs...

  1. 可通过如下方式来生成JIRA对象:

    form jira import JIRA
    jira = JIRA('http://jira.***.com/', auth=(username, password))
  2. 通过JIRA对象搜索
    搜索使用的API是search_issues(),其参数maxResults为-1表示返回所有issue对象。
    如果搜索的内容比较多,服务器可能会因此而断掉连接,需要分页搜索:

     def paging_search_jira_issues(self, search_str):
         all_issues = self.jira.search_issues(search_str, startAt=0, maxResults=50)
         start = 0
         while True:
             issues = self.jira.search_issues(search_str, startAt=start, maxResults=50)
             if(len(issues)==0):
                 break
             all_issues = all_issues + issues
         return all_issues
  3. 通过issue key获取issue对象:

    issue = jira.issue(issue_key)
  4. 转移issue给new assignee:

    jira.assign_issue(issue, new_assignee)
  5. 改变issue的状态:

    jira.transition_issue(issue, 'Accept')
    jira.transition_issue(issue, 'Deliver')
  6. 给issue添加comment:

    jira.add_comment(issue, 'Please handle it. Thanks.')
  7. 返回project列表:

    jira.projects()
  8. 获取groups以及获取一个group的成员:

    jira.groups()
    # 获取group的成员一般需要授权
    jira.group_members('System Team')

    2.2. Issue对象

    Issue类的定义请参考如下link:
    https://github.com/pycontribs...

  9. 修改issue的部分字段,比如customfield_1和customfield_2字段:

    issue.update({'customfield_1':{'value':'Yes'}, 'customfield_2':'Platform Default Support'})
  10. 获取issue key:

    issue.key
  11. 获取created time,该时间戳格式可转为iso format,方便后续处理:

    from datetime import datetime
    
    issue.fields.created
    # 2021-12-10T10:45:12.000+0800 -> 2021-12-10 10:45:12.000+08:00
    issue_created_isoformat = (issue.fields.created[0:-2] + ':' + issue.fields.created[-2:]).replace('T', ' ')
    dt = datetime.fromisoformat(issue_created_isoformat)
    dt.timestamp()
  12. issue.fields
    fields包含了issue的所有字段。在jira网站,打开一个issue,然后查看网页源代码,可以获取到这些字段field的名称。根据这些field的名称,通过dir()、type()等方式获取到其属性和类型,从属性中可以猜出哪些是需要的。

3. 参考文档

Python操作Jira
https://www.cnblogs.com/super...
Jira入门教程 敏捷开发管理(一)
https://www.jianshu.com/p/145...
Python Jira
https://jira.readthedocs.io/
Jira官网资料
https://support.atlassian.com...
而ALM没有python库可以操作:
How Automate Application Lifecycle Management using python
https://stackoverflow.com/que...
https://admhelp.microfocus.co...

03-05 16:28